3D Model Formatları · OBJ · MTL Sistemi
Material Bağlantısı: mtllib, usemtl ve Face
Ataması
«.mtl dolu, model yine tek gri» çoğu zaman kart veya map hatası
değil; OBJ tarafında katalogun hiç bağlanmaması veya usemtl isim
kaymasıdır.
Texture
Referansları yolları sabitledi; MTL Sistemi'nin son sorusu:
hangi dosya hangi face grubuna hangi kartı takar?
Holodepth'te bağlantı katmanı iki OBJ satır ailesidir: mtllib
kataloğu gösterir, usemtl o andan itibaren gelen face'lere aktif
materyal adını yapıştırır. Kart içeriği
Materyal
Dosyası'nda; path string
Texture Referansları'nda kalır. glTF'deki
primitive.material indeksi
Material Slots (glTF)'ta; bu sayfa Wavefront'un
isim + yapışkan durum modelini anlatır.
Sayfayı bitirdiğinizde şu cümleyi kurabilmelisiniz: «mtllib .mtl yolunu OBJ'ye gömülü referanslar; usemtl aktif kart adını sticky state yapar. Sonraki f satırları o adı taşır ta ki yeni usemtl gelene kadar. İsim newmtl ile birebir (çoğu loader case-sensitive) eşleşmelidir. Bağlantı yoksa gri varsayılan. glTF'ye çeviride isimler materials[] indeksine map edilir.»
Bu sayfanın sınırı · komşu konularla ayrım
Bu sayfa OBJ↔MTL bağlantı sözleşmesini anlatır:
mtllibkatalog referansıusemtlsticky atama- İsim eşleşmesi ve çoklu geçiş
o/gile ilişki- Eksik bağlantı / fallback
- Holodepth teşhis açıları
Bilinçli olarak dışarıda bırakılan konular:
newmtl, Ka/Kd/illum → Materyal Dosyasımap_*yol çözümleme → Texture Referanslarıftopoloji → Face Tanımları- glTF material index / slots → Material Slots
- Draw call birleştirme → Three.js optimizasyon
Kısa ayrım: Material Bağlantısı «kim kime bağlanır?» · Materyal Dosyası «kartta ne yazar?» · MaterialSlots (glTF) «hangi indeks?»
Yapışkan fırça: aktif materyal durumu
OBJ parse'ı bir durum makinesi gibi ilerler. usemtl RedPaint
fırçayı kırmızıya batırır; sonraki her f o boyayla boyanır.
Yeni usemtl gelene kadar durum değişmez. Face satırının kendisinde
materyal alanı yoktur; atama sıraya bağlıdır.
glTF her primitive'e sabit indeks yazar. OBJ «şu andan itibaren şu isim» der. Kaydırılmış usemtl = yanlış yüzeye yanlış kart; sessiz ve sık.
mtllib: kataloğu göstermek
# model.obj
mtllib materials.mtl
# veya
mtllib mats/surfaces.mtl
mtllib bir veya daha fazla .mtl dosya yolunu bildirir. Göreli
path çoğu loader'da .obj dosyasının dizinine göredir
(map_* çözümlemesinin .mtl köküne göre olmasıyla karıştırmayın —
Texture Referansları · çözümleme).
- Dosyanın başında veya geometriden önce gelmesi yaygın pratiktir
- Birden fazla
mtllibbazı araçlarda birleşik katalog üretir - mtllib yoksa usemtl isimleri çözülemez → gri / varsayılan
usemtl: isimle kart seçmek
mtllib materials.mtl
o Body
usemtl CarPaint
f 1 2 3
f 1 3 4
usemtl Rubber
f 5 6 7
# 1–4 → CarPaint; 5–7 → Rubber
İsim, .mtl içindeki bir newmtl ile eşleşmelidir. Eşleşme yoksa
loader davranışı: uyarı + varsayılan, veya önceki sticky'yi sürdürme.
Holodepth: export sonrası usemtl kümesi ⊆ newmtl
kümesi kontrolü CI'ya konur.
İsim disiplini: boşluk, büyük/küçük harf
usemtl Body Red vs newmtl BodyRed veya
Body vs body klasik sessiz kırılmalardır. Windows
dosya sistemi map path'te affedici olabilir; materyal adı string
karşılaştırması loader koduna bağlıdır ve sıkı case-sensitive olabilir.
Boşluklu isimler geçerlidir ama kırılgandır; Holodepth üretimde
PascalCase veya snake_case, boşluksuz isim önerir.
Materyal Dosyası'ndaki isim benzersizliği burada pratik karşılığını bulur.
Sıra tuzakları: usemtl'siz face, geç mtllib
- İlk face'lerden önce usemtl yok: varsayılan materyal; sonradan usemtl yalnızca sonrasını boyar.
- mtllib face'lerden sonra: bazı loader'lar yine yükler; bazıları katalogsuz parse eder. Başta tutun.
- Çok sık usemtl: her üçgende değişim geçerli ama draw / gruplama pahalı; export araçları batch'ler.
Face topolojisi Face Tanımları · obje/materyal üst seviye değinmişti; burada sticky kural tam derinleşir.
o / g ile usemtl:
iki eksen
Obje/grup adı mantıksal mesh bölmesidir; usemtl yüzey kartıdır. Aynı
o Wheel içinde iki usemtl (lastik / jant) yaygındır.
Tersi: farklı o'lar aynı usemtl'i paylaşabilir (ortak boya).
Runtime'da obje başına mesh ayırma o/g'den;
materyal gruplama usemtl sınırlarından türetilir. İkisini tek anahtar sanmak
import bug'ıdır (
Vertex Listesi · o/g).
Çoklu mtllib ve isim çakışması
mtllib shared.mtl
mtllib local.mtl
usemtl SharedChrome
# shared.mtl ve local.mtl ikisinde de SharedChrome varsa → son yüklenen / birleşim kuralı belirsiz
Holodepth: mümkünse tek .mtl; çoklu kütüphanede isim alanını önekleyin
(shared_Chrome). Web loader matrisi burada tutarsızdır.
OBJ isim → glTF indeks (köprü)
Dönüştürücü her benzersiz usemtl/newmtl çiftini bir
materials[i] kaydına çevirir; face gruplarını aynı materyalli
primitive'lere böler. Sticky sıra, indeksli slota flatten edilir. Slot
semantiği
Material Slots'ta; Phong→PBR yaklaşık eşleme
PBR Yapısı'nda kalır.
Holodepth perspektifleri
Yetim usemtl
OBJ'de usemtl Ghost var, .mtl'de newmtl yok → gri yüz.
Tersi (ölü newmtl) yalnızca şişkin katalog; görünür bug değil.
mtllib 404
CDN'de .obj 200, .mtl 404: tüm usemtl çözülemez. Network sekmesinde iki istek bekleyin; tek istek yetmez.
Birleştirme script'i
İki OBJ birleştirilirken usemtl blokları kaydırılırsa materyal kayması oluşur. Birleştirmeden sonra usemtl sınırlarını ve mtllib yollarını yeniden doğrulayın.
Bağlantı teşhis yürüyüşü
- OBJ'de
mtllibvar mı, dosya 200 mü? - Her
usemtliçin matchingnewmtlvar mı? - Case / boşluk diff temiz mi?
- İlk face'ten önce usemtl var mı?
- Beklenen yüzey sınırlarında usemtl değişiyor mu?
- map path'ler ayrıca yeşil mi? (texture sayfası)
- glTF export'ta materials.length beklenen kart sayısı mı?
Holodepth içgörüsü
Gri plastik üç kapıdan biridir: mtllib yok, usemtl≠newmtl, map 404. Sırayla bağlantı → isim → path. Ortadan (Kd) başlamak zaman kaybıdır.
MTL Sistemi kapanır; sıradaki OBJ dalları
Üç MTL sorusu tamam: kart → path → bağlantı. Temel Yapı + MTL ile OBJ'nin «okunabilir mesh + yüzey» omurgası kuruldu. Sıradaki Holodepth OBJ grupları:
- Limitleri animasyon yok, skeleton yok, PBR yok, büyük dosya
- Kullanım Alanları CAD, scan, statik mesh
- Import / Export Köprüsü ve OBJ vs glTF
Format okuyucusu özeti: mtllib kataloğu gösterir; usemtl sticky boyadır; isim eşleşmesi şarttır. o/g ≠ materyal. glTF'de bağlantı indekse dönüşür. MTL Sistemi burada kapanır.