闪光10正投影

时间:2009-03-20 10:48:18

标签: flash actionscript-3 projection orthographic

我一直在玩新的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更好的结果)你得到的投影几乎是正交的,这可能是好的够了。

2 个答案:

答案 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