Flash 10 projecção ortográfica
-
21-08-2019 - |
Pergunta
Eu tenho jogado um pouco com o novo Flash 10 3d possibilidades, e descobri que girar uma entidade gráfica em 3D é bastante fácil:
var card:Sprite = new MyCard()
card.x = 100
card.y = 100
card.z = 200
card.rotationX = -60
addChild(card)
Simples e eficaz, isso mostra o cartão girado com a perspectiva.
Agora eu quero usar uma projeção ortográfica, e eu não tenho idéia por onde começar. DisplayObject tem um membro perspectiveProjection, mas que só pode fazer projeções de perspectiva de curso. Talvez eu devesse usar o transform.matrix3D?
Eu acho que isso não deve ser muito difícil, mas eu não vejo como lidar com esta questão.
UPDATE: como um dos comentários sugere: definir o perspectiveProjection.fieldOfView para algo próximo a 0 (10 realmente produz um resultado melhor na minha configuração do que algo como 0,1), obtém uma projeção que é quase ortográfico, que pode ser bom suficiente.
Solução
Eu finalmente tenho que trabalhar.
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)
Agora, qualquer elemento adicional para o sprite que esta transformação aplicada a ele vai aparecer na projeção isométrica. (Que 35,264 número é uma aproximação ver http://en.wikipedia.org/wiki/Isometric_projection)
Outras dicas
Você pode definir a propriedade fieldOfView de PerspectiveProjection para próximo de 0. Tenho certeza de que este é o melhor caminho.
Referência: http://thebackbutton.com/misc/f10api/flash /geom/PerspectiveProjection.html