holodepth

3D Model Formatları · OBJ · MTL Sistemi

Materyal Dosyası: .mtl Kataloğu ve newmtl Kartları

«OBJ açıldı, her şey gri plastik» çoğu zaman eksik geometri değil; .mtl kartlarının okunmaması veya boş katalogdur. UV Verileri ile Temel Yapı kapandı; MTL Sistemi'nin ilk sorusu: materyal tarifleri dosyada nasıl bloklanır?

Holodepth'te .mtl, OBJ mesh'inin yanında yaşayan isimli yüzey tarif kataloğudur. Her newmtl bir kart açar; Kd, Ks, Ns, illum gibi alanlar o kartın Phong-benzeri tarifini yazar. Hangi face'in hangi kartı takacağı usemtl ile Material Bağlantısı'nda; hangi PNG'nin yükleneceği Texture Referansları'nda kalır. glTF PBR metallic-roughness modeli PBR Yapısı (glTF)'ndadır; bu sayfa Wavefront klasik kart dilini anlatır.

Sayfayı bitirdiğinizde şu cümleyi kurabilmelisiniz: «.mtl = newmtl ile açılan isimli kart kataloğudur. Ka/Kd/Ks renk, Ns parlaklık, d/Tr saydamlık, illum aydınlatma modeli seçimidir. map_* satırları kartın doku ekidir; bu sayfada yalnızca kartın varlığı ve skaler/renk alanları sabittir. PBR değildir; web loader çoğu alanı yaklaşık okur. usemtl bağlantısı ayrı sayfadadır.»

Bu sayfanın sınırı · komşu konularla ayrım

Bu sayfa .mtl dosya sözleşmesini anlatır:

  • Katalog olarak .mtl rolü
  • newmtl blok başlangıcı
  • Renk / skaler alan aileleri (Ka, Kd, Ks, Ns, …)
  • illum modeli (format seviyesi)
  • Çok kartlı dosya, isim, yorum
  • Holodepth teşhis açıları

Bilinçli olarak dışarıda bırakılan konular:

Kısa ayrım: Materyal Dosyası «kartta ne yazıyor?» · Texture Referansları «map_* hangi dosya?» · Material Bağlantısı «hangi face hangi kart?»

.mtl bir sahne değil, kart kataloğudur

