لماذا يقوم OpenGLES بتمديد النموذج ثلاثي الأبعاد الخاص بي؟

StackOverflow https://stackoverflow.com/questions/1067833

  •  21-08-2019
  •  | 
  •  

سؤال

لقد قمت بإنشاء نموذج ثلاثي الأبعاد بسيط في Blender، وقمت باستيراده إلى OpenGLES لـ iPhone SDK.تم استيراد النموذج دون أي مشاكل في معظم الأحيان، ولكن كما ترون من روابط الصور المضمنة (photobucket)، يعمل OpenGL على توسيع النموذج إلى ما هو أبعد من أبعاده المقصودة.تصنع الأسطوانات الدائرية بشكل بيضوي، والجسم المستطيل القرفصاء طويل القامة، وما إلى ذلك.أنا مبتدئ فيما يتعلق بـ OpenGL لذا يرجى تنويري:لماذا يقوم OpenGL(ES) بتوسيع النموذج ثلاثي الأبعاد الخاص بي وما هي بعض خطوات استكشاف الأخطاء وإصلاحها؟

صور (الرجاء فتح الروابط في نافذة جديدة بنفسك)

قالب ليغو تم تصميمه في الخلاط
قالب ليغو تم تصميمه في الخلاط
تم تقديم Lego Brick (ممتد) في OpenGLES
قالب Lego Brick معروض (ممتد) في OpenGLES
تم تقديم Lego Brick (ممتد) في OpenGLES

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

المحلول

ربما يكون لكائنك في الخلاط أحد مقاييسه مختلفة عن 1، وقد لا يتم تصديره (على سبيل المثال، إذا قمت بتصدير الشبكة فقط، وليس كائن الخلاط).

في الخلاط، يمكنك مسح المقاييس باستخدام Alt S -> Clear Scale أثناء وجودك في وضع الكائن.

نصائح أخرى

أعلم أن هذا قديم ولكن سيكون من المفيد إذا كان شخص ما يبحث عن هذه المشكلة للحصول على مرجع صحيح.

عندما تقوم بعرض الأشياء في OpenGL، يتم تعيين مصفوفة الإسقاط على مصفوفة الهوية عند العرض في القالب:

glMatrixMode(GL_PROJECTION);
glLoadIdentity();

وهذا يعني أن برنامج openGL سيتم عرضه على شاشة ذات نسبة عرض إلى ارتفاع 1:1.لإصلاح ذلك، يمكنك القيام بما يلي:

float m[16] = {1.33,0,0,0,
        0,1,0,0,
        0,0,1,0,
        0,0,0,1};
    glMatrixMode(GL_PROJECTION);
    glLoadMatrixf(m);

يؤدي هذا إلى ضبط نسبة العرض إلى الارتفاع على 1.33:1 أو 3:2 والتي تتوافق مع شاشة iPhone.

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