Flash3D

来源:互联网 发布:python 自动化运维教程 编辑:程序博客网 时间:2024/05/01 08:00

Flash3D

第一课

3D启程

       事实上你要知道的是,flash没有3D。你可能会说:DirectorCult3D或者Anark呢?嘿嘿,那些只是一些与生俱来的工具,他们一开始就为了3D而存在的,要他们做flash可以做的事,他们也做不到---闻道有先后,术业有专工。Flash不知道怎么体现3D,她只知道怎么使用向量来显示一些形状,或者计算一些数学函数的结果---这也是我们可以在flash中实现3D的基础,如果flash连这些都不支持,那样flash可能就真的干不了3D了。我们想要做3D,只可以”fake”3D。魔术师欺骗我们的什么?---eyes  有两种方法实现我们远大的理想。第一种:在flash之外用3D软件实现好了真实的3D场景,接着使用3D渲染成一帧一帧的连续播放的剪辑。另外一种就是使用AS自己编程,通过精确的计算出3D的各个部分---这也是你看到这篇文章的原因吧。

       在我说的第一种方法中,如果我们使用一些成熟的3D软件和工具,我们可以很轻松的生成SWF文件,但是这样做的缺点是我们不可以在使用flash的过程中使用SWF里面的东西,也就是说:flash失去了原来使用的意义。

       我们为什么可以用flash3D呢?因为flash支持数学呀! 我们用AS计算出基本的3D数据,然后这些数据就可以被我们使用来作为渲染数据。我们接着就可以通过上面的计算和flashAPI(画图或者其他剪辑)生成我们自己的向量图形,使得看上去就像有一个3D物体一样。可是我们应该知道的是,我们可爱的flash并不知道这些事,她看到的只是基本的数学计算、图形的绘画、一些剪辑的播放。可是我们呢?我们看到的是我们自己用手敲出来的3D场景。哦,我可爱的flashmy angle!我欺骗了你的感情,我,我有罪!哈里路亚!---荣耀主不需多说,尽在这真诚的一句。

       我们现在的问题是:我们需要重头开始。如果不太了解数学,可能会觉得很累,还好国人的数学都很不错!你可能会看到一些数学计算,可是其实你知道的,数学,不就是算算数罢了,而你看到的所谓难题,也不是没有答案。

3D的应用

       你可以在你自己的动画中实现多维。小到拉近拉远,大至全方位的3D物体。可是太细致的东西flash也做不出来,因为flash毕竟只是女孩,还小。下面我们就要开始实现3D旋转的图形。

简单的静态3D视角

       基本的静态3D视角就只是一个概念---远近缩放。这是什么呢?就是说显示的图形在基准的参考平面有自己的位置和缩放比例,然后我们通过计算它因为缩放原因产生视觉的新位置,并把这个计算出来的新位置当成是它的位置。好像说的很模糊,事实上我喜欢换一种理解来说这个概念:有一个大物体,一个小物体放在面平面上,我们看这两个东西,感觉看到的肯定是两个不同的东西,但我们现在用远近缩放做出来的效果就是那个小物体就好像是大物体放在远的地方,它其实不小,只不过是放在很远的地方,我们看到觉得有点小罢了。这就像人站在镜子前面,站得近,觉得人很大,站得远,感觉人很小---初二就知道,其实不论你站的远或者站得进,人都是一样大的。

 

       Flash就是这样,他显示的其实只是2D的东西,但是你看到的就是3D的。你如果还不知道为什么,那你想想:为什么我们可以画出正方体?小时候我就思考过这个问题,有一次我试着自己画,怎么画都不像,最后没办法了,用铅笔把纸捅破了以为可以画出3D的东西,后来到了一年级才知道这是怎么原因---我们可以帮纸加入Z轴。在技术层面,flash不包含Z轴(最近加入的好像还不是很成熟),flash只知道xy。这就需要远近缩放的技术来解决这个问题。有两种方法实现在Z轴的运动,要知道,我还没介绍Z轴的方法呢,您刚才只是知道有Z轴移动这回事。这两种方法是:缩放和重叠。

先解释Z轴缩放

       最基本的就是物体变大变小,远大,近小。可是不仅要处理物体的大小,不同方向的变大变小都要处理。这很容易理解,就像我上面说的,我把大的东西,小的东西方在屏幕上面,角度,侧面都不处理,谁都会认为这是两个不同大小的物体,都在一个平面,没有3D,明显的2D。具体的细节后面用到才慢慢解释。

重叠      

       缩放在很多时候是不够的,如果有很多个3D物体绕着Z轴运动,你就应该要处理不同的层次。不过幸运的是,在flash对层次有很好的支持。Flash层次的问题我也不想多说,大家可以查看具体的稳定,也就是swapDepths

源点

       000

原创粉丝点击