holodepth

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:

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_Kd diffuse / albedo görüntüsü (en sık)
  • map_Ka ambient map (web'de nadiren kullanılır)
  • map_Ks specular map
  • map_Ns exponent / roughness-benzeri niyet (araç yorumu değişir)
  • map_d / map_Tr opacity / dissolve dokusu
  • map_Bump / bump bump veya normal niyeti (aşağıda)
  • refl reflection 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.

  1. map satırındaki string'i oku (textures/a.png).
  2. Mutlak yol mu? (/var/…, C:\…, https://…) → doğrudan dene; taşınabilirlik zayıf.
  3. Göreli ise .mtl dizinini kök al, birleştir.
  4. 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.PNG vs wood.png kı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.png baş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üşü

  1. map satırı var mı, yoksa yalnızca Kd mi?
  2. Path .mtl dizinine göre çözülünce dosya var mı?
  3. Harf / boşluk / slash uyumu?
  4. Seçenek bayrakları web loader'da yok sayılıyor mu?
  5. İlgili face'lerde vt bileşeni var mı?
  6. Network 200 ama tek renk → UV veya Kd çarpımı?
  7. 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.