2009-08-23 56 views
0

你好我的目标实现,3D立方体鼠标每面墙渐变填充操作。如何在Flash 3D立方体的两侧沿着旋转梯度 - ActionScript 3.0中

我发现一些源代码coresponding到梯度和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

+0

我喜欢你有代码的方式,这使得它更容易。我不明白的是你到底想要达到什么目的。你想要一个阴影立方体吗?如果是这样,你需要:1.每个面的不同梯度(或至少可见面的梯度)2.确定你的光在3d的位置(只有x,y,z)......然后你需要将光线与面对光线的脸部相区分,并根据角度,某些渐变将变得更轻,而其他渐变将变得更暗。 – 2009-08-23 11:30:19

+0

答案更新... greetz – back2dos 2009-08-23 12:50:34

回答

1

这是不可能的......透视失真不是affine transformation,这就是为什么t这里就不矩阵会是创建具有正确的透视变形梯度的合适的参数...

我认为闪存10最简单的办法就是真正去用不同的方式......所有的DisplayObject可在改造的空间,让你简单地表示由一个DisplayObject任何脸型,就可以执行所有的转换,然后所有剩下要做的就是Z分类...


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

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

您与AS3的问题真的母鹿与语言无关......你应该重新考虑你的方法......从一种新的语言和一个未知的API开始,试图增强一个3D引擎而不知道背后的理论,并不是真的最好的办法......

你应该开始习惯的语言首...一旦你对此感到满意,我认为最好的方法就是使用一个好的AS3 3D引擎,比如沙地,papervision,away3d,alternativa或其他......例如在沙地上,你创建一个天空盒子(a 3D立方体),并将任何你想要的材料分配给它的脸部,这样你就完成了......而且,这些引擎还可以与3D建模软件进行互操作,所以不需要手动创建多面体并与它们一起玩,你可以导入复杂模型,并做一些很酷的东西......但是做事情的逻辑顺序并有足够的理论知识......

好运气,然后...;)


格尔茨

back2dos

+0

好吧,但也许你可以建议我应该怎样处理这个代码(或者建议其他一些解决方案)来制作这种变换的错觉,而不是确切的,但是通过操纵一些渐变参数做一部分通过旋转strengng梯度,剩余的效果文字只有通过梯度被绘制的表面被转换的事实才能解决。或者也许有可能访问现有的电影clisp并操纵它们以及它的渐变 – MoreThanChaos 2009-08-23 11:17:46

+0

我刚刚跳入AS3并在开始时遇到问题 – MoreThanChaos 2009-08-23 11:18:57

+0

从我的角度来看,我可以说它让我感到不快,我第一次认真接触随着闪光灯,我只能说,这次我的直觉和假设,这通常帮助我解决问题,这次失败了。无论如何,谢谢你的帮助 – MoreThanChaos 2009-08-23 14:15:26