2009-03-20 8 views
2

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:Flash 10 projection orthographiques

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

Simple et efficace, cela montre la carte tourné avec perspective.

Maintenant, je veux utiliser une projection orthographique, et je n'ai aucune idée par où commencer. DisplayObject a un membre de perspectiveProjection, mais cela ne peut que 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 difficile, mais je ne vois pas comment résoudre ce problème. MISE À JOUR: comme le suggère l'un des commentaires: placer la perspectiveProjection.fieldOfView à quelque chose près de 0 (10 produit réellement un résultat plus agréable dans ma configuration que quelque chose comme 0.1) vous obtenez une projection qui est presque orthographique, cela pourrait être assez bien.

Répondre

2

Je suis enfin fonctionner.

 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 auquel cette transformation est appliquée apparaîtra en projection isométrique. (ce nombre de 35.264 est une approximation voir http://en.wikipedia.org/wiki/Isometric_projection)

Questions connexes