Wavefront .obj fayli - Wavefront .obj file

OBJ geometriya formati
Fayl nomi kengaytmasi
.obj
Internet-media turi
matn / tekis
Tomonidan ishlab chiqilganWavefront Technologies
Format turi3D model formati

OBJ (yoki .OBJ) geometriya ta'rifi fayl formati birinchi bo'lib tomonidan ishlab chiqilgan Wavefront Technologies uning uchun Advanced Visualizer animatsiya to'plami. Fayl formati ochiq va boshqa 3D grafik dastur sotuvchilari tomonidan qabul qilingan.

OBJ fayl formati - bu shunchaki 3D geometriyani, ya'ni har birining pozitsiyasini aks ettiradigan oddiy ma'lumotlar formati tepalik, UV holati har bir tekstura koordinatali tepalikning, tepalik normalari, va har bir ko'pburchakni tepaliklar ro'yxati sifatida aniqlanadigan yuzlar va to'qimalarning tepalari. Vertices sukut bo'yicha soat sohasi farqli o'laroq tartibda saqlanadi va yuzning normal holatini aniq e'lon qilish kerak emas. OBJ koordinatalarida birliklar mavjud emas, lekin OBJ fayllari odam o'qiydigan sharhlar satrida masshtabli ma'lumotlarni o'z ichiga olishi mumkin.

Fayl formati

