UV ve UVW Eşleme tam olarak nedir?


26

Bazı temel 3B kavramları anlamaya çalışıyorum, şu anda dokuların gerçekte nasıl çalıştığını anlamaya çalışıyorum. UV ve UVW haritalamanın 2B Dokular'ı 3B Nesnelere eşleyen teknikler olduğunu biliyorum - Wikipedia bana da söyledi. Açıklamalar için googledim ama sadece ne olduğunu bildiğimi varsaydığım öğreticiler buldum.

Anladığım kadarıyla, her 3B Model Noktalardan oluşuyor ve birkaç nokta bir yüz yaratıyor mu? Her noktanın veya yüzün 2B Dokuda eksen / y konumuna eşlenen ikincil bir koordinatı var mı? Veya ambalajından çıkarma, modeli nasıl değiştirir?

Ayrıca, UVW'deki W gerçekte ne yapar, UV üzerinden ne sunar? Anladığım kadarıyla, W Z koordinatına eşlenir, fakat hangi durumda aynı X / Y ve farklı Z için farklı dokulara sahip olurdum, Z kısmı görünmez olmaz? Yoksa bunu tamamen yanlış mı anlıyorum?


1
ayrı ayrı iki soru sorun
Noob Oyun Geliştirici

1
@NoobGameDeveloper gibi adamlardan nefret ediyorum, herkes soruyu cevaplıyor ve yaptıkları tüm soru ile yanlış olan şeyleri bulmaya çalışıyor. Hadi, soru sormalarına izin ver, kimsenin kuralları takip etmemesi gerektiğini söylemiyorum ama bu gibi sorular burada yayınlanmak için tamamen uygun.
Daniyal Azram

Yanıtlar:


23

Anlayışınız yakın. Her 3B model köşelerden yapılmıştır. Her köşe genellikle uzayda bir noktanın konumunu, normal (ışık hesaplamalarında kullanılan) ve 1 veya daha fazla doku koordinatını tanımlar. Bunlar genellikle dokunun yatay kısmı için u ve dikey için v olarak belirtilir.

Bir nesne dokulu olduğunda, bu koordinatlar hangi doku veya pikselin dokudan çizileceğini bulmak için kullanılır. Bunları, dokunun sol kenarı ( u = 0) ile dokunun sağ kenarı ( u = 1.0) arasında ve dokunun tepesinden ( v = 0) ve alttan yüzde veya oran olarak düşünmeyi en kolay buluyorum. onunla ( v= 1.0). Köşeler arasında enterpolasyon yaparlar ve oluşturulan her ekran pikseline bakarlar. Bunlar bu aralıklardan daha büyük veya daha küçük olabilir ve nesne oluşturulduğunda ayarlanan oluşturma durumu ne olacağını belirtir. Bunun için seçenekler CLAMP ve REPEAT. Sıkıştırma, koordinatı 0 veya 1 olarak sınırlar ve dokunun aralığın dışında kaldığı yerlerde lekelenmesine neden olur. Tekrar, dokunun aralığın dışında olduğu zaman tekrar etmesine neden olur; etkili bir şekilde koordinatın sadece ondalık kısmını almak ve yerine kullanmakla aynı şeydir.

Doku koordinatları bir nesneye uygulanmadan önce, bunlara bir miktar dönüşüm uygulamak için (ölçekleme, çeviri veya döndürme gibi) bir doku matrisi ile çarpılırlar. Bu efekt bazen oyunlarda, nesnenin kendisini hareket ettirmek zorunda kalmadan bir şey bir nesnenin üzerinde hareket ediyormuş gibi görünmesini sağlamak için canlandırılır ... doku sadece üzerinde hareket eder. Doku matrisi, doku koordinatları ile çarpıldığında, çizime göre dokuya bakmak için kullanılan 2 değer üretir (bunları s ve t olarak adlandırır ). Doku matrisi ayarlanmadığında bile bunlar u ve v'den otomatik olarak oluşturulur ; u ve v'yi bir kimlik matrisi ile çarpmaya eşdeğerdir .

W koordinatının girdiği yer burasıdır , ancak bu kadar sık ​​kullanılmamasına rağmen. Doku matrisini çarpmak için ekstra bir parametredir ve genellikle perspektifi dikkate almak istediğinizde kullanılır ( Gölge Eşlemede olduğu gibi ). Bir dünya görüş projeksiyon matrisi aracılığıyla nesne uzayındaki bir yeri ekran alanına dönüştürdüğünüzde olduğu gibi çalışır. UVW'yi bir projeksiyon dönüşümü ile çarparak, 2 ve 2 koordinatlara sahip olursunuz, s ve t daha sonra 2B doku üzerine eşlenir.


OpenGL’nin v0’u en alt olarak ve v1.0’ı en üst olarak gördüğünü söylemeye değer. Dokularım tuhaf göründüğünde böceği bulamadığımda bu bana çok zaman harcadı.
tkausl

