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.

Foi útil?

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

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top