3D Model Formatları · OBJ · MTL Sistemi
Texture Referansları: MTL'de map_*
Yolları
«Kd kırmızı, sahne yine beyaz / kayık» çoğu zaman renk alanı değil;
kırık map_Kd yolu veya ZIP'te unutulan textures/
klasörüdür.
Materyal
Dosyası kartı açtı; bu sayfa kartın doku eklerine geçer:
hangi satır hangi görüntü dosyasını işaret eder?
Holodepth'te MTL texture referansı, glTF'deki
texture → image → sampler zinciri değildir. Tek satırlık bir
dosya yolu sözleşmesidir: map_Kd wood.png. UV adresi
hâlâ vt'dedir (
UV Verileri); bu sayfa yolu, göreli çözümlemeyi,
yaygın map_* ailelerini ve seçenek bayraklarını anlatır. Face'e
hangi kartın takılacağı
Material Bağlantısı'nda; glTF images/textures
Texture References (glTF)'te kalır.
Sayfayı bitirdiğinizde şu cümleyi kurabilmelisiniz: «map_* satırı .mtl kartına göreli (veya mutlak) görüntü yolu yazar. Çözümleme çoğu zaman .mtl dosyasının dizinine göredir; OBJ'ye değil. map_Kd albedo, map_Bump/bump normal veya height niyeti taşır; vt yoksa doku örneklenemez. Seçenekler (-o, -s) ofset/ölçek ekler. usemtl bağlantısı ayrıdır; PBR kanal semantiği glTF'dedir.»
Bu sayfanın sınırı · komşu konularla ayrım
Bu sayfa MTL doku yolu sözleşmesini anlatır:
map_*satır aileleri- Göreli / mutlak yol çözümlemesi
- Seçenek bayrakları (-o, -s, …) üst seviye
- Taşıma, ZIP, büyük/küçük harf tuzakları
- map ile vt / Kd ilişkisi (sınır)
- Holodepth teşhis açıları
Bilinçli olarak dışarıda bırakılan konular:
newmtl, Ka/Kd/Ks/Ns/illum → Materyal Dosyasımtllib,usemtl→ Material Bağlantısıvt, V-flip, seam → UV Verileri- glTF textureInfo / images / sampler → Texture References (glTF)
- KTX2 / BasisU → glTF Uzantılar
- Shader'da normal map hesabı → Three.js Normal Map
Kısa ayrım: Texture Referansları (OBJ) «map satırında hangi path?» · UV Verileri «hangi (u,v)?» · glTF Texture References «index zinciri nedir?»
Raf etiketi: path string, gömülü binary değil
Zihin modeli: kütüphane fişi
- map_Kd satırı = raftaki kitabın kodu (yol metni).
- PNG/JPEG dosyası = kitabın kendisi (ayrı dosya).
- vt = kitaptan hangi sayfa/koordinat okunacak.
- Fiş doğru, kitap rafta yok → beyaz / magenta / kayıp doku.
GLB gömülü image veya bufferView ile dokuyu pakete alabilir; klasik MTL harici dosyaya işaret eder. Bu yüzden «tek .mtl e-posta eki» yetmez: yanındaki görüntü ağacı zorunludur. Holodepth dağıtımında OBJ+MTL paketi klasör sözleşmesidir; GLB bu kırılganlığı azaltır ( GLB vs glTF ile aynı ailede düşünün).
Yaygın map_* aileleri
newmtl Crate
Kd 1 1 1
map_Kd textures/crate_diff.png
map_Ks textures/crate_spec.png
map_Bump textures/crate_nrm.png
map_d textures/crate_opacity.png
Kart içinde (Materyal Dosyası'ndaki newmtl bloğunda) görülen
tipik satırlar:
map_Kddiffuse / albedo görüntüsü (en sık)map_Kaambient map (web'de nadiren kullanılır)map_Ksspecular mapmap_Nsexponent / roughness-benzeri niyet (araç yorumu değişir)map_d/map_Tropacity / dissolve dokusumap_Bump/bumpbump veya normal niyeti (aşağıda)reflreflection map (offline; web'de seyrek)
Aynı kartta birden fazla map geçerlidir. Hangisinin shader'da bağlanacağı loader matrisidir; format yalnızca yolları listeler. PBR baseColor/metallicRoughness/occlusion ayrımı glTF materyal dilindedir.
Yol çözümleme yürüyüşü
Holodepth'in en sık atlanan kuralı: göreli path çoğu araçta
.mtl dosyasının bulunduğu dizine göredir; .obj'nin
dizinine değil. mtllib başka klasördeki .mtl'yi gösteriyorsa
map'ler o .mtl'nin yanında aranır.
- map satırındaki string'i oku (
textures/a.png). - Mutlak yol mu? (
/var/…,C:\…,https://…) → doğrudan dene; taşınabilirlik zayıf. - Göreli ise .mtl dizinini kök al, birleştir.
- Dosya yoksa 404 / loader uyarısı; Kd yedeğine düşülebilir.
project/
model.obj
mats/
surfaces.mtl ← map_Kd textures/wood.png
textures/
wood.png ← mats/textures/wood.png (mtl'ye göre)
Yanlış varsayım: «OBJ ile aynı klasörde textures/». Yukarıdaki düzende
project/textures/ aramak kırık yoldur.
Seçenek bayrakları: -o, -s ve arkadaşları
map_Kd -s 2 2 1 -o 0.1 0 0 textures/tile.png
# -s scale, -o offset (u v w); loader desteği değişken
MTL, path'ten önce seçenek token'larına izin verir. Yaygın olanlar:
-o (offset), -s (scale), -t
(turbulence), -blendu / -blendv,
-mm (brightness/contrast). Web loader'ların çoğu bu
seçenekleri yok sayar; tiling'i UV veya shader'da bekler.
Holodepth üretim kuralı: web hedefinde map satırını sade tutun
(map_Kd path); ofset/ölçek varsa vt veya runtime material'a
taşıyın. Offline DCC seçeneklerini «web'e aynen gelecek» sanmayın.
bump / map_Bump:
niyet belirsizliği
Aynı satır ailesi bazen yükseklik (grayscale bump), bazen tangent-space normal map taşır. Format «bu PNG normal midir?» diye etiketlemez; dosya adı veya DCC export seçeneği niyeti taşır. Yanlış yorum: renkli normal map'i bump height gibi işlemek veya tersi.
Geometri vn listesi shading yönüdür (
Normal Verileri); bump/normal map mikro
ayrıntı katmanıdır. İkisini karıştırmayın. glTF'de normalTexture +
TANGENT ayrı sözleşmedir.
map var, vt yok: örnekleme yapılamaz
Geçerli map_Kd + eksik vt / face'te UV bileşeni =
loader genelde (0,0) veya düz renk. «Doku yüklendi» Network'te 200 görünür;
mesh tek texel'e yapışır. Teşhis: önce UV Verileri, sonra path.
Tersi: zengin vt + kırık map yolu = Network 404, Kd yedek rengi. UV sayfasındaki «adres zarfı / mektup» ayrımı burada pratikleşir.
Taşınabilirlik: harf, boşluk, mutlak yol
- Windows → Linux CDN:
Wood.PNGvswood.pngkırılması - Boşluklu dosya adı: tırnak veya kaçış; bazı parser'lar kırılır — tire/alt çizgi tercih edin
- Mutlak masaüstü yolu:
C:\Users\…\tex.pngbaşkasının makinesinde ölür - Ters / düz slash: web'de
/standartlaştırın - ZIP handoff: .mtl var, textures/ yok → klasik beyaz model
Holodepth paket checklist: .obj + .mtl + map satırlarındaki her path'in dosya olarak varlığı. Validator yoksa basit script ile map satırlarını parse edip fs.exists kontrolü yapın.
OBJ path vs glTF texture zinciri (köprü)
Dönüştürücü map_Kd yolunu okur, görüntüyü glTF
images[]'e (URI veya bufferView) yazar, texture + material
slot'una bağlar. Sampler (wrap/filter) MTL'de sınırlıdır; glTF'de ayrı
kayıttır. Derin zincir
glTF Texture References'ta; burada yalnızca
«kaynak dil path string, hedef dil indeks grafı» notu yeter.
Holodepth perspektifleri
Kd × map çarpımı
Bazı loader'lar albedo'yu Kd * texture yapar. Kd (1,1,1) değilse
doku kararır. Export'ta map varken Kd'yi nötr tutmak güvenli pratiktir (
Materyal Dosyası · Kd vs map).
Paylaşılan PNG
İki newmtl aynı map_Kd shared.png'ye bakabilir; diskte tek
dosya, iki kart. glTF'de aynı image indeksi paylaşımına benzer; OBJ'de
string tekrarıdır.
HTTP(S) map yolu
Nadir exporter mutlak URL yazar. CORS ve offline paket kırılır; üretimde göreli path zorunlu kılın.
Path teşhis yürüyüşü
- map satırı var mı, yoksa yalnızca Kd mi?
- Path .mtl dizinine göre çözülünce dosya var mı?
- Harf / boşluk / slash uyumu?
- Seçenek bayrakları web loader'da yok sayılıyor mu?
- İlgili face'lerde vt bileşeni var mı?
- Network 200 ama tek renk → UV veya Kd çarpımı?
- glTF export sonrası images[] dolu mu?
Holodepth içgörüsü
Beyaz model + «materyal bağlı» raporunda DevTools'ta PNG isteğine bakın. 404 ise path/.mtl kökü; 200 ise vt veya Kd çarpımı. map satırını okumadan shader'a inmeyin.
Yol yazıldı; sırada face'e bağlama
Kart ve map path'leri hazır. MTL Sistemi'nin son adımı OBJ tarafındaki atamadır:
Material Bağlantısı
mtllib ile kataloğu, usemtl ile face gruplarını
bağlar.
Format okuyucusu özeti: map_* = .mtl'ye göreli path string; vt adrestir, PNG mektuptur. Seçenekler web'de kırılgan; bump niyeti belirsizdir. ZIP'te textures/ unutulması klasik beyaz modeldir.