Away3D学习笔记(3)

第三章 视图(View),场景(Scene)和摄像机(Camera)

通常三维空间有三种组件构成:视图,场景和摄像机。清楚它们各自的功能后,就能对Away3D有更深入的理解。

视图(View)

视图是三维空间的二维映射,像窗户一样,透过它,可以看到外面的精彩世界。它有两个很重要的属性scene和camera,分别代表了后面要说的场景和摄像机。

场景(Scene)

scene属于Scene3D类,它位于away3d.containers包内。scene代表了最顶层的三维容器,和Flash的stage地位类似。如果想要显示某一物体,就必须把它加入到Scene3D里面。

Flash里所有DisplayObject的子类,都可以放置到舞台上。与此类似,Away3D里所有away3d.core.base.Object3D的子类都可以添加到scene中,比如前面用到的Cube, SpherePointLight3D都是Object3D的子类。

[更新 2011-10-12 08:27

通过Away3D的类层次结构图,发现PointLight3D并不是Object3D的子类。

 

Flash有二维的显示列表,Away3D也有相应的三维显示列表。在列表中,三维物体可以包含嵌套其他的三维物体。这些三维容器一般是看不到的。scene是三维容器(ObjectContainer3D)的子类。使用三维容器可以很方便的进行定位和动画轨迹。

摄像机(Camera)

继承自Object3DCamera3D类,代表了场景的观察角度。通过调整它的位置和角度,可以改变显示的场景内容。

camera其实就是一系列的数学公式,把三维坐标系中的场景转换成二维的平面图像。除了位置和角度,还可以通过改变camera的zoom和focus属性,改变场景的外观。它的lens属性定义了投影的类型。这些属性和真实摄像机的属性对应,作用也一样。

 

 

三维基础知识

坐标系(coordinate system)


所有的三维引擎都有坐标系,大致相同,略有差异。Away3D的坐标系和Flash10的坐标系的差别在于y轴方向:Away3D的y轴向上为正,Flash10的y轴向下为正。之所以Flash10如此拧巴,应该是为了兼容以前的版本。大多数的三维引擎的坐标系和Away3D相同。

渲染步骤(rendering process)

三维引擎的渲染步骤很多,这里只列出最基本的几个:裁切(clipping),Z轴排序(Z sorting)和透视投影(perspective projection)。

裁切(Clipping)

裁切,简单的说,是指只渲染视图中出现的东西,而忽视视图之外的物体,这样可以大大提高CPU利用率。

Z轴排序(Z sorting)

Z轴排序用来保证远处物体在近处物体之后。比较著名的算法有画家算法(painter's algorithm)。

透视投影(Perspective Projection)

透视投影就是把三维坐标转换成二维坐标的过程。在Away3D中由lens类处理(它们位于away3d.cameras.lenses包中)。可以将一个lens实例赋予camera的lens属性来进行透视投影。

posted @ 2012-03-21 15:47  小松鼠喝多了  阅读(2742)  评论(0编辑  收藏  举报