2

新しい 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 を使用する必要がありますか?

これはそれほど難しいことではないと思いますが、この問題に取り組む方法がわかりません。

更新: コメントの 1 つが示唆するように: perspectiveProjection.fieldOfView を 0 に近い値に設定すると (10 は、0.1 のようなものよりも実際に私の設定でより良い結果を生成します)、ほぼ正投影の投影が得られますが、それで十分です。

4

2 に答える 2

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)

これで、この変換が適用されたスプライトに追加された要素はすべて、アイソメ投影で表示されます。(その35.264の数値は概算です。http://en.wikipedia.org/wiki/Isometric_projectionを参照してください)

于 2009-04-01T14:00:42.887 に答える
0

PerspectiveProjectionのfieldOfViewプロパティをNEAR0に設定できます。これが最善の方法かどうかはわかりません。

参照:http ://thebackbutton.com/misc/f10api/flash/geom/PerspectiveProjection.html

于 2009-03-20T11:03:32.240 に答える