holodepth

Three.js · Doku ve UV

UV mapping mantığı: boyutlar arası köprü

Üç boyutlu bir objenin yüzeyine doku yerleştirmek, bir hediye paketini ambalajlamaya benzer — fakat bilgisayar grafiklerinde süreç genelde tersinedir: 3B formu kesip 2B düzleme yayarız. Bu yayılma ve koordinat sistemine UV mapping denir.

UV, modelleme ile teknik geliştirme arasındaki köprüdür; yanlış bir UV haritası, en iyi dokuyu bile düz veya bozuk gösterebilir.

Bağlam: Doku temelleri, Materyal girişi, Sahne (Scene).

UV sözlüğü: hızlı köprü

Kavram Ne işe yarar? Bu sayfada / komşu
U / V Doku düzleminin eksenleri; XYZ ile karışmaz. Bölüm 1
0–1 normalize Çözünürlük değişse bile aynı köşe aynı dokudaki göreli yerde kalır. Doku temelleri · 0–1
Unwrap · dikiş 3B yüzeyi 2B’ye «yayma» planı; kesim çizgileri. Bölüm 2
Texel yoğunluğu Bozulma ve netlik; damalı test. Bölüm 3

Neden «U» ve «V»?

Üç boyutlu uzayda eksenlerimiz X, Y ve Z’dir. Doku koordinatlarını bunlarla karıştırmamak için alfabenin farklı harfleri seçilmiştir; aynı köşede hem dünya konumu (XYZ) hem de doku adresi (UV) ayrı ayrı tutulabilsin diye isimler ayrılır.

U ekseni

U çoğu arayüz ve varsayılan düzende yatay doğrultuyu (horizontal) temsil eder; doku görüntüsünde soldan sağa gidiş bu eksenle ilişkilendirilir.

V ekseni

V dikey doğrultuyu (vertical) temsil eder. Bazı DCC paketlerinde V yönü için ek gösterim seçenekleri olabilir; WebGL / Three.js tarafında önemli olan, geometrinin buffer’ındaki UV ile doku örnekleme arasında tutarlı bir eşleşmedir.

0 ile 1 aralığı (normalize)

UV koordinatları dokunun çözünürlüğünden bağımsızdır. Objenin bir köşesi örneğin U = 0,5, V = 0,5 noktasındaysa, doku 512 px de olsa 4K da olsa bu nokta dokuda tam merkeze denk gelir. Bu özellik, aynı materyalin farklı çözünürlükteki sürümleri arasında taşınabilirlik sağlar (VRAM ve çözünürlük ile birlikte düşünün).

Unwrapping (açma): küpten düzleme

Bir küpü düşünün: karton kutu gibi kenarlardan kesip masaya düz yaydığınızda oluşan şekil, o küpün UV map’idir. Modelleme yazılımında «unwrap» dediğinizde yapılan şey de kabaca budur: hangi 3B yüzeyin 2B levhanın hangi bölgesine oturacağını planlamak.

Seams (dikiş izleri)

Dikiş, objenin nereden kesileceğini belirleyen çizgilerdir. Kesim, 3B normallerin sürekliliğini kırdığı için dikişleri genelde kamera veya ışığın az vurduğu bölgelere (örneğin bir karakterin koltuk altı, mobilyanın arka yüzü) gizlemek yaygın bir pratiktir; aksi hâlde yüzey boyunca doku sürekliliği koptuğu yerden «çizgi» hissi oluşabilir.

UV islands (adalar)

Kesilen her parça, UV düzleminde bir «ada» oluşturur. Adaların birbirinin üzerine bilerek binmediğinden emin olmak gerekir — aksi hâlde iki farklı 3B parça aynı doku bölgesini paylaşır ve detaylar birbirine karışır. İstisna: performans için bilinçli overlap (bölüm 4).

Distortion (bozulma) ve texel yoğunluğu

UV mapping’in en büyük düşmanı bozulmadır: haritadaki bir parça 3B modeldeki gerçek ölçeğe göre çok küçük veya büyük açılmışsa doku yüzeyde gerilmiş, büzülmüş veya «bulanık–keskin karışık» görünür. Bu, kötü sanat değil; çoğu zaman kötü alan dağılımıdır.

Texel density (texel yoğunluğu)

Texel yoğunluğu, 3B modelin birim yüzeyine düşen doku pikseli (texel) miktarıdır. Aynı 2K dokuda bile bir yüz çok dar bir ada içinde sıkıştırılmışsa o yüzeyde efektif çözünürlük düşer; tersine aynı doku alanı genişletilirse detay «yayılır» ve yumuşak görünür.