OBJ geometriyi taşır; .mtl yüzey tarifini taşır. İkisi ayrı dosyadır çünkü aynı mesh farklı boya setleriyle yeniden kullanılabilir (veya tersi: aynı katalog birden çok OBJ'ye referans verebilir). Holodepth zihin modeli: restoran menüsü. OBJ sipariş fişidir («şu masaya şu yemek»); .mtl menü kitabıdır (yemeklerin tarif adı ve malzemeleri). Fiş olmadan menü yetmez; menü olmadan fiş «adsız tabak»tır.

Geometri «şekil», MTL «yüzey niyeti»dir. Niyet Phong dilindedir; modern PBR değildir. Web'de gri plastik çoğu zaman menünün hiç açılmamasıdır.

newmtl: kartın kapısı

# materials.mtl
newmtl RedPaint
Ka 0.1 0.0 0.0
Kd 0.8 0.05 0.05
Ks 0.3 0.3 0.3
Ns 40
illum 2

newmtl MatteRubber
Kd 0.2 0.2 0.2
Ks 0.0 0.0 0.0
Ns 5
illum 1

newmtl Name yeni bir materyal bloğu başlatır; sonraki satırlar o isme aittir. Yeni newmtl gelene kadar alanlar birikir. İsim boşluksuz veya boşluklu olabilir; pratikte boşluksuz ve ASCII tercih edilir. Aynı isimde ikinci newmtl çoğu loader'da önceki kartı ezer veya belirsizdir; Holodepth: isimleri dosya içinde benzersiz tutun.

Boş kart (newmtl X ve hemen sonraki newmtl Y) geçerlidir; varsayılan renkler loader'a kalır. Katalogda «isim var, tarif yok» durumu budur.

Alan aileleri: renk, parlaklık, saydamlık

Klasik MTL Phong-benzeri bir dil kullanır. Aşağıdaki aileler kart içeriğidir; her satırın render formülü motorlara göre değişir.

Ka r g b
Ambient renk. Birçok gerçek zamanlı viewer ambient'i yok sayar veya sahne ambient'iyle çarpar.
Kd r g b
Diffuse / albedo niyeti. map_Kd yoksa yüzey rengi buradadır; map varsa öncelik Texture Referansları sayfasındadır.
Ks r g b
Specular renk. Plastik highlight rengi; PBR'daki «metalness» değildir.
Ns n
Specular exponent (parlaklık sertliği). Yüksek Ns = küçük keskin highlight. Aralık araçlara göre 0…1000 civarıdır.
d / Tr
Dissolve / transparency. d 1 opak; d 0 görünmez. Tr bazı exporter'larda 1 - d anlamındadır; karışıklık sık bug kaynağıdır.
Ni n
Optical density (IOR). Şeffaf cam niyeti; çoğu web OBJ loader kullanmaz.
Tf r g b
Transmission filter. Nadir; şeffaflık rengi.

Renk bileşenleri tipik olarak 0…1 float'tır. Bazı eski araçlar 0…255 yazar; parser 1'den büyük değer görünce normalize etmeyebilir. Holodepth teşhisi: Kd > 1 ise «yanlış ölçek» şüphesi.

illum: aydınlatma modeli seçicisi

illum tamsayısı, kartın «hangi Phong varyantı?» sorusuna format cevabıdır. Yaygın değerler (özet; tam tablo araç dokümanlarına göre değişir):

  • 0 / 1: renk, specular kapalı veya minimal
  • 2: highlight açık (Ka+Kd+Ks)
  • 3+ : reflection / raytrace niyetleri (offline DCC; web'de çoğu zaman yok sayılır)

Holodepth web gerçeği: birçok OBJLoader illum'u kısmen veya hiç okumaz; Kd/Ks/Ns yeterlidir. Yine de dosyada illum bırakmak offline tutarlılık ve DCC round-trip için değerlidir. «illum 3 yazdım, web'de ayna olmadı» beklenen kayıptır; Limitleri · PBR Yok / özellik boşluğu ile aynı ailededir.

Çok kartlı katalog ve isim disiplini

Tek .mtl içinde onlarca newmtl normaldir. İsimler usemtl satırlarıyla birebir eşleşmelidir (büyük/küçük harf duyarlılığı loader'a göre değişir). Holodepth: export sonrası isim listesini OBJ'deki usemtl kümesiyle diff edin; «Body» vs «body» sessiz gri yüz üretir.

Kullanılmayan kartlar (hiç usemtl edilmeyen newmtl) dosyayı şişirir ama geometriyi bozmaz. Temizlik CI'sı «ölü kart» uyarısı verebilir; zorunlu değildir.

Skaler renk vs map_* (sınır çizgisi)

Kartta hem Kd 1 0 0 hem map_Kd albedo.png olabilir. Hangisinin kazanacağı runtime politikasıdır; çoğu viewer dokuyu önceler, Kd'yi çarpan veya yedek yapar. Bu sayfa yalnızca şunu sabitler: renk alanı ve map satırı aynı kartta yan yana durabilir; map sözdizimi, -o/-s seçenekleri ve göreli yol Texture Referansları'ndadır.

newmtl Wood
Kd 0.6 0.4 0.2
map_Kd textures/wood.png
# Kd «yedek renk»; map «asıl albedo» — öncelik loader'da

Yorum, encoding ve kırılgan satırlar

# yorum satırıdır. DCC adı, birim, PBR niyeti yorumda kalabilir; parser atlar. UTF-8 materyal isimleri (Türkçe karakter) bazı eski parser'larda bozulur; web hedefinde ASCII isim güvenlidir.

  • Windows CRLF / Unix LF karışımı genelde sorun değil
  • Satır başı BOM bazı araçlarda ilk newmtl'i bozar
  • Virgül ondalık (1,5) locale tuzağı; nokta zorunlu pratik

Dürüst sınır: MTL ≠ glTF PBR

Kd ≈ albedo niyeti, Ks/Ns ≈ specular highlight; metallic-roughness, clearcoat, transmission uzantıları yoktur. Dönüştürücü OBJ+MTL → glTF'de yaklaşık eşleme yapar; sonuç «aynı PBR kartı» değildir. PBR Yapısı hedef dil, bu sayfa kaynak dil.

Holodepth önerisi: web dağıtımında nihai paket glTF olsun; .mtl ara sanat / CAD köprüsü kalsın. «MTL'yi PBR gibi kullanacağız» ürün vaadi teknik borçtur.

Holodepth perspektifleri

d vs Tr tuzağı

Aynı kartta hem d 0.5 hem Tr 0.5 yazılırsa bazı araçlar çifte saydamlık uygular (aslında 0.25 opaklığa yakın). Tek alan kullanın; diğerini silin.

Varsayılan gri

Loader .mtl bulamazsa veya newmtl eşleşmezse Mesh'e gri/varsayılan materyal verir. Teşhis sırası: dosya var mı → newmtl isimleri → usemtl eşleşmesi (bağlantı sayfası) → Kd değerleri.

Ns ölçeği

Ns 10 ile Ns 1000 aynı «parlak» kelimesini farklı motorlarda çok farklı gösterir. Referans viewer sabitleyin; sayıyı kör kopyalamayın.

Kart envanteri (teşhis listesi)

  1. .mtl dosyası diskte / CDN'de erişilebilir mi?
  2. En az bir newmtl var mı?
  3. İsimler benzersiz ve usemtl ile uyumlu mu? (bağlantı sayfası)
  4. Kd 0…1 aralığında mı?
  5. d/Tr çakışması var mı?
  6. illum web için kritik mi, yoksa süs mü?
  7. map_* satırları ayrı envanterde mi? (texture sayfası)

Holodepth içgörüsü

Gri plastik ticket'ında shader'a değil katalog kapısına bakın: .mtl yok, newmtl yok, isim uyuşmazlığı. Kart içeriği (Kd) ancak kapı açıldıktan sonra anlamlıdır.

Kart yazıldı; sırada map ve bağlantı

.mtl katalog sözleşmesi sabitlendi. MTL Sistemi'nin kalan iki adımı:

  1. Texture Referansları texture-references.html: map_Kd ve ailesi
  2. Material Bağlantısı material-linking.html: mtllib + usemtl

Format okuyucusu özeti: .mtl = newmtl kart kataloğu; Ka/Kd/Ks/Ns/d/illum Phong dilidir; PBR değildir. map_* ve usemtl sonraki sayfalarda. Web'de gri plastik çoğunlukla katalog kapısı sorunudur.