A闪的 BLOG 技术与人文
这是我们第一个flare3D实例,我们通过将通过flare3D引擎来编写一个非常简单的效果。在这里实例中我们所使用到的软件包含Autodesk 3ds Max 2010和flash builder 4.5。当然,在使用之前我们先必须对flash builder4.5进行配置。关于如何启用stage3D的配置,请大家参考我的另外一篇文章。下面我们通过3D MAX软件来进行建模操作。对于我们这个简单的demo来说,不需要太复杂的模型,因为我们仅仅需要了解flare3D的运行机制就可以了。OK,下面我们来看一下这个3D模型的截图。
可以看到我们这个模型中仅仅有两个对象,一个立方形和一个圆环。我们对其中圆环的属性命名为myhuan,这就相当于flash软件中的实例名称。在3D MAX中我们也可以进行这样的设置。
在模型绘制好之后我们到处需要的f3d格式的模型文件,对于没有进行贴图操作的模型,flash会以最原始的颜色进行显示。对此我们在这篇文章中不加以讨论。
导出操作选项如下图:
OK!下面我们将f3d文件存放到flash builder的项目文件中,然后进行代码编写。
下面是文档类的代码:
package
{
import flare.basic.;
import flare.core.;
import flare.system.;
import flare.utils.;
import flash.display.;
import flash.display3D.;
import flash.events.*;
[SWF(frameRate = 60, width = 800, height = 450, backgroundColor = 0x000000)]
public class ex2 extends Sprite
{
private var scene:Scene3D;
private var obj:Pivot3D;
private var hua:Pivot3D;
public function ex2()
{
stage.scaleMode = StageScaleMode.NO_SCALE;
stage.align = StageAlign.TOP_LEFT;
scene = new Viewer3D(this);
scene.antialias = 10;
obj = scene.addChildFromFile(“3d.f3d”);
scene.addEventListener( Scene3D.COMPLETE_EVENT, completeEvent );
}
private function completeEvent(e:Event):void
{
hua = obj.getChildByName(“myhuan”);
this.addEventListener(Event.ENTER_FRAME,dong);
}
private function dong(evt:Event):void
{
hua.rotateX(5);
}
}
}
对于代码中出现的内容我们来进行一下详细的讲解。在所有的3D引擎中都会包含两个概念一个是场景,另外一个就是摄像机。
这个demo中并没有出现摄像机这个操作,我们只是使用了场景这个对象。
Scene3D这个类是我们flare3D中的场景类,通过这个类,我们可以实例化一个3D场景容器,将所有的3D对象全部存放到这个场景中。
这里我们在实例化的时候并没有使用Scene3D,而是使用了另外一个带有鼠标交互事件场景类,Viewer3D从Scene3D继承而来,在此基础之上增加了鼠标事件。
Pivot3D则是所有3D元素的父类,其角色相当于DisplayObject,所有的3D元素全部继承自这个类。后面我们的代码则是我们从外部文件中加载f3d文件,然后flare3D引擎会自动将这些文件解析为flash可读取的文件格式,并且进行显示。
后面则是对我们模型中的圆环进行旋转操作。
最终效果如图: