3D Model Formatları · OBJ · Temel Yapı
UV Verileri: OBJ'de vt Listesi ve
Doku Adresi
«Materyal bağlandı, doku kayık veya aynalı» çoğu zaman yanlış
map_Kd yolu değil; vt havuzu veya V ekseni
sözleşmesidir.
Normal
Verileri shading yönünü sabitledi; Temel Yapı'nın son listesi doku
adresine geçer:
her köşe doku düzleminde nereyi örnekler?
Holodepth'te OBJ UV, görüntü dosyasının kendisi değildir. Görüntü
yolu MTL'dedir; vt yalnızca (u, v) [isteğe bağlı w] adres
havuzudur. Face köşesi v/vt veya v/vt/vn ile bu
havuza bağlanır. glTF'deki çok kanallı
TEXCOORD_n ve textureInfo.texCoord köprüsü
UV Channels (glTF) sayfasındadır; bu sayfa
Wavefront'un klasik tek vt listesini ve seam / V-flip
gerçeklerini anlatır.
Sayfayı bitirdiğinizde şu cümleyi kurabilmelisiniz: «OBJ UV = 1-based vt havuzu; face köşesinde seçilir. Klasik dosyada tek liste vardır; çok set glTF/modern pipeline işidir. Seam aynı konumda farklı vt (veya duplicate v) ister. V ekseni DCC ile GPU arasında sık ters çevrilir. map_Kd yolu vt değildir; MTL Sistemi ayrıdır.»
Bu sayfanın sınırı · komşu konularla ayrım
Bu sayfa OBJ doku koordinat listesini anlatır:
vtsatır sözdizimi ve anlamı- Face'te UV seçimi (bağlantı, slash dersi değil)
- Seam, tiling, aralık dışı değerler
- V ekseni / flip sözleşmesi
- Eksik vt ve dokusuz yüz
- Temel Yapı kapanışı → MTL'ye geçiş
Bilinçli olarak dışarıda bırakılan konular:
vkonum → Vertex Listesifslash / winding → Face Tanımlarıvn/ smoothing → Normal Verilerimap_Kd,usemtl, doku yolu → MTL Sistemi- glTF
TEXCOORD_n, çoklu set, texCoord köprüsü → UV Channels (glTF) - Normal map, tangent uzayı → glTF Tangent / Three.js Normal Map
- OBJLoader UV API → Three.js
Kısa ayrım: vt (OBJ) «doku adresi metinde» · TEXCOORD (glTF) «UV attribute binary'de» · MTL map_* «hangi görüntü dosyası?»
Adres zarfı, mektup değil
Zihin modeli: posta kodu vs koli
vt= posta kodu (dokuda nereye bakılacak).- MTL
map_Kd= kolinin içindeki fotoğraf. - Face
/vt= hangi posta kodu hangi köşeye yapıştırılacak. - Yanlış kod + doğru fotoğraf = kayık doku; doğru kod + kırık yol = beyaz yüzey.
Temel Yapı dört listesi tamamlanınca mesh «şekil + ışık yönü + doku adresi»
taşır; hâlâ hangi PNG'nin yükleneceği bilinmez. Bu ayrım çoğu tutorial'da
karışır: «UV yok» sanılan dosyada aslında vt vardır ama
map_Kd 404'tür; tersi de geçerlidir. Holodepth debug sırası:
önce Network/MTL yolu, sonra vt envanteri, en son shader.
Temel Yapı kapanış zinciri (tablo değil, okuma sırası): v → f → vn → vt (bu sayfa) → MTL Sistemi.
vt satırı: u, v ve isteğe bağlı
w
vt u v
vt u v w
# Tipik [0,1]×[0,1] aralığı; tiling için >1 veya <0 da görülür
vt 0.0 0.0
vt 1.0 0.0
vt 0.5 1.0
vt 2.5 0.25
u yatay, v dikey doku eksenidir (isimlendirme
geleneği; eksen yönü aşağıda). Üçüncü bileşen w çoğu web
pipeline'ında yok sayılır veya 1.0 varsayılır; rational UV / özel CAD
export'ta anlam taşıyabilir. Holodepth: üretim OBJ'de iki bileşenli
vt tercih edin; w ≠ 1 görürseniz dönüştürücü politikasını
yazın.
Liste global ve 1-based'tir: ilk vt indeks 1. Face'te
2/5/1 demek «ikinci v, beşinci vt, birinci vn»dır;
indeks semantiği
Vertex Listesi
· indeks ile aynı ailede, ayrı havuzda yaşar.
V ekseni: DCC ile GPU arasında flip
OBJ dosyası «V'nin yukarı mı aşağı mı» olduğunu kilitlemez; pratik ekosistem
çatışması üretir. Birçok DCC UV editörü V=0'ı altta veya üstte gösterir;
OpenGL tarzı örnekleme sıkça V=0 altta kabul eder; bazı tool'lar import'ta
1 - v uygular.
| Semptom | Muhtemel kök |
|---|---|
| Yazı / logo baş aşağı | V flip bir kez fazla veya eksik |
| Sadece dikey kayma | Offset + flip karışımı |
| Blender doğru, web ters | Export vs loader flip politikası |
Holodepth kuralı: pipeline'da tek flip noktası seçin (export veya loader). Hem export'ta hem loader'da flip, iki kez ters çevirir ve «düzgün görünür» sanılıp başka projede kırılır. glTF'ye çevirirken aynı politikayı sabitleyin; kanal semantiği UV Channels'ta kalır.
Face köşesinde UV seçimi
vt 0.0 0.0
vt 1.0 0.0
vt 0.5 1.0
f 1/1 2/2 3/3
# Konum indeksi ≠ UV indeksi zorunlu değil:
f 10/1 11/2 12/3
Slash biçimlerinin tam sözlüğü
Face Tanımları · slash'tadır. Bu sayfanın
vurgusu: UV indeksi konum indeksinden bağımsızdır. Aynı
spatial köşe (aynı v) farklı yüzlerde farklı vt
alabilir; bu seam'in format dilidir.
f 1 2 3 (vt yok) dokusuz veya loader varsayılan (0,0) demektir.
Karışık dosyada bazı face'lerde vt, bazılarında yoksa «yarım dokulu» mesh
oluşur; tutarlı şablon Face sayfasındaki kısmi bileşen uyarısıyla aynı
ailededir.
Seam yürüyüşü: neden UV «köşe çoğaltır»?
Silindirin dikey dikişi tek 3D konumda iki UV adresi ister: bir yüz u=0,
komşu yüz u=1. OBJ bunu şu yollardan biri ile taşır:
- Aynı
v, face token'larında farklıvt - Duplicate
v+ her kopyaya kendivt( Vertex Listesi · tekrar)
glTF export'ta seam neredeyse her zaman köşe bölünmesine (aynı POSITION, farklı TEXCOORD) dönüşür; indexed geometry maliyeti UV Channels · seam tarafında işlenir. OBJ okuyucusu şunu hatırlar: seam = topoloji değil adres çatışması; face bağlantısı ile çözülür.
Hard edge shading için farklı
vn; UV seam için farklıvt. İkisi aynı export'ta üst üste binebilir: bir kenar hem keskin hem dikişliyse hem vn hem vt ayrılır.
[0,1] dışı değerler ve tiling
Spec UV'yi [0,1] ile sınırlamaz. vt 3.2 0.1 geçerli bir tiling
sinyalidir: sampler wrap modu (repeat / clamp / mirror) MTL veya runtime'da
belirlenir; OBJ vt yalnızca sayıyı taşır. Clamp varsayılanlı
loader'da tiling «kenarda yapışık» görünür; sorunu vt değil wrap ayarıdır.
- Negatif UV: mirror/offset; bazı viewer'lar clamp eder
- >1 tiling: tuğla / zemin tekrarları
- Dar ada [0.2,0.3]: atlas dilimi; yanlış atlas = yanlış dilim
Holodepth: atlas kullanıyorsanız vt aralığını atlas dilim dokümantasyonuyla kilitleyin; «model UV bozuk» sandığınız şey sıkça yanlış dilim ofsetidir.
vt yoksa ne olur?
CAD veya nokta bulutu kökenli OBJ'lerde vt hiç olmayabilir.
Mesh yine çizilir; doku örneklemesi ya atlanır ya sabit UV'ye düşer. Scan /
static mesh kullanımında «UV unwrap sonra» ayrı iş paketidir; format
zorunlu kılmaz.
Kısmi eksiklik (bazı obje gruplarında vt var, bazılarında yok) e-ticaret
vitrininde «gövdede logo, koltukta düz renk» gibi bilinçli olabilir. Holodepth
envanteri: vt sayısı, face'te vt kullanan yüz oranı, dokusuz
o/g listesi.
Klasik OBJ: tek UV listesi
Wavefront OBJ pratikte tek global vt havuzu
taşır. Lightmap + albedo için iki unwrap isteyen modern oyun pipeline'ı
klasik OBJ ile zorlanır; ikinci set genelde ayrı dosya, vendor uzantısı veya
doğrudan glTF'ye geçişle çözülür. Bu yüzden Holodepth web dağıtımında OBJ ara
format, glTF nihai pakettir (
Neden glTF).
Çok kanallı UV semantiği, TEXCOORD_1 ve materyal
texCoord seçimi glTF sayfasının işidir; burada yalnızca «OBJ
tek liste sınırını bilin» notu sabitlenir. Limitleri grubundaki özellik
boşluklarıyla aynı ailededir.
Holodepth perspektifleri (OBJ UV gerçekleri)
Aynalı UV ve negative scale
Mirror modifier / negatif scale export'ta UV adaları ters dönebilir; winding ile birlikte «içi dışarı + ters logo» çifte hata üretir. Önce Face · winding, sonra vt min/max ve ada yönünü kontrol edin.
Degenerate UV üçgeni
Üç köşe aynı vt indeksine veya aynı (u,v) noktasına map'lenirse
doku alanı sıfırdır; lighting düzgün, albedo «tek renk leke» olur. Face
degenerate'den farklıdır: 3D üçgen sağlam, UV üçgeni çökmüştür.
Ada yoğunluğu vs texel
Format texel yoğunluğunu taşımaz; vt yalnızca normalize adres verir. Küçük ada + büyük mesh yüzeyi = bulanık baskı. Bu sanat/unwrap kararıdır; OBJ «yanlış» demez. Holodepth QA: önemli yüzeylerin UV ada alanını ekranda checker ile doğrulayın.
Önce vt mi map mı?
Import script'leri bazen MTL'yi vt'den önce yükler. Sıra ters olsa bile bağlama face parse sonrası tamamlanır; asıl risk «usemtl değişti, eski vt kaldı» senkron hatasıdır. MTL Sistemi material bağlantısı bunu derinleştirir.
Seam / flip yürüyüşü (teşhis)
- En az bir
vtvar mı? - Face'lerde
/vtbileşeni kullanılıyor mu? - Checker / grid doku düz mü, yoksa V-flip mi?
- Dikiş kenarında iki farklı vt mi?
- vt aralığı atlas dilimiyle örtüşüyor mu?
- map_Kd 200 mü, yoksa yol mu kırık? (MTL)
- glTF export sonrası TEXCOORD_0 dolu mu?
Holodepth içgörüsü
«Doku bozuk» ticket'ında önce PNG'yi değiştirmek yerine tek renk checker koyun. Kayma / flip / seam checker'da görünür; materyal formülü değil vt sözleşmesidir. Checker düzgün, albedo bozuksa o zaman MTL veya atlas dilimine geçin.
Temel Yapı kapanır; MTL Sistemi açılır
Dört liste tamam: konum, topoloji, normal, UV. Sıradaki Holodepth OBJ dalı «hangi materyal / hangi görüntü?» sorusuna geçer:
- Material Dosyası Materyal Dosyası (.mtl)
- Texture Referansları (
map_Kdve ailesi) - Material Bağlantısı (
usemtl,mtllib)
Format okuyucusu özeti:
vt= doku adresi havuzu; face'te seçilir; klasik OBJ'de tek listedir. Seam farklı vt ister; V-flip pipeline'da tek noktada çözülür. Görüntü dosyası MTL'dedir; glTF çok kanallı UV'ye köprü dönüşümdedir.