سؤال

أنا جديد على OpenGL. أنا ألعب معها باستخدام Jogl. أنا أستخدم هذا نموذج.

أنا نجح في تقديمه إلى النافذة. ومع ذلك ، أود تطبيق القوام/المواد. لست متأكدًا تمامًا من كيفية القيام بذلك.

من ملف .OBJ:

f 6307/4525/3 6303/4524/3 6327/4523/3 6315/4526/3
usemtl kahki_light_pave_W.png
f 6445/3470/305 6437/4623/305 6593/4624/305 6597/4625/305
f 6594/4626/306 6438/4627/306 6446/4628/306 6598/4629/306
f 6595/4630/307 6439/4631/307 6447/4632/307 6599/4633/307
f 6448/3482/308 6440/4634/308 6596/4635/308 6600/4636/308

يخبرني ويكيبيديا أن كل شيء بعد usemtl البيان وقبل التالي usemtl من المفترض أن يستخدم البيان khaki_light_pave_W.png. ومع ذلك ، لست متأكدًا من كيفية القيام بذلك في OpenGL.

هناك مجموعة من القمم المحددة في الجزء العلوي من الملف:

v 19.886690 3.093822 -21.149584
v 23.886690 3.093822 -21.149584
vt 0.918121 0.920883
vt 0.918121 0.959193
vt -0.537323 1.541370
vt -0.537323 1.503060
vt 0.462677 0.503060

هل أحتاج إلى استخدام vt رؤوس الملمس؟ ال f تتضمن البيانات مؤشرات. هل هذه مؤشرات في v الرؤوس، vt, ، او كلاهما؟

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

المحلول

TL ؛ DR: vt تحدد الإدخالات إحداثيات الملمس و f فهرس إدخالات (1 قائم!) إلى ثلاث صفائف منفصلة (v, vt, ، و vn).

من المواصفات, ، القسم "الرجوع إلى بيانات Vertex":

بالنسبة لجميع العناصر ، يتم استخدام الأرقام المرجعية لتحديد الرؤوس الهندسية ، ورؤوس الملمس ، والطائرات القرفية ، ورؤوس مساحة المعلمة.

يتم ترقيم كل من هذه الأنواع من الرؤوس بشكل منفصل ، بدءًا من 1. هذا يعني أن أول قمة هندسية في الملف هي 1 ، والثاني هو 2 ، وهكذا. قمة الملمس الأولى في الملف هي 1 ، والثاني هو 2 ، وهكذا. يستمر الترقيم بالتتابع عبر الملف بأكمله. في كثير من الأحيان ، تحتوي الملفات على قوائم متعددة من بيانات Vertex. يستمر تسلسل الترقيم هذا حتى عندما يتم فصل بيانات Vertex بواسطة بيانات أخرى.

بالإضافة إلى حساب القمم لأسفل من الجزء العلوي من القائمة الأولى في الملف ، يمكنك أيضًا حساب القمم احتياطيًا للقائمة من موضع العنصر في الملف. عند حساب القائمة من عنصر ما ، تكون الأرقام المرجعية سالبة. يشير الرقم المرجعي لـ -1 إلى قمة الرأس مباشرة فوق العنصر. يشير رقم مرجعي من -2 إلى مرجعين أعلاه وما إلى ذلك

نصائح أخرى

لقد كتبت محمل ملف OBJ جنبًا إلى جنب مع عارض عينة نموذج لعرض النموذج باستخدام LWJGL ، وهو ما يشبه JOGL ولكن ليس هو نفسه تمامًا. (لقد استخدمت كل من Jogl و LWJGL - في الواقع لقد تحولت مؤخرًا من Jogl إلى LWJGL.)

لقد ساهقت لجعل الكود نظيفًا وبسيطًا قدر الإمكان. لسوء الحظ ، يكون "الطراز القديم" لأنه يستخدم خط أنابيب الوظيفة الثابتة بدلاً من التظليلات المخصصة ، لكنني آمل أن يكون مفيدًا ومفيدًا إلى حد ما للأساسيات. يمكنك العثور عليه في ؛

http://darksleep.com/OOBJLOADER/

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