接着上面的文章,我们可以先生成一个静止的方体线框,基本的思路是:
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" xmlns:myCanvas3D="myCanvas3D.*" applicationComplete="init();">
<mx:Script>
<![CDATA[
import hjh3dcom.Object3d;
private function init():void{
this.addEventListener(Event.ENTER_FRAME,onenterframe);
}
private function make3dPoint(x3d:Number,y3d:Number,z3d:Number):Object3d{
var point3d=new Object3d();
return point3d;
}
private function make2dPoint(ob3d:Object3d,focalLength:Number):Object{
var point2d=new Object();
return point2d;
}
private function onenterframe(evt:Event):void{
}
]]>
</mx:Script>
<myCanvas3D:Canvas3D id="mycanvas" width="500" height="400" backgroundColor="0x000000"/>
</mx:Application>
初始化参数,增加一个时间的侦听器。
private function init():void{
this.addEventListener(Event.ENTER_FRAME,onenterframe);
}
生成三维的点的方法:
private function make3dPoint(x3d:Number,y3d:Number,z3d:Number):Object3d{
var point3d=new Object3d();
return point3d;
}
由三维的点的方法转换(或生成)二维的点的方法:
private function make2dPoint(ob3d:Object3d,focalLength:Number):Object{
var point2d=new Object();
return point2d;
}
在时间的运行中绘制物体:
private function onenterframe(evt:Event):void{
}
基本的构架是这样了,下面就靠我们把每个方式给实现了就可以了。
我们丰富完代码后:
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" xmlns:myCanvas3D="myCanvas3D.*" applicationComplete="init();">
<mx:Script>
<![CDATA[
import hjh3dcom.Object3d;
private var point2dArray:Array;
private var focalLength:Number=300;
private function init():void{
this.addEventListener(Event.ENTER_FRAME,onenterframe);
//通过方法来建立了三维空间的点阵(点的组合)
var point3dArray:Array=[make3dPoint(-20, -40, -20),
make3dPoint(20, -40, -20),
make3dPoint(20, -40, 20),
make3dPoint(-20, -40, 20),
make3dPoint(-20, 80, -20),
make3dPoint(20, 80, -20),
make3dPoint(20, 80, 20),
make3dPoint(-20, 80, 20)]
point2dArray=new Array();
for (var i=0; i<point3dArray.length; i++){
var point2d=make2dPoint(point3dArray[i],focalLength);
//trace(point2d);
point2dArray.push(point2d);
}
trace(point2dArray);
}
private function make3dPoint(x3d:Number,y3d:Number,z3d:Number):Object3d{
var point3d=new Object3d();
point3d.x3d=x3d;
point3d.y3d=y3d;
point3d.z3d=z3d;
return point3d;
}
private function make2dPoint(point3d:Object3d,focalLength:Number):Object{
var point2d=new Object();
var scaleRatio = focalLength/(focalLength + point3d.z3d);
point2d.x=point3d.x3d*scaleRatio+250;
point2d.y=-point3d.y3d*scaleRatio+200;
return point2d;
}
private function onenterframe(evt:Event):void{
mycanvas.canvas.graphics.clear(); // clear any previously drawn box
mycanvas.canvas.graphics.lineStyle(2,0xFF0000,100); // make the drawn lines to be red
mycanvas.canvas.graphics.moveTo(-100+250, 0+200);
mycanvas.canvas.graphics.lineTo(100+250, 0+200);
// top
mycanvas.canvas.graphics.moveTo(point2dArray[0].x, point2dArray[0].y);
mycanvas.canvas.graphics.lineTo(point2dArray[1].x, point2dArray[1].y);
mycanvas.canvas.graphics.lineTo(point2dArray[2].x, point2dArray[2].y);
mycanvas.canvas.graphics.lineTo(point2dArray[3].x, point2dArray[3].y);
mycanvas.canvas.graphics.lineTo(point2dArray[0].x, point2dArray[0].y);
// bottom
mycanvas.canvas.graphics.moveTo(point2dArray[4].x, point2dArray[4].y);
mycanvas.canvas.graphics.lineTo(point2dArray[5].x, point2dArray[5].y);
mycanvas.canvas.graphics.lineTo(point2dArray[6].x, point2dArray[6].y);
mycanvas.canvas.graphics.lineTo(point2dArray[7].x, point2dArray[7].y);
mycanvas.canvas.graphics.lineTo(point2dArray[4].x, point2dArray[4].y);
// connecting bottom and top
mycanvas.canvas.graphics.moveTo(point2dArray[0].x, point2dArray[0].y);
mycanvas.canvas.graphics.lineTo(point2dArray[4].x, point2dArray[4].y);
mycanvas.canvas.graphics.moveTo(point2dArray[1].x, point2dArray[1].y);
mycanvas.canvas.graphics.lineTo(point2dArray[5].x, point2dArray[5].y);
mycanvas.canvas.graphics.moveTo(point2dArray[2].x, point2dArray[2].y);
mycanvas.canvas.graphics.lineTo(point2dArray[6].x, point2dArray[6].y);
mycanvas.canvas.graphics.moveTo(point2dArray[3].x, point2dArray[3].y);
mycanvas.canvas.graphics.lineTo(point2dArray[7].x, point2dArray[7].y);
}
]]>
</mx:Script>
<myCanvas3D:Canvas3D id="mycanvas" width="500" height="400" backgroundColor="0x000000"/>
</mx:Application>
最后效果如图:
【http://www.newflash3d.com---flash3D先锋队:北京贝武易科技公司】
有疑问请联系我QQ:363596350
- 大小: 5 KB
分享到:
相关推荐
3dmax插件神器-003-线框图.mse
建模是创建3D形状的基础,可以使用各种方法,如多边形建模(使用顶点、边和面构建形状)、曲线建模(基于数学曲线定义形状)和扫描建模(从真实世界物体扫描得到3D数据)。 VTK在3D建模和可视化中的作用主要体现在...
3ds Max 插件教程 - 3DMAX 渲染线框动画 在本篇文章中,我们将详细介绍 3ds Max 插件教程,着重于 3DMAX 渲染线框动画的技术。首先,让我们了解什么是 3ds Max 和 3DMAX。 3ds Max 是 Autodesk 公司开发的一款三维...
Wires - Mobile 线框图套件AdobeXD源码下载设计素材UI设计
Wires - Web线框图套件AdobeXD源码下载设计素材UI设计
电子功用-基于线框电极进行电火花套料加工的方法是一种高效的金属切削工艺,尤其适用于精密模具制造和复杂形状零件的加工。电火花加工(Electrical Discharge Machining,简称EDM)是利用电流脉冲在工具电极与工件...
它不仅提供了现成的解决方案,还鼓励设计师们在此基础上进行创新,形成自己的独特设计。该资源库采用分类系统,支持通过标签或颜色进行筛选,使查找特定设计模式变得更为便捷。 **网址**:http://ui-patterns.com/ ...
总的来说,3DMAX的一键渲染线框图插件是一个实用的工具,结合了MaxScript的强大与3DMAX的灵活性,为用户提供了一种高效快捷的方式来生成线框图。无论是进行项目演示、设计讨论还是教学学习,它都是一种不可或缺的...
迈达斯GTX NX 岩土半月3D地铁车站抗震分析 CAD二维平面线框模型
获取食物() Kris、Koko、Kritika、Rodrigo、Zac '减少食物浪费的人' 数字线框: : 部署了?! (cheeeeeeers Kris!): ://getfoodeda.herokuapp.com/ // ------------------------------------------------ // -...
html-to-wireframe被创建为一种易于使用的工具,可以从本地或远程html文件生成线框,以进行类似于Facebook的操作,以便用户可以在加载整个页面之前查看应用程序的结构。 该工具基于: Wirify书签-> PhantomJS-> ...
在计算机图形学领域,立方体线框模型是一种基础的3D表示方法,它通过一系列直线段来描绘立方体的边框,通常用于教学和早期的3D渲染。透视投影则是模拟人眼观察真实世界的方式,使得远离观察者的物体显得更小,从而...
Flash Catalyst CS5.5 提供了一个“公用库”面板,包含基于Spark的Flex组件和专为线框设计的占位符组件,帮助设计师快速构建界面。此外,它可以与Photoshop和Illustrator进行资源的往返传输,允许在设计过程中随时...
如何在Linux上运行Balsamiq线框有关如何使用Wine和Lutris在Linux上运行Balsamiq线框的说明。前提条件一个主流Linux发行版(Ubuntu / Debian / Fedora / Mint),其中包含curl , wine和wine32 。 lutris -Lutris使...
- F3:切换线框/光滑+高亮显示模式 - F4:打开/关闭动画模式 - F5:打开/关闭几何体的边/顶点/面的显示模式 - F6:打开/关闭旋转视图模式 - F7:打开/关闭缩放视图模式 - F8:打开/关闭平移视图模式 在物体选择与...
《3D-DOCTOR:绿色建模工具在.NET开发中的应用》 3D-DOCTOR是一款备受瞩目的绿色建模工具,尤其对于那些在.NET开发环境中处理三维图形的程序员而言,它提供了一种高效且易用的解决方案。该工具以其绿色、轻量级的...
掌厅登陆之周末有礼-转盘抽奖-线框图-20141210.jpg
该项目是使用生成的。 :magnifying_glass_tilted_right: Nx是用于Monorepos的一组可扩展开发工具。 向您的工作区添加功能 Nx支持许多插件,这些插件添加了用于开发不同类型的应用程序和不同工具的功能。 这些功能...
- 原型设计和线框图工具 - 制图工具 - 应用程序框架工具 - 数据可视化工具 - 图形工具(SVG、Canvas、WebGL) - 前端数据存储工具 - HTTP/网络工具 - 代码编辑工具 - HTML/CSS/JavaScript工具 - 静态网页...
项目成本 ProjectCost 是一种工具,可帮助签约人员根据历史定价信息估算合同的每小时人工... Balsamiq——线框图工具 Adobe Fireworks -- 高保真模型 Flask -- Python 应用服务器 AngularJS -- Javascript 网络框架 Twi