flash 10 ортографическая проекция - PullRequest
2 голосов
/ 20 марта 2009

Я немного поиграл с новыми возможностями вспышки 10 3d и обнаружил, что вращать спрайт в 3d довольно просто:

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

Простая и эффективная карта, повернутая в перспективе.

Теперь я хочу использовать ортографическую проекцию, и я понятия не имею, с чего начать. У DisplayObject действительно есть элементpectiveProjection, но, конечно, он может создавать только перспективные проекции. Может мне стоит использовать transform.matrix3D?

Я думаю, что это не должно быть слишком сложно, но я не понимаю, как решить эту проблему.

ОБНОВЛЕНИЕ: как один из комментариев предлагает: если установить для prosProjection.fieldOfView значение, близкое к 0 (10 на самом деле дает в моей настройке более хороший результат, чем около 0,1), вы получаете проекцию, почти орфографическую, что может быть хорошо достаточно.

Ответы [ 2 ]

2 голосов
/ 01 апреля 2009

Я наконец-то заработал.

        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)

Теперь любой элемент, добавленный к спрайту, к которому применено это преобразование, будет отображаться в изометрической проекции. (число 35.264 является приблизительным, см. http://en.wikipedia.org/wiki/Isometric_projection)

0 голосов
/ 20 марта 2009

Вы можете установить свойство fieldOfView для PerspectiveProjection в NEAR 0. Я не уверен, что это лучший способ.

Ссылка: http://thebackbutton.com/misc/f10api/flash/geom/PerspectiveProjection.html

...