문제

나는 새로운 Flash 10 3D 가능성으로 조금 플레이했으며 3D로 스프라이트를 회전시키는 것이 매우 쉽다는 것을 알았습니다.

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

간단하고 효과적으로, 이것은 원근법으로 회전 한 카드를 보여줍니다.

이제 나는 직교 프로젝션을 사용하고 싶고 어디서부터 시작 해야할지 실마리가 없습니다. DisplayObject에는 PerspectiveProjection 멤버가 있지만 물론 관점 예측 만 할 수 있습니다. 어쩌면 나는 transform.matrix3d를 사용해야합니까?

나는 이것이 너무 어렵지 않아야한다고 생각하지만,이 문제를 해결하는 방법을 모르겠습니다.

업데이트 : 의견 중 하나가 제안한대로 : PerspectiveProeject.fieldofView를 0에 가까운 것으로 설정합니다 (실제로 10은 0.1보다 내 설정에서 더 좋은 결과를 생성합니다).

도움이 되었습니까?

해결책

나는 마침내 그것을 작동시켰다.

        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)

다른 팁

PerspectiveProjection의 FieldofView 속성을 0에 가까운 것으로 설정할 수 있습니다. 이것이 가장 좋은 방법인지 확실하지 않습니다.

참조: http://thebackbutton.com/misc/f10api/flash/geom/perspectionprojection.html

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top