Öncelik ve alan payı

Oyuncuya en yakın parçaların (örneğin yüz) UV adaları doku alanında daha geniş yer kaplamalıdır; daha az kritik bölgeler (ayak tabanı, iç yüzey) daha dar tutulabilir. Böylece sınırlı doku çözünürlüğünü göz önünde olan yere harcarsınız.

Checkerboard testi

Damalı bir doku giydirildiğinde kareler her yerde eşit büyüklükte ve kare ise harita genelde sağlıklıdır. Karelerin bir tarafta uzayıp diğerinde sıkışması, UV alanı ile 3B ölçek arasında dengesizlik olduğunun hızlı görsel kanıtıdır.

Overlapping ve atlaslama

Bazen UV adalarını üst üste bindirmek (overlapping) kasıtlı bir performans / bellek hilesidir: aynı doku bölgesini birden fazla 3B parça paylaşır; böylece doku dosyası küçülür ve örnekleme daha verimli olabilir.

Simetri ile tasarruf

Örneğin arabanın iki yanı aynı görünüyorsa, iki yanın UV’sini üst üste koyarak doku alanından kabaca %50 tasarruf edebilirsiniz. Bu, ayrıntıyı ikiye katlamaz; görünür taraf aynı deseni paylaşır — oyun ve ürün görselleştirmede sık tercih edilir.

Texture atlas

Birçok küçük objenin (kalem, kitap, bardak…) UV’lerini tek büyük dokuda toplamak, draw call sayısını azaltarak sahneyi hızlandırmaya yardım eder. Atlasın riski, tek dosyada hata yapıldığında birçok objenin birden bozulması ve güncelleme maliyetidir; bu yüzden düzen (padding, ada sınırları) planlı olmalıdır.

Three.js tarafında materyal başına doku bağlama modeli değişmeden kalır; kazanç genelde batching ve içerik tarafındaki tek dosya yönetimindedir (Doku optimizasyonu · atlas).

Three.js içinde UV erişimi

Bir geometri oluşturduğunuzda, köşe başına UV çiftleri genelde geometry.attributes.uv içinde tutulur. Parametrik primitiflerde bu buffer hazır gelir; özel modellerde DCC dışa aktarımı sırasında üretilir.

BufferAttribute

Her vertex, kendi UV koordinatını taşır; aynı 3B köşede farklı UV değerleri (çoğunlukla dikiş yüzünden) vertex çoğaltılarak elde edilir. Bu yüzden «kaç üçgen var?» sorusu ile «kaç benzersiz UV köşesi var?» sorusunun cevabı her zaman aynı olmayabilir.

Shader ve vUv

Shader’da dokuyu çoğu zaman vUv üzerinden okuruz. Dokuyu kodla kaydırmak (offset) veya döndürmek aslında bu UV’lerle oynamaktır; materyaldeki texture dönüşümü de aynı fikrin paketlenmiş halidir.

// BufferGeometry üzerinde UV buffer’ı
const uvAttr = geometry.attributes.uv;
if (uvAttr) {
  // uvAttr.array: u,v çiftleri (vertex başına 2 float)
  // uvAttr.needsUpdate = true; // değiştirirseniz
}

HoloDepth «UV» checkpoint’i

Özet

UV mapping, 3B modelleme ile teknik geliştirme arasındaki köprüdür. Harita zayıfsa, en iyi doku bile sahneye «ucuz» oturur.

HoloDepth özet stratejisi

  • Görünmez dikişlerSeam’leri mümkün olduğunca gizli kenarlara al.
  • Eşit texel yoğunluğuCheckerboard testini atlama; bozulmayı erken yakala.
  • Doku tasarrufu — Simetrik parçaları kasıtlı overlap ile birleştir; çözünürlüğü verimli kullan.
  • Hizalama — Doku dikeyse UV adalarını da dikey hizala; ekranda aliasing / kırılmayı azaltmaya yardım eder.

Mesh ve materyal hattı

UV nihai görüntüyü tek başına belirlemez: aynı haritada doğru doku, doğru filtre ve doğru renk uzayı gerekir (Doku temelleri · renk uzayı). Sahneye giren Mesh Standard/Physical materyalde kanallar aynı UV setini paylaşır; bu yüzden oyun içi «tek atlas» kararları çok erken verilir.

Sonraki durak: Bellek, mip ve sıkıştırma tarafında UV kararlarını maliyete bağlayan Doku optimizasyonu.