ملف Wavefront بصيغة .obj

OBJ (أو .OBJ) هو تنسيق ملف تعريف هندسي طُوِّر لأول مرة بواسطة شركة Wavefront Technologies لحزمة الرسوم المتحركة Advanced Visualizer . وهو تنسيق ملف مفتوح المصدر ، وقد اعتمدته شركات أخرى لتطبيقات رسومات الحاسوب ثلاثية الأبعاد .

يُعدّ تنسيق ملف OBJ تنسيق بيانات بسيطًا يُمثّل الهندسة ثلاثية الأبعاد فقط، أي موضع كل رأس ، وموضع إحداثيات UV لكل رأس في نسيج الإحداثيات، ومتجهات الرؤوس العمودية ، والوجوه التي تُشكّل كل مضلع، والتي تُعرّف كقائمة من الرؤوس ورؤوس النسيج. تُخزّن الرؤوس بترتيب عكس عقارب الساعة افتراضيًا، مما يجعل التصريح الصريح عن متجهات الوجوه العمودية غير ضروري. لا تحتوي إحداثيات OBJ على وحدات، ولكن يمكن أن تحتوي ملفات OBJ على معلومات المقياس في سطر تعليق سهل القراءة.

تنسيق الملف

أي شيء يلي رمز الهاش (#) هو تعليق.

هذا تعليق.

قد يحتوي ملف OBJ على بيانات الرؤوس، وخصائص المنحنيات/الأسطح الحرة، والعناصر، وبيانات جسم المنحنيات/الأسطح الحرة، والاتصال بين الأسطح الحرة، ومعلومات التجميع وخصائص العرض/التجسيد. أكثر العناصر شيوعًا هي الرؤوس الهندسية، وإحداثيات النسيج، ومتجهات الرؤوس العمودية، والوجوه المضلعة.

# قائمة الرؤوس الهندسية، مع إحداثيات (x، y، z، [w])، و w اختياري وقيمته الافتراضية 1.0. الإصدار 0.123 0.234 0.345 1.0 v ... ... # قائمة إحداثيات النسيج، في إحداثيات (u، [v، w])، ستتراوح هذه بين 0 و1. v وw اختياريان وقيمتهما الافتراضية هي 0. vt 0.500 1 [0] vt ... ... # قائمة متجهات الرؤوس العمودية في شكل (x,y,z)؛ قد لا تكون المتجهات العمودية متجهات وحدة . vn 0.707 0.000 0.707 vn ... ... # رؤوس فضاء المعلمات في شكل (u, [v, w])؛ بيان هندسي حر الشكل (انظر أدناه) vp 0.310000 3.210000 2.100000 نائب الرئيس ... ... # عنصر وجه متعدد الأضلاع (انظر أدناه) f 1 2 3 f 3/1 4/2 5/3 f 6/4/1 3/5/3 7/6/5 f 7//1 8//2 9//3 و ... ... عنصر الخط الرئيسي (انظر أدناه) ل ٥ ٨ ١ ٢ ٤ ٩

رأس هندسي

يُحدد الرأس بسطر يبدأ بالحرف v. يليه إحداثيات (س، ص، ع[، و]). و و اختياري وقيمته الافتراضية 1.0. يُستخدم و لتغيير مقياس النقطة. النقطة (س، ص، ع، و) تُقابل النقطة (س/و، ص/و، ع/و). يُستخدم نظام إحداثيات يميني لتحديد مواقع الإحداثيات. تدعم بعض التطبيقات ألوان الرؤوس، وذلك بوضع قيم الأحمر والأخضر والأزرق بعد س ص و ع (وهذا يمنع تحديد و). تتراوح قيم الألوان من 0 إلى 1. [ 2 ]

رؤوس فضاء المعلمات

يمكن تحديد عبارة هندسية حرة الشكل في سطر يبدأ بالسلسلة vp. حدد النقاط في فضاء معلمات منحنى أو سطح. uمطلوب فقط لنقاط المنحنى، uولنقاط vالسطح ونقاط التحكم لمنحنيات القطع غير النسبية، و و u( الوزن) لنقاط التحكم لمنحنيات القطع النسبية.vw

عناصر الوجه

تُعرَّف الأوجه باستخدام قوائم من مؤشرات الرؤوس والنسيج والمتجهات العمودية بالصيغة vertex_index/texture_index/normal_index، حيث يبدأ كل مؤشر من 1 ويزداد وفقًا لترتيب تعريف العنصر المُشار إليه. ويمكن تعريف المضلعات، مثل الأشكال الرباعية، باستخدام أكثر من ثلاثة مؤشرات.

تدعم ملفات OBJ أيضًا الأشكال الهندسية الحرة التي تستخدم المنحنيات والأسطح لتحديد الكائنات، مثل أسطح NURBS .

مؤشرات الرؤوس

يتطابق فهرس الرأس الصحيح مع عناصر الرأس المقابلة في قائمة رؤوس مُعرَّفة مسبقًا. إذا كان الفهرس موجبًا، فإنه يشير إلى الإزاحة في قائمة الرؤوس تلك، بدءًا من 1. أما إذا كان الفهرس سالبًا، فإنه يشير نسبيًا إلى نهاية قائمة الرؤوس، حيث يشير -1 إلى العنصر الأخير.

يمكن أن يحتوي كل وجه على ثلاثة رؤوس أو أكثر.

f v1 v2 v3 ...

مؤشرات إحداثيات نسيج الرأس

يمكن استخدام مؤشرات إحداثيات النسيج، اختيارياً، لتحديد إحداثيات النسيج عند تعريف وجه. لإضافة مؤشر إحداثيات نسيج إلى مؤشر رأس عند تعريف وجه، يجب وضع شرطة مائلة (/) مباشرةً بعد مؤشر الرأس، ثم كتابة مؤشر إحداثيات النسيج. لا يُسمح بوجود مسافات قبل أو بعد الشرطة المائلة. يبدأ مؤشر إحداثيات النسيج الصحيح من 1 ويطابق العنصر المقابل في قائمة إحداثيات النسيج المُعرَّفة مسبقاً. يمكن أن يحتوي كل وجه على ثلاثة عناصر أو أكثر.

f v1/vt1 v2/vt2 v3/vt3 ...

مؤشرات عمودية للرؤوس

يمكن استخدام مؤشرات المتجهات العمودية، اختيارياً، لتحديد المتجهات العمودية للرؤوس عند تعريف وجه. لإضافة مؤشر متجه عمودي إلى مؤشر رأس عند تعريف وجه، يجب وضع شرطة مائلة ثانية بعد مؤشر إحداثيات النسيج، ثم وضع مؤشر المتجهات العمودية. يبدأ مؤشر المتجهات العمودية الصحيح من 1 ويطابق العنصر المقابل في قائمة المتجهات العمودية المُعرَّفة مسبقاً. يمكن أن يحتوي كل وجه على ثلاثة عناصر أو أكثر.

و v1/vt1/vn1 v2/vt2/vn2 v3/vt3/vn3...

مؤشرات المتجهات العمودية للرؤوس بدون مؤشرات إحداثيات النسيج

بما أن إحداثيات النسيج اختيارية، يمكن للمرء تعريف الهندسة بدونها، ولكن يجب وضع شرطتين مائلتين بعد فهرس الرأس قبل وضع فهرس العمودي.

f v1//vn1 v2//vn2 v3//vn3 ...

عناصر الخط

تحدد السجلات التي تبدأ بالحرف "l" (حرف L صغير) ترتيب الرؤوس التي تشكل خطًا متعددًا.

l v1 v2 v3 v4 v5 v6 ...

تنسيقات هندسية أخرى

تدعم ملفات OBJ الأسطح ذات الرتبة الأعلى باستخدام أنواع مختلفة من الاستيفاء، مثل استيفاء تايلور واستيفاء بي-سبلاينز ، [ 3 ] مع أن دعم هذه الميزات في برامج قراءة الملفات الخارجية ليس شاملاً. كما لا تدعم ملفات OBJ التسلسلات الهرمية للشبكات أو أي نوع من الرسوم المتحركة أو التشوه، مثل تكسية الرؤوس أو تحويل شكل الشبكة.

المواد المرجعية

تُخزَّن المواد التي تصف الجوانب المرئية للمضلعات في ملفات خارجية بصيغة .mtl . ويمكن الإشارة إلى أكثر من ملف مادة خارجي بصيغة MTL من داخل ملف OBJ. وقد يحتوي ملف .mtl على تعريف واحد أو أكثر من تعريفات المواد المسماة.

mtllib [اسم ملف .mtl خارجي] ...

يُحدد هذا الوسم اسم المادة للعنصر الذي يليه. ويتطابق اسم المادة مع تعريف مادة مُسمى في ملف .mtl خارجي .

usemtl [اسم المادة] ...

يتم تحديد الكائنات المسماة ومجموعات المضلعات عبر العلامات التالية.

o [اسم الكائن] ... g [اسم المجموعة] ...

يتم تمكين التظليل السلس عبر المضلعات عن طريق مجموعات التنعيم.

s 1 ... # يمكن تعطيل التظليل السلس أيضًا. إيقاف ...

المؤشرات النسبية والمطلقة

بفضل بنيتها القائمة، تستطيع ملفات OBJ الإشارة إلى الرؤوس والمتجهات العمودية، وما إلى ذلك، إما بموقعها المطلق (حيث يمثل 1 أول رأس مُعرَّف، وN يمثل الرأس رقم N)، أو بموقعها النسبي (حيث يمثل -1 آخر رأس مُعرَّف). مع ذلك، لا تدعم جميع البرامج الطريقة الأخيرة، بل إن بعضها يكتب بطبيعته بهذه الطريقة فقط (لسهولة إضافة العناصر دون الحاجة إلى إعادة حساب إزاحات الرؤوس، وما إلى ذلك)، مما يؤدي أحيانًا إلى عدم توافق.

مكتبة قوالب المواد

يُعد تنسيق مكتبة قوالب المواد (MTL) أو تنسيق ملف .MTL تنسيقًا مكملاً لتنسيق .OBJ، وهو مُعرّف أيضًا من قِبل شركة Wavefront Technologies ، ويصف خصائص تظليل الأسطح (المواد) للكائنات داخل ملف .OBJ واحد أو أكثر. يشير ملف .OBJ إلى ملف .MTL واحد أو أكثر (تُسمى "مكتبات المواد")، ومن ثمّ يشير إلى وصف مادة واحد أو أكثر بالاسم. ملفات .MTL عبارة عن نصوص ASCII تُحدد خصائص انعكاس الضوء لسطح ما لأغراض العرض الحاسوبي ، وذلك وفقًا لنموذج انعكاس فونغ . يحظى هذا المعيار بدعم واسع النطاق بين مختلف حزم برامج الحاسوب، مما يجعله تنسيقًا مفيدًا لتبادل المواد.

على الرغم من أن صيغة MTL لا تزال شائعة الاستخدام، إلا أنها قديمة ولا تدعم بشكل كامل التقنيات الحديثة مثل خرائط الانعكاس وخرائط اختلاف المنظر . ومع ذلك، وبفضل طبيعة هذه الصيغة المفتوحة والبديهية، يمكن إضافة هذه التقنيات بسهولة باستخدام مولد ملفات MTL مخصص.

يُحدد تنسيق MTL عددًا من التنسيقات. [ 6 ] [ 7 ]

المواد الأساسية

يمكن لملف واحد .mtlتعريف مواد متعددة. تُعرَّف المواد واحدة تلو الأخرى في الملف، ويبدأ تعريف كل منها بالأمر newmtlالتالي:

# تعريف مادة باسم "ملون" نيومونتيل الملونة

يتم تحديد لون الإضاءة المحيطة للمادة باستخدام Ka. وتكون تعريفات الألوان بنظام RGB حيث تتراوح قيمة كل قناة بين 0 و1.

# أبيض Ka 1.000 1.000 1.000

وبالمثل، يتم تعريف اللون المنتشرKd باستخدام .

# أبيض Kd 1.000 1.000 1.000

يتم تحديد لون الانعكاس باستخدام Ks، ويتم ترجيحه باستخدام الأس الانعكاسيNs .

# أسود (مطفأ) Ks 0.000 0.000 0.000 تتراوح بين 0 و 1000 10000 نيرة

يمكن أن تكون المواد شفافة . يُشار إلى هذه الحالة باسم " الذوبان ". على عكس الشفافية الحقيقية، لا تعتمد النتيجة على سُمك الجسم. القيمة 1.0 لـ "d" ( ذوبان ) هي القيمة الافتراضية وتعني عتامة تامة، وكذلك القيمة 0.0 لـ "Tr". يعمل الذوبان على جميع نماذج الإضاءة.

# تستخدم بعض التطبيقات الحرف 'd' د 0.9 # يستخدم آخرون 'Tr' (معكوسة: Tr = 1 - d) Tr 0.1

يمكن أن تحتوي المواد الشفافة أيضًا على لون مرشح النقل، المحدد بـ "Tf".

# لون مرشح الإرسال (باستخدام RGB) Tf 1.0 0.5 0.5 # لون مرشح الإرسال (باستخدام CIEXYZ) - قيمتا y و z اختياريتان، ويُفترض أنهما تساويان x في حال حذفهما. Tf xyz 1.0 0.5 0.5 # لون مرشح النقل من ملف المنحنى الطيفي (غير شائع الاستخدام) Tf spectral <اسم الملف>.rfl <عامل اختياري>

يمكن أن تمتلك المادة أيضًا كثافة بصرية لسطحها. وهذا ما يُعرف أيضًا بمعامل الانكسار .

الكثافة البصرية Ni 1.45000

تتراوح القيم بين 0.001 و10. قيمة 1.0 تعني أن الضوء لا ينكسر عند مروره عبر الجسم. زيادة الكثافة الضوئية تزيد من مقدار الانكسار. يبلغ معامل انكسار الزجاج حوالي 1.5. القيم الأقل من 1.0 تُنتج نتائج غير طبيعية، لذا لا يُنصح باستخدامها. [ 8 ]

تتوفر نماذج إضاءة متعددة لكل مادة. تجدر الإشارة إلى أنه ليس من الضروري تحديد نموذج إضاءة شفاف لتحقيق الشفافية باستخدام "d" أو "Tr"، وفي الاستخدام الحديث، غالبًا ما لا يتم تحديد نماذج الإضاءة، حتى مع المواد الشفافة. يتم سرد نماذج الإضاءة كما يلي:

0. تشغيل اللون وإيقاف الإضاءة المحيطة 1. تشغيل الألوان والإضاءة المحيطة 2. حدد على 3. الانعكاس على وتتبع الشعاع على 4. الشفافية: الزجاج مُفعّل، الانعكاس: تتبع الأشعة مُفعّل 5. الانعكاس: تشغيل عدسة فريسنل وتتبع الأشعة 6. الشفافية: الانكسار مُفعّل، الانعكاس: عدسة فرينل مُعطّلة، تتبع الأشعة مُفعّل 7. الشفافية: الانكسار مُفعّل، الانعكاس: فرينل مُفعّل، وتتبع الأشعة مُفعّل 8. الانعكاس على وتتبع الشعاع خارج 9. الشفافية: الزجاج مُضاء، الانعكاس: تتبع الأشعة مُطفأ 10. يلقي بظلاله على الأسطح غير المرئية
إضاءة 2

خرائط النسيج

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

نيومونتيل ذات الملمس Ka 1.000 1.000 1.000 Kd 1.000 1.000 1.000 Ks 0.000 0.000 0.000 د 1.0 إضاءة 2 خريطة النسيج المحيطي map_Ka lemur.tga # خريطة النسيج المنتشر (في أغلب الأحيان، ستكون هي نفسها خريطة النسيج المنتشر) # خريطة نسيج محيطية) map_Kd lemur.tga خريطة نسيج اللون اللامع map_Ks lemur.tga # مكون اللمعان اللامع map_Ns lemur_spec.tga # خريطة نسيج ألفا map_d lemur_alpha.tga # تستخدم بعض التطبيقات 'map_bump' بدلاً من 'bump' أدناه map_bump lemur_bump.tga # خريطة النتوءات (والتي تستخدم افتراضيًا قناة الإضاءة للصورة) نتوء lemur_bump.tga خريطة النزوح disp lemur_disp.tga # نسيج ملصق الاستنسل (يتم افتراضياً استخدام قناة "غير لامع" للصورة) decal lemur_stencil.tga

قد تحتوي عبارات خريطة النسيج أيضًا على معلمات اختيارية (انظر المواصفات الكاملة ).

 # أصل النسيج (1,1,1) map_Ka -o 1 1 1 ambient.tga خريطة الانعكاس الكروي refl -type sphere clouds.tga

خيارات النسيج

-blendu تشغيل | إيقاف # ضبط مزج النسيج الأفقي (مفعل افتراضيًا) -blendv تشغيل | إيقاف # ضبط مزج النسيج العمودي (مفعل افتراضياً) -boost float_value # تعزيز حدة خريطة MIP -mm base_value gain_value # تعديل قيم خريطة النسيج (الافتراضي 0 1) # القيمة الأساسية = السطوع، قيمة الكسب = التباين -ou [v [w]] # إزاحة الأصل (الافتراضي 0 0 0) -su [v [w]] # المقياس (الافتراضي 1 1 1) -tu [v [w]] # الاضطراب (الافتراضي 0 0 0) -texres resolution # دقة النسيج المراد إنشاؤها -clamp on | off # عرض وحدات البكسل فقط في النطاق المحدد 0-1 (الوضع الافتراضي: إيقاف) # عند فك التثبيت، تتكرر الأنسجة عبر السطح، # عند التثبيت، يتم عرض وحدات البكسل التي تقع ضمن النطاق 0-1 فقط # يتم عرض النطاق. -bm mult_value # مُضاعِف النتوء (لخرائط النتوء فقط) -imfchan r | g | b | m | l | z # يحدد القناة المستخدمة من الملف لـ # إنشاء نسيج قياسي أو نسيج بارز. r: أحمر، g: أخضر، # b:أزرق، m:مطفأ، l:إضاءة، z:عمق z.. # (القيمة الافتراضية للنتوء هي 'l' وللملصق هي 'm') 

على سبيل المثال،

# يشير إلى استخدام القناة الحمراء من ملف bumpmap.tga كخريطة نتوءات bump -imfchan r bumpmap.tga 

بالنسبة لخرائط الانعكاس ...

-type sphere # يحدد كرة لخريطة انعكاس "refl" -type cube_top | cube_bottom | # عند استخدام خريطة مكعب، ملف النسيج لكل واجهة المكعب | خلفية المكعب | يتم تحديد جانب المكعب بشكل منفصل مكعب_يسار | مكعب_يمين 

تعديلات خاصة بالبائع

بسبب سهولة تحليل الملفات، والانتشار غير الرسمي لتنسيق الملف، قد تحتوي الملفات على تعديلات خاصة بالبائع.

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

# مضاعف زيادة 0.2 bump texbump.tga -bm 0.2

عرض قائم على الفيزياء

اقترح مطورو أداة Clara.io لتحرير وتصميم النماذج ثلاثية الأبعاد عبر الإنترنت ، توسيع نطاق تنسيق MTL لتمكين تحديد خرائط ومعايير العرض القائم على الفيزياء (PBR). وقد اعتمد برنامجا Blender وTinyObjLoader هذا التوسيع لاحقًا. خرائط ومعايير PBR الموسّعة هي: [ 9 ]

Pr/map_Pr # خشونة Pm/map_Pm # معدني Ps/map_Ps # لمعان سمك الطبقة الشفافة بي سي آر خشونة الطبقة الشفافة Ke/map_Ke # emissive تباين تباين الخواص anisor # دوران التباين خريطة عادية # خريطة عادية (مكونات RGB تمثل مكونات XYZ للسطح العادي) 

وتأتي التوسعات المقترحة الأخرى من مجموعة أدوات DirectXMesh لمحرك DirectX الخاص بمايكروسوفت ، مما يسمح بإمكانية تحديد مادة RMA المجمعة مسبقًا للنموذج. [ 10 ]

map_RMA # مادة RMA (الخشونة، المعدنية، الانسداد المحيطي) map_ORM # تعريف بديل لـ map_RMA 

انظر أيضاً

مراجع

  1. اسم نوع الوسائط الفرعي: obj
  2. "كيف يمكنني تضمين معلومات لون الرؤوس في ملفات .OBJ؟" . موقع تبادل معلومات تطوير الألعاب . مؤرشف من الأصل بتاريخ 14-10-2014 . تم الاطلاع عليه بتاريخ 08-10-2014 .
  3. "موجة OBJ: ملخص من موسوعة تنسيقات ملفات الرسومات" . www.fileformat.info . مؤرشف من الأصل بتاريخ 14 يناير 2025. تم الاطلاع عليه بتاريخ 13 فبراير 2025 .
  4. "اسم نوع الوسائط الفرعي: mtl" . مؤرشف من الأصل بتاريخ 12 أبريل 2021. تم الاطلاع عليه بتاريخ 28 أبريل 2021 .
  5. "تنسيق ملف مكتبة قوالب مواد Wavefront (MTL)" . مكتبة الكونغرس . 4 أكتوبر 2019. مؤرشف من الأصل في 12 أبريل 2021. تم الاطلاع عليه في 29 أبريل 2021 .
  6. "ملفات MTL - تعريفات المواد لملفات OBJ" . People.sc.fsu.edu. 14-06-2004. مؤرشف من الأصل في 13-06-2010 . تم الاطلاع عليه في 26-11-2010 .
  7. "معلومات عن تنسيق ملف Wavefront .mtl - شكاوى وتذمرات - Wings - Wings3D - منتدى التطوير الرسمي - لوحة الرسائل" . Nendowingsmirai.yuku.com. يوليو 2002. مؤرشف من الأصل في 18 يوليو 2011. تم الاطلاع عليه في 26 نوفمبر 2010 .
  8. رامي، ديان (1995). "صيغة مواد MTL (لايتويف، OBJ)" . ألياس-ويف فرونت، إنك. مؤرشف من الأصل في 12 نوفمبر 2016. تم الاسترجاع في 17 مايو 2020 .
  9. "بن هيوستن | توسيع نطاق Wavefront MTL للعرض القائم على الفيزياء" . benhouston3d.com .
  10. "إمكانية تعريف نسيج RMA في ملف MTL الخاص بـ OBJ. بواسطة MattFiler · طلب سحب رقم 39 · microsoft/DirectXMesh" . GitHub .