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ü
newmtlblok başlangıcı- Renk / skaler alan aileleri (Ka, Kd, Ks, Ns, …)
illummodeli (format seviyesi)- Çok kartlı dosya, isim, yorum
- Holodepth teşhis açıları
Bilinçli olarak dışarıda bırakılan konular:
map_Kd,map_Bump, URI seçenekleri → Texture Referanslarımtllib,usemtl, face ataması → Material Bağlantısıvtadres havuzu → UV Verileri- glTF materials[], pbrMetallicRoughness → PBR Yapısı, Material Slots
- «PBR Yok» limit anlatımı → Limitleri grubu
- Three.js MeshPhongMaterial eşlemesi → runtime
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 1opak;d 0görünmez.Trbazı exporter'larda1 - danlamı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)
- .mtl dosyası diskte / CDN'de erişilebilir mi?
- En az bir
newmtlvar mı? - İsimler benzersiz ve usemtl ile uyumlu mu? (bağlantı sayfası)
- Kd 0…1 aralığında mı?
- d/Tr çakışması var mı?
- illum web için kritik mi, yoksa süs mü?
- 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ı:
- Texture Referansları
texture-references.html:
map_Kdve ailesi - 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.