Flash 10 projection orthographique
-
21-08-2019 - |
Question
Je joue un peu avec le nouveau flash 10 possibilités 3D, et a trouvé que la rotation d'une image-objet 3D est assez facile:
var card:Sprite = new MyCard()
card.x = 100
card.y = 100
card.z = 200
card.rotationX = -60
addChild(card)
Simple et efficace, ce qui montre la carte en rotation avec perspective.
Maintenant, je veux utiliser une projection orthographiques, et je n'ai pas la moindre idée où commencer. DisplayObject a un membre de perspectiveProjection, mais qui ne peut faire des projections en perspective bien sûr. Peut-être que je devrais utiliser le transform.matrix3D?
Je pense que cela ne devrait pas être trop dur, mais je ne vois pas comment aborder cette question.
Mise à jour: comme l'un des commentaires suggère: le réglage de la perspectiveProjection.fieldOfView à quelque chose proche de 0 (10 en fait un produit plus agréable résultat dans ma configuration que quelque chose comme 0,1), vous obtenez une projection qui est presque orthographiques, qui pourrait être bon assez.
La solution
Je l'ai finalement obtenu de travail.
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)
Maintenant tout élément ajouté à l'image-objet qui a cette transformation appliquée à elle montrera en projection isométrique. (Ce nombre est approximatif 35,264 voir http://en.wikipedia.org/wiki/Isometric_projection)
Autres conseils
Vous pouvez définir la propriété fieldOfView de PerspectiveProjection à près de 0. Je ne suis pas sûr si cela est la meilleure façon.
Référence: http://thebackbutton.com/misc/f10api/flash /geom/PerspectiveProjection.html