Pregunta

He estado jugando un poco con el nuevo flash 10 posibilidades 3d, y descubrí que la rotación de un sprite en 3d es bastante fácil:

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

Simple y eficaz, esto demuestra la tarjeta hace girar con la perspectiva.

Ahora quiero usar una proyección ortográfica, y no tengo ni idea de por dónde empezar. DisplayObject tiene un miembro perspectiveProjection, pero que sólo puede hacer proyecciones en perspectiva de curso. Tal vez debería utilizar el transform.matrix3D?

pensaría que esto no debería ser demasiado difícil, pero no veo cómo hacer frente a este problema.

ACTUALIZACIÓN: como uno de los comentarios que sugiere: establecer el perspectiveProjection.fieldOfView a algo cercano a 0 (10 en realidad produce un resultado más agradable en mi configuración de algo así como 0.1) se obtiene una proyección que es casi ortogonal, que podría ser bueno suficiente.

¿Fue útil?

Solución

Finalmente tengo trabajo.

        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)

Ahora, cualquier elemento añadido para el sprite que se esta transformación aplicada a ella se mostrará en proyección isométrica. (Que 35.264 número es una aproximación ver http://en.wikipedia.org/wiki/Isometric_projection)

Otros consejos

Se puede establecer la propiedad de fieldOfView PerspectiveProjection a cerca de 0. No estoy seguro si esta es la mejor manera.

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

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top