سؤال

أحتاج إلى وجهة نظر لإظهار مضلع الطريق (مستطيل 3.F * 100.F) مع نقطة التلاشي على طريق يجري في ارتفاع 3/4 من Viewport وأقرب حافة الطريق كجانب السفلي من Viewport. يرى لعبة تاكسي مجنون للحصول على مثال على ما أود القيام به.

أنا أستخدم iPhone SDK 3.1.2 افتراضي OpenGL ES Project Template.

أقوم بإعداد مصفوفة الإسقاط على النحو التالي:

glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glFrustumf(-2.25f, 2.25f, -1.5f, 1.5f, 0.1f, 1000.0f);

ثم استخدم GLRotatef للضبط لوضع أفقي وكاميرا الإعداد.

glMatrixMode(GL_MODELVIEW);

الحمل ()؛ GLROTATEF (-90، 0.0F، 0.0F، 1.0F)؛

Const Float Campaicangle = 45.0f * m_pi / 180.0f؛ Glulookat (0.0F، 2.0F، 0.0F، 0.0F، 0.0F، 100.0F، 0.0F، COS (Crafternangle)، SIN (Craficleangle))؛

بلدي الطريق المضلع مثلث قطاع مثل هذا:

static const GLfloat roadVertices[] = {

-1.5F، 0.0F، 0.0F، 1.5F، 0.0F، 0.0F، -1.5F، 0.0F، 100.0F، 1.5F، 0.0F، 100.0F،}؛

ولا أستطيع أن أجد المعلمات الصحيحة ل Glulookat. نقطة التلاشي هي دائما في وسط الشاشة.

هل كانت مفيدة؟

المحلول

تريد أن تفعل هذا في ثلاثية الأبعاد أصلية؟ أساسا مظهرك في النقطة هو مركز الشاشة. ما تريد أن يكون هو ربع الشاشة أسفل الأفق.

يمكنك العمل بها عن طريق إخراج المركز النهائي عن طريق الإسقاط وعن رأي (غير متناسب بشكل أساسي).

على افتراض أن الشاشة تمتد من -1.0F إلى 1.0F في x و -1.0f إلى 1.0f في y، فأنت تريد أن يذهب الأفق إلى (0.0F، 0.5F). هذا يعني أنك بحاجة إلى النظر إلى أسفل ربع الشاشة (IE -0.5F). للحصول على Z المعطاة (سنقوم باختيار 0.5F بشكل عشوائي). لذلك إذا أخذنا رأيك كما كنت تعرف بالفعل ومصفوفة "الهوية" وكذلك مصفوفة "الإسقاط"، يمكنك بعد ذلك تمرير هذا من خلال gluunproject كما يلي:

GLdouble eyeX, eyeY, eyeZ;
gluUnproject( 0.0f, -0.5f, 0.5f, identity, view, projection, &eyeX, &eyeY, &eyeZ );

يمكنك بعد ذلك توصيل قيم عينك مرة أخرى في Glulookat وستظهر الآن عند نقطة أسفل سطح الطريق.

أنا متأكد من وجود طرق أخرى لا تعد ولا تحصى للقيام بذلك ولكن ينبغي أن يعمل المرء ...

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