如何在Flash中与3D立方体的边一起旋转渐变

你好,我得到了实现的目标,用梯子填充每个墙上的鼠标操纵3d立方体。

我发现一些源代码回应梯度和3d旋转立方体,但这是问题:

当我把这两样东西放在一起的时候,效果看起来就像是一个线框,透明到一些渐变背景,隐藏在第一个平面纯色背景之后。 渐变总是保持不动。

方法旋转/显示立方体在输入三个参数rotx .roty,rotz我想利用它,并将其应用于显示在每边的渐变。 渐变得到了自己的矩阵,但我不知道如何以及何时操纵此渐变以获得所需的效果 - 我的意思是变换/旋转渐变,看起来像是在立方体上绘制,并沿着它转换到3D位置。 我猜测每一边都应该有独立的梯度矩阵dor,但是如何处理这个矩阵以适应rotx,roty,i rotz。 谁能帮我?

这里是渐变http://snipplr.com/view.php?codeview&id=7050的来源

和网站,你可以得到立方体fla文件http://www.flashandmath.com/flashcs4/cs4simple3d/index.html

这里是来自上面链接的.fla文件的代码和我的修改

http://pastebin.com/fdc431a4


这是不可能的...透视畸变不是一个仿射变换,这就是为什么没有矩阵是一个合适的参数来创建一个正确的透视失真的渐变...

我认为Flash 10最简单的方法实际上采用了不同的方式......所有DisplayObject都可以在空间中进行转换,所以您只需通过DisplayObject代表任何人脸,对其执行所有转换,然后完成所有任务do是z排序...


编辑:你正在寻找的近似是完全不可能的......想象一个面向你的立方体,从黑色到白色,从顶部到底部有一个线性渐变......当你开始向右转时,渐变不再保持平行,而是他们开始形成一个圆锥形渐变,全部聚合在一个点上......

在第二段中的方法正是你正在寻找...创建一个DisplayObject(Shape应该这样做,你不需要MovieClips),绘制一个渐变,然后使用x在三维空间中转换它, yzrotationXrotationYrotationZ ...,并且只要您使用多个对象,您将需要手动对它们进行z排序......如果您需要3d-渐变,则必须删除该代码并使用这种方法,这是迄今为止最简单的方法...

您的AS3问题确实与语言无关......您应该重新考虑您的方法......从一种新语言和一个未知的API开始,试图在不了解背后理论的情况下增强3D引擎,并不是最好的事情......

你应该先开始习惯语言......一旦你感觉舒服,我认为最好的方式是使用一个很好的AS3 3D引擎,比如sandy,papervision,away3d,alternativa或其他......例如在沙地上,您可以创建一个天空盒(一个3d立方体),并将所需的任何材料分配给它的脸部并完成......而且,这些引擎可以与3D建模软件进行互操作,因此不需要创建一些多面体用手和他们一起玩,你可以导入复杂的模型并做一些非常酷的事情......但是按照逻辑顺序并且有足够的理论知识来做事情......

那么祝你好运吧 ... ;)


格尔茨

back2dos

链接地址: http://www.djcxy.com/p/71065.html

上一篇: How to rotate gradient along with sides of 3D cube in Flash

下一篇: Invalid cast exception while querying 'time' field with NHibernate