Xash belgisidan keyingi har qanday narsa (#) izohdir.

# bu sharh

OBJ faylida vertex ma'lumotlari, erkin shakl egri / sirt atributlari, elementlar, erkin shakl egri / sirt tanasi bayonotlari, erkin shakl sirtlari orasidagi bog'lanish, atribut ma'lumotlarini guruhlash va ko'rsatish / ko'rsatish mumkin bo'lishi mumkin. Eng keng tarqalgan elementlar geometrik tepaliklar, to'qima koordinatalari, tepalik normallari va ko'pburchak yuzlardir:

# (X, y, z [, w]) koordinatali geometrik vertikalar ro'yxati, ixtiyoriy va sukut bo'yicha 1.0.v 0.123 0.234 0.345 1.0v ...... # tekstura koordinatalari ro'yxati (u, [, v, w]) koordinatalari, ular 0 va 1 orasida o'zgarib turadi, v, w ixtiyoriy va sukut bo'yicha 0,vt 0,500 ga teng bo'ladi 1 [0] vt ...... # (x, y , z) shakl; normal bo'lmasligi mumkin birlik vektorlari.vn 0.707 0.000 0.707vn ...... # (u [, v] [, w]) shaklidagi parametrli bo'shliq tepalari; erkin shakl geometriyasi bayonoti (pastga qarang) vp 0.310000 3.210000 2.100000vp ...... # Ko'pburchak yuzli element (pastga qarang) f 1 2 3f 3/1 4/2 5 / 3f 6/4/1 3/5/3 7/6 / 5f 7 // 1 8 // 2 9 // 3f ...... # Chiziq elementi (pastga qarang) l 5 8 1 2 4 9

Geometrik tepalik

A tepalik harfi bilan boshlanadigan satrda ko'rsatilishi mumkin v. Buning ortidan (x, y, z [, w]) koordinatalari keladi. W ixtiyoriy va sukut bo'yicha 1,0 ga teng. Koordinata joylarini aniqlash uchun o'ng koordinatalar tizimi ishlatiladi. Ba'zi dasturlar x y va z dan keyin qizil, yashil va ko'k qiymatlarni qo'yib, tepalik ranglarini qo'llab-quvvatlaydi. Rang qiymatlari 0 dan 1 gacha.[1]

Parametrning bo'shliqlari

Erkin shakldagi geometriya bayonoti satrdan boshlanadigan satrda ko'rsatilishi mumkin vp. Egri chiziq yoki sirt parametrlari fazosidagi nuqtalarni aniqlang. siz faqat egri chiziqlar uchun talab qilinadi, siz va v ratsional bo'lmagan qirqish egri chiziqlari va boshqarish nuqtalari uchun va siz, v va w (vazn) oqilona qirqish egri chiziqlarini boshqarish nuqtalari uchun.

Yuz elementlari

Yuzlar vertex_index / texture_index / normal_index formatidagi vertex, texture va normal indekslar ro'yxatlari yordamida aniqlanadi, ular uchun har bir indeks 1dan boshlanadi va havola qilingan element aniqlangan tartibga mos ravishda ko'payadi. To'rtburchak kabi ko'pburchaklarni uchta indeksdan ko'proq foydalanish orqali aniqlash mumkin.

OBJ fayllari erkin shakl geometriyasini ham qo'llab-quvvatlaydi, ular egri chiziqlar va sirtlarni ishlatadi, masalan NURBS yuzalar.

Tepalik indekslari

To'g'ri vertex indekslari ilgari aniqlangan vertexlar ro'yxatining mos keladigan vertex elementlariga mos keladi. Agar indeks ijobiy bo'lsa, u ushbu tepaliklar ro'yxatidagi ofsetga ishora qiladi, 1dan boshlanadi. Agar indeks salbiy bo'lsa, u nisbatan vertexlar ro'yxatining oxiriga, -1 oxirgi elementga ishora qiladi.

Har bir yuz uch yoki undan ortiq tepaliklarni o'z ichiga olishi mumkin.

f v1 v2 v3 ....

Vertex to'qimalarining koordinatalari indekslari

Ixtiyoriy ravishda to'qima koordinatalari indekslaridan yuzni aniqlashda to'qima koordinatalarini belgilashda foydalanish mumkin, yuzni belgilashda tepalik indeksiga tekstura koordinatalari indeksini qo'shish uchun tepalik indeksidan keyin darhol qiyalikni qo'yish va keyin tekstura koordinatalari indeksini qo'yish kerak. Nishabdan oldin yoki keyin bo'shliqlarga ruxsat berilmaydi. Haqiqiy tekstura koordinatalari indeksi 1 dan boshlanadi va oldindan belgilangan tekstura koordinatalari ro'yxatidagi mos keladigan elementga mos keladi. Har bir yuz uch yoki undan ortiq elementni o'z ichiga olishi mumkin.

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

Vertex normal ko'rsatkichlari

Ixtiyoriy ravishda yuzni belgilashda tepaliklar uchun normal vektorlarni belgilash uchun normal indekslardan foydalanish mumkin, yuzni aniqlashda tepalik indeksiga normal indeks qo'shish uchun tekstura koordinatalari indeksidan keyin ikkinchi chiziqni qo'yish va keyin normal indeksni qo'yish kerak. amaldagi normal indeks 1 dan boshlanadi va avval belgilangan normalar ro'yxatidagi mos keladigan elementga mos keladi.Har bir yuz uch yoki undan ortiq elementni o'z ichiga olishi mumkin.

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

Tekstura koordinatalari indekslari bo'lmagan vertex normal ko'rsatkichlari

Tekstura koordinatalari ixtiyoriy bo'lganligi sababli, ularsiz geometriyani aniqlash mumkin, lekin normal indeksni qo'yishdan oldin vertex indeksidan keyin ikkita chiziqni qo'yish kerak.

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

Chiziq elementlari

"L" harfi bilan boshlangan yozuvlar polilinali chiziqlarni hosil qilish tepaliklarining tartibini belgilaydi.

l v1 v2 v3 v4 v5 v6 ...

Boshqa geometriya formatlari

Obj fayllari yuqori darajadagi sirtlarni qo'llab-quvvatlaydi, masalan Teylor va B-splinelar kabi turli xil interpolatsiya turlari, ammo uchinchi tomon fayllarini o'qiydiganlar uchun ushbu xususiyatlarni qo'llab-quvvatlash juda keng tarqalgan. Obj fayllari, shuningdek, mesh ierarxiyasini yoki har qanday animatsiya yoki deformatsiyani qo'llab-quvvatlamaydi, masalan, tepalik terisi yoki morp morfing.

Malumot materiallari

Materiallar ko'pburchaklarning vizual tomonlarini tavsiflovchi tashqi .mtl fayllari saqlanadi. OBJ fayli ichida bir nechta tashqi MTL material fayllariga havola qilinishi mumkin. .Mtl fayli bir yoki bir nechta nomlangan material ta'riflarini o'z ichiga olishi mumkin.

mtllib [tashqi .mtl fayl nomi] ...

Ushbu yorliq quyidagi element uchun material nomini belgilaydi. Material nomi tashqi .mtl faylidagi nomlangan material ta'rifiga mos keladi.

usemtl [material nomi] ...

Nomlangan ob'ektlar va ko'pburchak guruhlari quyidagi teglar orqali aniqlanadi.

o [ob'ekt nomi] ... g [guruh nomi] ...

Yumshoq soyalash ko'pburchaklar bo'ylab silliqlash guruhlari tomonidan yoqilgan.

1-sonli silliq soyalarni o'chirib qo'yish ham mumkin. o'chirildi ...

Nisbiy va mutlaq indekslar

OBJ fayllari ro'yxat tuzilishi tufayli tepaliklarga, normal holatlarga va hokazolarga mutlaq pozitsiyalari (1 birinchi belgilangan tepalikni, N - belgilangan N vertexni ifodalaydi) yoki ularning nisbiy holati (-1) so'nggi belgilangan vertex). Biroq, hamma dasturiy ta'minot ham so'nggi yondashuvni qo'llab-quvvatlamaydi va aksincha, ba'zi bir dasturiy ta'minotlar faqat oxirgi shaklni yozadi (vertex ofsetlarini qayta hisoblash kerak bo'lmasdan elementlarni qo'shish qulayligi tufayli va hokazo), bu vaqti-vaqti bilan mos kelmaslikka olib keladi.

Materiallar shablonlari kutubxonasi

MTL material formati
Fayl nomi kengaytmasi
.mtl
Tomonidan ishlab chiqilganWavefront Technologies
Format turi3D tekstura formati

The Materiallar shablonlari kutubxonasi formati (MTL) yoki .MTL Fayl formati .OBJ formatidagi sherik fayl formati, shuningdek tomonidan belgilanadi Wavefront Technologies, bir yoki bir nechta .OBJ fayllaridagi ob'ektlarning sirt soyalanishini (moddiy) xususiyatlarini tavsiflovchi. .OBJ fayli bir yoki bir nechta .MTL fayllariga ("material kutubxonalari" deb nomlanadi) murojaat qiladi va u erdan bir yoki bir nechta moddiy tavsiflarga nomlari bo'yicha murojaat qiladi. .MTL fayllari ASCII maqsadlar uchun sirtning nurni aks ettiruvchi xususiyatlarini aniqlaydigan matn kompyuter orqali ko'rsatish, va ga ko'ra Fonni aks ettirish modeli. Standart turli xil kompyuter dasturlari to'plamlari orasida keng qo'llab-quvvatlanadi va bu materiallarni almashish uchun foydali formatga aylantiradi.

MTL formati, hanuzgacha keng qo'llanilgan bo'lsa-da, eskirgan va spekulyativ xaritalar va keyingi texnologiyalarni to'liq qo'llab-quvvatlamaydi parallaks xaritalari. Biroq, formatning ochiq va intuitiv xarakteri tufayli, ularni maxsus MTL fayl generatori bilan osongina qo'shish mumkin.

MTL formati bir qator formatlarni belgilaydi.[2][3]

Asosiy materiallar

Bitta .mtl fayl bir nechta materialni belgilashi mumkin. Faylda materiallar birin ketin belgilanadi, ularning har biri newmtl buyruq:

# "Colored'newmtl Colored" nomli materialni aniqlang

The atrof-muhit yordamida materialning rangi e'lon qilinadi Ka. Rang ta'riflari RGB-da, har bir kanalning qiymati 0 dan 1 gacha.

# oqKa 1.000 1.000 1.000

Xuddi shunday, tarqoq rang yordamida e'lon qilinadi Kd.

# oqKd 1.000 1.000 1.000

The ko'zoynakli rang yordamida e'lon qilinadi Ksva yordamida tortilgan ko'zoynakli ko'rsatkich Ns.

# qora (yopiq) Ks 0.000 0.000 0.000 # 0 dan 1000Ns 10.000 gacha

Materiallar bo'lishi mumkin shaffof. Bu borliq deb ataladi eritilgan. Haqiqiy shaffoflikdan farqli o'laroq, natija ob'ektning qalinligiga bog'liq emas. "D" uchun 1.0 qiymati odatiy hisoblanadi va "Tr" uchun 0.0 qiymati ham to'liq shaffof emas degan ma'noni anglatadi. Eritish barcha yorug'lik modellarida ishlaydi.

# ba'zi dasturlarda 'd'd 0,9 ishlatiladi, boshqalari' Tr 'dan foydalaniladi (teskari: Tr = 1 - d) Tr 0,1

Shaffof materiallar qo'shimcha ravishda "Tf" bilan ko'rsatilgan Transmissiya filtri rangiga ega bo'lishi mumkin.

# Transmissiya filtrining rangi (RGB yordamida) Tf 1.0 0.5 0.5 # transmissiya filtrining rangi (CIEXYZ yordamida) - y va z qiymatlari ixtiyoriy va agar qo'yib yuborilgan bo'lsa x ga teng deb qabul qilinadiTf xyz 1.0 0.5 0.5 # uzatish filtri rangi spektral egri fayldan (emas) odatda ishlatiladi) Tf spektral  .rfl 

Materiallar, shuningdek, uning yuzasi uchun optik zichlikka ega bo'lishi mumkin. Bu shuningdek ma'lum sinish ko'rsatkichi.

# optik zichlikNi 1.45000

Qiymatlar 0,001 dan 10 gacha bo'lishi mumkin. 1,0 qiymati yorug'lik ob'ektdan o'tayotganda egilmasligini anglatadi. Optik zichlikni oshirish egilish miqdorini oshiradi. Shishaning sinishi indeksi taxminan 1,5 ga teng. 1,0 dan kam qiymatlar g'alati natijalarga olib keladi va tavsiya etilmaydi.[4]

Bir nechta yoritish modellari har bir material uchun mavjud. Shuni ta'kidlash kerakki, shaffoflikni "d" yoki "Tr" bilan ta'minlash uchun shaffof yoritish modelini o'rnatish talab qilinmaydi va zamonaviy foydalanishda xatto shaffof materiallar bilan ham nurli modellar ko'rsatilmaydi. Illyum modellari quyidagicha sanab o'tilgan:

0. Rang yoqilgan va Ambient o'chirilgan1. Rang yoqilgan va tashqi muhit2. 3. belgilang. Yansıtma va Ray izi4. Shaffoflik: Shisha yoqilgan, ko'zgu: Rey izi5. Ko'zgu: Frenel va Rey izi6. Shaffoflik: Refraktsiya, aks ettirish: Fresnel off va Ray iz on7. Shaffoflik: Refraktsiya, aks ettirish: Frenel yoqilgan va Rey izi8. Yansıtma va Rey izi9. Shaffoflik: Shisha yoqilgan, aks ettirilgan: Ray izi10. Ko'rinmaydigan sirtlarga soyalarni tashlaydi
illum 2

To'qimalarning xaritalari

Teksturali materiallar yuqoridagi kabi xususiyatlardan foydalanadi va qo'shimcha ravishda belgilaydi xaritalar. Quyida keng tarqalgan material faylining namunasi keltirilgan. Qo'shimcha ma'lumot olish uchun to'liq to'lqinli fayl formati ma'lumotnomasini ko'ring.

newmtl Textured Ka 1.000 1.000 1.000 Kd 1.000 1.000 1.000 Ks 0.000 0.000 0.000 d 1.0 illum 2 # atrof-muhit xaritasi xaritasi_Ka lemur.tga # diffuz tekstura xaritasi (ko'pincha, # atrof-muhit to'qimalarining xaritasi bilan bir xil bo'ladi) map_Kd lemur.tga # specular color texture map map_Ks lemur.tga # specular ta'kidlash komponenti map_Ns lemur_spec.tga # alfa texture map map_d lemur_alpha.tga # ba'zi bir qo'llanmalar map_bump lemur_bump.tga # bump xaritasi ostidagi "bump" o'rniga "map_bump" dan foydalanadi (bu sukut bo'yicha tasvirning nurlanish kanalidan foydalanadi) bump lemur_bump.tga # displacement map disp lemur_disp.tga # stencil decal texture (sukut bo'yicha "mat" kanaliga rasm) lemur_stencil.tga decal

To'qimalarning xaritasi parametrlari parametr parametrlariga ham ega bo'lishi mumkin (qarang to'liq xususiyatlar ).

   # tekstura kelib chiqishi (1,1,1) map_Ka -o 1 1 1 ambient.tga # sharsimon akslantirish xaritasi refl -tip sharlari bulutlari.tga

To'qimalarining variantlari

-blendu on | off # gorizontal teksturani aralashtirishni sozlang (standart yoqilgan) -blendv on | o'chirish # vertikal teksturani aralashtirish (sukut bo'yicha yoqilgan) -boot float_value # boost mip-map aniqligi-mm base_value gain_value # faktura xaritasi qiymatlarini o'zgartirish (standart 0 1) # base_value = nashrida, gain_value = kontrast-u u [v [w]] # Origin ofset (default 0 0 0) -su [v [w]] # Scale (default 1 1 1) -tu [v [w]] # Turbulence (default 0 0 0) -texres piksellar sonini yaratish uchun # tekstura o'lchamlari- qisqich | off # faqat siqilgan 0-1 oralig'ida tekstlarni ko'rsatadi (standart o'chirilgan) # Qoplamagan holda, tekstura sirt bo'ylab takrorlanadi, # mahkamlanganda faqat 0-1 # oralig'iga kiradigan tekstlar ko'rsatiladi.-bm mult_value # bump multiplikator (faqat zararli xaritalar uchun) -imfchan r | g | b | m | l | z # faylning qaysi kanalidan skalar yoki zarbali tekstura yaratish uchun # foydalanilishini aniqlaydi. r: qizil, g: yashil, # b: ko'k, m: mat, l: yorqinlik, z: z-chuqurlik .. # (zarba uchun sukut 'l' va dekal uchun 'm')

Masalan,

# bumpmap.tga ning qizil kanalini bumpmapbump -imfchan r bumpmap.tga sifatida ishlatishni aytmoqda

Uchun aks ettirish xaritalari...

-type shar # "refl" aks ettirish xaritasi uchun sferani belgilaydi -tyube cube_top | cube_bottom | # kub xaritasidan foydalanganda, har bir cube_front uchun tekstura fayli | cube_back | Kubning # tomoni alohida ko'rsatilgan cube_left | cube_right

Sotuvchiga xos o'zgartirishlar

Fayllarni ajratish osonligi va fayl formatining norasmiy ravishda tarqalishi sababli, fayllar sotuvchiga xos o'zgarishlarni o'z ichiga olishi mumkin.

Xususiyatlarga ko'ra, variantlar faktura fayl nomidan oldin bo'lishi kerak. Biroq, kamida bitta sotuvchi oxirida variantlari bo'lgan fayllarni yaratadi.

0.2bumpning # bump multiplikatori texbump.tga -bm 0.2

Jismoniy asoslangan Rendering

Onlayn 3D tahrirlash va modellashtirish vositasi yaratuvchilari, Clara.io, taqdim etish uchun quyidagi parametrlarni o'z ichiga olgan MTL formatini kengaytirishni taklif qildi jismoniy asoslangan renderlash parametrlari:[5]

Pr / map_Pr # pürüzlülükPm / map_Pm # metallicPs / map_Ps # sheenPc # shaffof qatlam qalinligiPcr # shaffof qatlam pürüzlülüğüKe / map_Ke # emissiveaniso # anisotropyanisor # anisotropy aylanishnorm # normal map, "bump" parametri bilan bir xil format

Keyingi taklif qilingan kengaytmalar DirectXMesh uchun vositalar to'plamidan keladi Microsoft "s DirectX model, oldindan tayyorlangan RMA materialini aniqlash imkoniyatini beruvchi dvigatel.[6]

map_RMA # RMA materiali (pürüzlülük, metalllik, atrof-muhit tiqilishi) map_ORM # map_RMA ning muqobil ta'rifi

Shuningdek qarang

Adabiyotlar

  1. ^ "Qanday qilib vertikal rang ma'lumotlarini .OBJ fayllariga qo'shish mumkin?". O'yinni rivojlantirish stack Exchange. Olingan 2014-10-08.
  2. ^ "MTL fayllari - OBJ fayllari uchun muhim ta'riflar". People.sc.fsu.edu. 2004-06-14. Olingan 2010-11-26.
  3. ^ "Wavefront .mtl formatidagi ma'lumot - GRIPES va GRUMBLES - Wings - Wings3D - Rasmiy rivojlanish forumi - Xabar paneli". Nendowingsmirai.yuku.com. Olingan 2010-11-26.
  4. ^ Ramey, Diane (1995). "MTL material formati (Lightwave, OBJ)". Alias-Wavefront, Inc. Olingan 17 may, 2020.
  5. ^ "Exocortex | Jismoniy asosda taqdim etish uchun Wavefront MTL-ni kengaytirish". exocortex.com.
  6. ^ "OBJ MTL-da RMA to'qimasini aniqlash qobiliyati. MattFiler tomonidan · Pull Request # 39 · microsoft / DirectXMesh". GitHub.

Tashqi havolalar