实时三维动画内核分析

系统 1071 0

好吧,今天,让未来带领大家进入“真三维的 Flash 世界”——其实只是很简单的“三维”了。
  先看看这个:
  三维动画可能对大多数人来说都是可望而不可及的吧?是不是总觉得自己不可能制作出真正的三维的东西来呢?错!当你了解了三维的基础知识以后,这些想法就不存在了!而且您会很快就掌握它的制作方法!不相信?举个例子,我一直没有研究过三维基础知识,当我找到一本书以后,马上就编写出我的第一个真三维的动画,仅仅半小时!好了,有信心了吧?开始!
  1)在平面上画线
  在 Flash 中,所谓“画”线,其实就是将一个线型的 MovieClip 改变角度和长度,并且把它放在正确的位置上。
  我现在来说明怎样“画”一条线段。
  首先,看我们的 MovieClip,它是这个样子的:

  下面,我们该开始“画”的过程了。从 (x1,y1) 到 (x2,y2)。
  首先,看下图,我们可以复习一下上学时学到的东西,了解一下怎样求两点之间的距离。

  是了,两点之间的距离应该是dx= x2 - x1;
dy= y2 - y1;
line_length = Math.sqrt(dx*dx+dy*dy);
  然后,再看看怎样求旋转的角度。我们从三角函数的知识知道:正切 tan(ANGLE)=dy:dx,那么,好,我们已经知道了 dx 和 dy,就可以得出 tan(ANGLE) 的值,然后用 Flash 5 提供的反正切函数 atan 就可以计算出 ANGLE。
  不过,要注意的是,取得的 ANGLE 是以弧度计算的,我们还需要把它转换成角度。为什么要转换成角度呢?因为我们要旋转 MovieClip,而这个旋转的角度不是弧度,而是标准的角度。取得角度以后,如果是钝角,还要做一下运算。具体程序如下: angle = Math.atan(dy/dx);
angle = angle*180/Math.PI;
if (dx
  取得长度、角度以后,就可以“画”线了,我们先把线的顶端设置到 (x1,y1),然后通过改变长度和角度使得线的尾部到达 (x2,y2)。setProperty ("line", _x, x1);
setProperty ("line", _y, y1);
setProperty ("line", _rotation, angle);
setProperty ("line", _xscale, line_length);
  好了,“画”线这个最基本的环节我们完成了!
  2)空间上的点和线
  平面上的点我们会用 (x,y) 来表示,而当这个概念延伸到三维上以后,空间上的点就应该定义为 (x,y,z) ,其中,xy 的意义和传统上是一样的,而这个z则是代表垂直于平面上的“深度”,因此,在空间上的点 (10,10,100) 会表现得比 (10,10,10) 更“深”一些。
  那么,怎样来在二维平面上来表现空间上的点的位置呢?这里有一个经典的算法:x=(x/(z+d))*d;
y=(y/(z+d))*d;
本文转自:http://www.5uflash.com/flashjiaocheng/Flashdonghuajiaocheng/1116.html

实时三维动画内核分析


更多文章、技术交流、商务合作、联系博主

微信扫码或搜索:z360901061

微信扫一扫加我为好友

QQ号联系: 360901061

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描下面二维码支持博主2元、5元、10元、20元等您想捐的金额吧,狠狠点击下面给点支持吧,站长非常感激您!手机微信长按不能支付解决办法:请将微信支付二维码保存到相册,切换到微信,然后点击微信右上角扫一扫功能,选择支付二维码完成支付。

【本文对您有帮助就好】

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描上面二维码支持博主2元、5元、10元、自定义金额等您想捐的金额吧,站长会非常 感谢您的哦!!!

发表我的评论
最新评论 总共0条评论