Away3d学习笔记1-三维世界的四个基本构件

来源:互联网 发布:php interface 编辑:程序博客网 时间:2024/04/29 19:56

flash 3d,没近距离接触她之前我感觉她特神秘、特深奥;加之flash3d 引擎国外独大的局势,中文资料少之又少,flash3d对于国内用户来说,她真的很不平易近人!直至硬着头皮啃英文资料开始学习away3D(有很多主流flash3d引擎,如pvd3daway3dsandy。。但网上传away3d架构清晰,易学。所以我选她)。原来只要懂得as3,用away3D做三维东东并没有想象中的复杂。出于加深学习目的我写下这套笔记,同时希望可以给flash3d初学者带来帮助(本笔记基于away3d,但所有引擎机理都是差不多的,所以也适合其他引擎用户阅读)。

 

如同人是由骨架、肌肉、呼吸系统、血液循环系统这些必要东西构成一样,away3d世界,以下是必须的部分: 

1view 视口

2scene 场景

3camera 摄像机

43D物体

其中3D物体就是那些我们想要在三维世界里显示的内容。有内容了就要有放置“内容”的“舞台”,这个“舞台”就是场景。当然还要有摄像机把场景里的3D物体“录”下来。有了这些似乎万事俱备,但还欠东风!这个东风就是“视口”.视口相对前三者要难理解的多,我们不妨这样想下:”录“下来的“影像”不也得要通过电视机我们才能看到吗?对,视口你可以大概看成是电视机屏幕。

 

我把这四者称为三维世界的四个基本构件。

 

下面通过实例,说明away3d的基本构架。先看该例子的效果:

点击观看

再看源代码:

package{

         //导入要用的类

         import flash.display.Sprite ;

         import flash.events.Event;

         import away3d.containers.View3D;

         import away3d.cameras.Camera3D;

         import away3d.containers.Scene3D;

         import away3d.primitives.Sphere;

         //定义输出flash高宽、背景等

[SWF(width="500",height="400",frameRate="60",backgroundColor="#FFFFFF")]

 

public class basicObjects extends Sprite{

                   //申明几个后面会用到的变量;

                   private var view:View3D;

                   private var cam:Camera3D;

                   private var sce:Scene3D;

                   private var sphere:Sphere;

                  

                   public function basicObjects():void{

                            //!!!!!新建四大基本构件!!!!!!!!!

                            //新建摄像机

                            cam=new  Camera3D();

                            //设置摄像机位置,为什么要设置、如何设置这里先不要关心

                            cam.z=-1000;

           

                            //新建场景

sce=new  Scene3D();

    //新建视口,并指定视口使用的摄像机、场景等。

                            view=new  View3D({camera:cam,scene:sce,x:250,y:200});

                            //新建3D物体,这里新建了一个球Spheresphereaway3D内置的一种3D基本元素。

                            sphere=new  Sphere();

            

                            //!!!!!!四大基本构件之二:视口与3D物体一定加入显示列表!!!!!

                            //view添加到舞台、sphere添加到场景。

                            addChild(view)

                            sce.addChild(sphere);

 

                           //!!!!一定要“渲染”才行哟!!!!!!

                           //渲染视口

                            view.render();

                      }

         }

        

}

 

看过加注释的源代码,大家对这代码的理解也就八九不离十了。下面对这些代码作必要的分析。

 

代码主要可分为三步:

一、新建四大基本构件。

既然是三维世界里不可或缺的四大基本构件,我们当然要把它创建出来。

二、显示view3D物体

flash里一样,必须把要显示的对象实例添加到各级显示列表里。view添加到舞台、3D物体(本例是球sphere)添加到场景。

三、渲染视口

电脑里的“三维”其实不是真的三维。你想呀,电脑屏幕是个平面当然不可能像科幻片里的全息音像那样呈现三维!电脑里的三维实质是通过“透视法”将三维物体“投影”到二维屏幕,见下图。在视口没有用其方法(view.render();)之前,所有数据都是三维数据,渲染就是将三维数据“透视“成二维以便能显示在二维的屏幕上。记住,最后一步——渲染!它是实现的电脑三维魔力的所在。

 

 

本图来源:flb3D.com

原创粉丝点击