8

Bir üçgen düşünün.

Her köşede bir UV koordinatı vardır. Her piksel için bir dizi UV koordinatı almak için bunlar arasında enterpolasyon yaparsınız. (Burada oyunun perspektifi de var ama şimdilik şimdilik görmezden gelelim).

Daha sonra dokudan U ve V koordinatlarından bir doku alırsınız. Yani, doku koordinatından x, y - aynı şey, dokulardan söz ettiğimizden biraz farklı terminolojiden bir piksel.

Dokunuz gerçekten 3 boyutlu ise, ayrıca üçüncü bir koordinat gerekir, W.

Bunu görselleştirmenin bir yolu bir tahta blok düşünmektir. Bir şekilde keserseniz, blok içindeki her düzlemin 2d'lik bir doku dokusuna sahip olduğunu göreceksiniz.

3B dokular o kadar nadirdir ki şu an için onları unutabilirsiniz.


Nadir? Ne için kullanılıyorlar? AAA başlıkları bağlamında bazı örnekler gösterebilir misiniz?
Quazi Irfan

Hayır, çünkü genellikle hiç kullanılmamış konuşurlar. Her zaman aynı şeyi yapmanın daha ucuz bir yolu vardır. Wii sporları artı olarak kesilmiş parçaları düşünün; öğeleri istediğiniz şekilde kırabilir ve "iç kısımları" görebilirsiniz. 3B dokular yaparak çok fazla hafıza boşa harcayabilirlerdi (donanımın bunu desteklediğini varsayarsak), ancak bunun yerine birkaç tane 2d dokuyla bunu taklit etmek çok daha ucuz.
Jari Komppa

Yani, özel değiller mi? ya da bu oyun motoru yapmak iyi bilinen herhangi bir şey için gerekli bir özellik değil mi?
Quazi Irfan

Ne demek istediğini anlamadım. 3B dokular, yalnızca dokulardan başka amaçlarla da faydalı olabilir; Bir gölgelendiricinin ihtiyaç duyduğu bazı veriler uygun bir şekilde 3d diziye eşlenirse, bu tek kullanımlık olacaktır. Ancak "normal" bir doku olarak, genellikle sadece bir hafıza kaybıdır.
Jari Komppa

3D dokusunun bir uygulaması Mesafe Eşlemesi'dir, ancak Jari'nin dediği gibi, bir oyunda karmaşıklığı nedeniyle çok nadir görülüyor. [link] http.developer.nvidia.com/GPUGems2/gpugems2_chapter08.html
Jackalope

7

Origami'yi düşün.

Bir UV haritası, 3B ağınızın (kabuk) düzleştirilmiş (açılmamış) 2B kaplaması gibidir.

Haritayı kesip kafes çizgileri boyunca katlamanız durumunda, sonuç 3d modeliniz olacaktır.

(U, V) kayan nokta değerleri (0,0) ile (1,1) arasındadır. UV haritasının sol üst köşesi (0,0), sağ alt köşe (1,1) 'dir.

Çokgen bir ağdaki (tris / quads) her köşe, oluşturucuya haritanın hangi bölümünü kullanacağını söyleyen bir (U, V) değerine sahiptir.

GPU boru hattında, köşe gölgelendiricileri bu 3B poligonlardaki her pikselin 2B projeksiyonlarını hesaplar ve ardından fragman gölgelendiricileri UV haritasını kullanarak onları renklendirir.

Bu, tamamen belirgin kılan böyle bir resim olmadan tam olarak takdir edilemez:

Uv örgü

Bahsedilen diğer yorumculara göre, W bileşeni işveren tarafından gölge haritalama gibi meraklı efektler için kullanılır, ancak UV haritası anlama için temel oluşturur.

Bir köşe gölgelendiricinin, renkli olması gereken her piksel için en az bir kez bir parça gölgelendirici çağırması gerektiğini unutmayın.

Lütfen ayrıca CPU ile tümleşik GPU'ların mobil cihazlar için tasarlandığını ve benzer nesil harici GPU'lara göre sayı çekirdeğinin onda birinden daha azıyla sınırlı olduğunu unutmayın. Bunun nedeni mobil güç ve soğutma kısıtlamalarıdır. Moore Yasası yavaşladı gibi görünüyor, ancak performans hala artıyor (garip erime ile orada ve orada ..)

Saniyede 240+ karede milyarlarca pikseli UV eşleme gerçek bir karışıklığa neden olabilir!


0

Bir uv haritası, kafesdeki bir noktayı (x, y, z) doku görüntüsündeki bir noktaya (u, v) eşler. Bir görüntü (u, v) bir renge eşlendiğinden, iki harita zincirlenebilir, böylece kafes alanından renk alanına bir harita elde edilir.

         uv map       color map
 (x,y,z)   ->   (u,v)    ->     color
 mesh           Texture
 space          space
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.