关键字
3D盒子3D盒子(Flash)

3D盒子


点击浏览该文件
点击浏览该文件
前几天参考了ox的贴子,总算弄出来了,用了好多ox的东西。。。呵呵
http://bbs.Flashempire.net/showthread.PHP?t=183141&page=2
上面这个就是ox在闪帝的长篇大补贴,讨论3D贴图的

很早就看过“小小”做的3D烟盒,很想自己也做个,于是开始学习3D方面的东西,
但是进展很慢,而且断断续续的,在参考了很多源代码之后,终于弄出了个
3D球棍模型http://www.5dblog.com/user2/jh7086/index.ASP?id=19656
空间点的基本变换和简单消隐算是搞懂些了,但是还是没弄出贴图来,想到“小小”
的贴图是将图片分割成三角形的,于是我以为,只要能将一个三角形的图片进行
任意的变换UploadFile/2004-11/20041125201957997.swf
就可以贴图了,但是“小小”为什么把每个面分割成4个三角形,而不是2个呢,
直到那天看了ox的帖子才明白:贴图并不是简单的顶点坐标映射,要做真正的
透视贴图,必须按像素级别切割图片,这在Flash里是不现实的,“小小”的每个面
是用4个三角形平行透视后拼成的(不知道为什么会想到要这样做)

楼下的代码中最关键的就是将正方形的MC贴到任意平行四边形那一段,我是直接
引用了ox所写的函数,只做了些小的改动,里面的数学计算和三角形任意变形应该
是相同的(我没具体研究过ox是如何计算的),因为它们的实质都是解决这样一个问题:
已知平面上三个原始点a(ax,ay);b(bx,by);c(cx,cy)和三个目标点d(dx,xy);e(ex,ey);f(fx,fy)
要求通过“平移,缩放,旋转”3种变换的组合来使abc在经过同样的变换后,对应地变成
def。。。
这是我以前建立的方程

点击浏览该文件(将c点和f点都放在原点,只考虑通过缩放1+旋转+缩放2的步骤将ab变换到de),方程是解出来了,但是有很多限制条件,于是就卡住了
而ox的方法似乎是用逆推

2006-01-08 15:05:53.0