我一直在玩新的flash 10 3d可能性,并发现在3d中旋转精灵相当容易:
var card:Sprite = new MyCard()
card.x = 100
card.y = 100
card.z = 200
card.rotationX = -60
addChild(card)
简单有效,显示卡片以透视方式旋转。
现在我想使用正交投影,我不知道从哪里开始。 DisplayObject确实有一个perspectiveProjection成员,但是当然只能进行透视投影。也许我应该使用transform.matrix3D?
我认为这不应该太难,但我不知道如何解决这个问题。
更新:正如其中一条评论所暗示的那样:将perspectiveProjection.fieldOfView设置为接近0的值(10实际上在我的设置中产生比0.1更好的结果)你得到的投影几乎是正交的,这可能是好的够了。
答案 0 :(得分:2)
我终于明白了。
var m:Matrix3D = new Matrix3D()
var v3:Vector.<Vector3D> = new Vector.<Vector3D>(3);
v3 = m.decompose();
v3[2] = new Vector3D(1,1,0);
m.recompose(v3)
transform.matrix3D.appendRotation( -90, Vector3D.X_AXIS );
transform.matrix3D.appendRotation( -45, Vector3D.Y_AXIS );
transform.matrix3D.appendRotation( 35.264, Vector3D.X_AXIS );
transform.matrix3D.append(m)
现在添加到应用了此变换的sprite中的任何元素都将显示在等轴测投影中。 (该35.264数字是近似值,请参见http://en.wikipedia.org/wiki/Isometric_projection)
答案 1 :(得分:0)
您可以将PerspectiveProjection的fieldOfView属性设置为NEAR 0。 我不确定这是不是最好的方式。
参考:http://thebackbutton.com/misc/f10api/flash/geom/PerspectiveProjection.html