سؤال

ولقد لعب قليلا مع فلاش جديد 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؟

وكنت أعتقد أن هذا لا ينبغي أن يكون من الصعب جدا، لكنني لا أرى كيف لمعالجة هذه القضية.

وUPDATE: واحدة من التعليقات يقترح: تحديد perspectiveProjection.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)

نصائح أخرى

هل يمكن تعيين الخاصية fieldOfView من PerspectiveProjection إلى قرب 0. أنا غير متأكد ما إذا كان هذا هو أفضل وسيلة.

والمرجعي: http://thebackbutton.com/misc/f10api/flash /geom/PerspectiveProjection.html

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top