Domanda

Ho giocato un po 'con il nuovo Flash 10 possibilità 3d, e ho scoperto che la rotazione di uno sprite in 3d è abbastanza facile:

var card:Sprite = new MyCard()
card.x = 100
card.y = 100
card.z = 200
card.rotationX = -60
addChild(card)

Semplice ed efficace, questo dimostra la carta ruotata con la prospettiva.

Ora voglio utilizzare una proiezione ortogonale, e non ho idea da dove cominciare. DisplayObject ha un membro perspectiveProjection, ma che può solo proiezioni prospettiche naturalmente. Forse dovrei usare il transform.matrix3d?

Mi piacerebbe che questo non dovrebbe essere troppo difficile, ma non vedo come affrontare questo problema.

UPDATE: come uno dei commenti suggerisce: impostare la perspectiveProjection.fieldOfView a qualcosa vicino a 0 (10 produce in realtà un risultato più bello nella mia configurazione di qualcosa come 0.1) si ottiene una proiezione che è quasi ortografica, che potrebbe essere buono sufficiente.

È stato utile?

Soluzione

Finalmente ho capito di lavoro.

        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)

Ora, qualsiasi elemento aggiunto al sprite che ha questa trasformazione applicata ad esso apparirà in proiezione isometrica. (Che 35,264 numero è un'approssimazione vedi http://en.wikipedia.org/wiki/Isometric_projection)

Altri suggerimenti

È possibile impostare la proprietà fieldOfView di PerspectiveProjection al NEAR 0. Io sono sicuro se questo è il modo migliore.

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

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top