Tüm yazılar
Eğitimler · 7 min read

Malzeme harmanlaması için vertex boyama: kesintisiz arazi ve mesh geçişleri

Vertex boyamanın görünür dikişleri öldürmek için malzemeleri nasıl harmanladığı: doğrusal alfayı yenen height-blend hilesi, çimene çamur ve kayaya yosun boyamak, performans düşünceleri, ve decal'lar ve döşeme dokularının yanında nereye oturduğu.

Aerial view of a forested river valley crossed by a steel bridge and a road

Kısaca: bir malzemenin diğeriyle buluştuğu sert dikişler (çime çarpan çim, taşa buluşan çamur) amatör bir ortamın en büyük ele vericilerinden biridir. Vertex boyama, o dikişleri silmek için malzemeleri doğrudan bir mesh üzerinde harmanlar, ve bir "height blend" geçişi bir solma yerine doğal gösterir. Bu makale vertex harmanlamasının nasıl çalıştığını, iyi geçişleri çamurlulardan ayıran height-blend hilesini, onu nereye boyayacağını, çalışma zamanında ne maliyette olduğunu, ve decal'lar ve döşeme dokularıyla nasıl uyum sağladığını açıklar.

Su, mil ve bitki örtüsünün birbirine karıştığı bir nehir deltası Doğanın sert kenarları yoktur. Suyun mile, milin çime buluştuğu yerde geçiş düzensiz ve iç içe geçmiştir: tam olarak vertex harmanlamasının yeniden yarattığı şey, böylece malzemelerin düz, bariz çizgilerde buluşmayı bıraksın.

Sorun: dikişler her şeyi ele verir

Gerçek yüzeyler düzensizce geçer: çim çakıla sokulur, çamur çukur noktalarda birikir, yosun kayanın gölgeli tarafını tırmanır. İki malzeme arasında sert bir düz çizgi, her doku ne kadar iyi olursa olsun anında sahte okunur.

İki fotogerçekçi dokuya sahip olabilir ve yine de yanlış görünen bir ortam elde edebilirsin, çünkü aralarındaki geçiş inandırıcılığın yaşadığı yerdir. Gerçek dünyada malzemeler iç içe geçer: toprak çatlaklara yıkanır, çim bir patikaya doğru incelir, kar çıkıntılarda toplanır. Keskin bir poligon kenarı boyunca çimden kayaya geçiş yapan bir oyun yüzeyi "karolardan yapılmış" diye bağırır. Vertex boyama, o kenarları çözmek için birincil araçtır ve malzemelerin, dışarıda yaptıkları gibi birbirine akmasına izin verir.

Vertex harmanlaması nasıl çalışır

Her vertex renk/alfa verisi depolar; bir harman malzemesi bunu, yüzey boyunca piksel başına iki ya da daha fazla dokuyu karıştırmak için okur. Vertex verisini motor içinde boya ve malzemeler boyadığın her yerde geçiş yapar, ekstra UV ya da geometri olmadan.

Bir mesh üzerindeki her vertex biraz ekstra veri taşıyabilir: vertex renkleri, genellikle dört kanal. Bir harman malzemesi bu veriyi bir maske olarak yorumlar: bir kanalın güçlü olduğu yerde malzeme A'yı göster; zayıf olduğu yerde malzeme B'yi göster; ve aralarında ara değer al. Vertex verisini editörde doğrudan modelin üzerine boyadığın için, geçişi elle, tam istediğin yerde kontrol edersin: bir duvarın tabanı boyunca çamur, bir zeminin köşelerinde aşınma, bir kayanın bir tarafında yosun. Ekstra UV setine ve eklenen geometriye mal olmaz (içine detay boyayacak kadar vertex'e sahip olmanın ötesinde), bu yüzden arazi ve büyük mesh'ler için beygir harmanlama tekniğidir.

Height-blend hilesi

Alfa üzerinde doğrusal harmanlama yerine, bir yükseklik haritası kullanarak harmanla ki üstteki malzeme önce çatlakları ve çukur noktaları doldursun. Doğrusal harmanlama yumuşak çamurlu bir solma verir; yükseklik harmanlaması keskin, doğal, iç içe geçmiş bir geçiş verir.

Bu, harman malzemenin tek en önemli yükseltmesidir ve profesyonel bir geçişi bulaşık olandan ayıran şeydir. Naif bir harman, maske boyunca iki doku arasında doğrusal olarak solar ve bir Photoshop gradyanına benzeyen yumuşak, hayaletimsi bir örtüşme üretir. Bir height blend ise geçişe karar vermek için malzemelerin yükseklik/yer değiştirme bilgisini kullanır: gelen malzeme, yüksek noktaları örtmeden önce ilk olarak alçak alanlara (harç çizgilerine, çatlaklara, ezikliklere) yerleşir, tam olarak gerçek toprak, kum ya da karın birikmesi gibi. Sonuç, bulanık bir solma yerine keskin, düzensiz, inandırıcı bir sınırdır. Harmanların çamurlu görünüyorsa, yüksekliğe dayalı bir geçiş eklemek neredeyse her zaman çözümdür.

Açık araziyle buluşan bir orman kenarı, bitki örtüsü inceliyor Bir orman kenarı vahşi doğada bir harmandır: ağaç sınırı bir çizgide durmaz, saçılır ve incelir. Yüksekliğe dayalı vertex harmanlaması, temiz bir sınır yerine o pürüzlü, iç içe geçmiş geçişi yeniden yaratır.

Onu nereye boyamalı

Yüzeylerin doğal etkileştiği yerlere geçişler boya: duvarların tabanı (toprak/nem), zeminlerin köşeleri ve kenarları (aşınma), kayanın gölgeli tarafları (yosun), çukur noktalar (çamur/su birikintisi), ve iki arazi katmanının buluştuğu her yer.

Vertex harmanlaması en çok gözün gerçekçiliği kontrol ettiği yerlerde işe yarar: temas noktaları ve aşınma bölgeleri. Her zaman göz önünde bulundurulacak birkaç yüksek değerli yer: duvarların tabanını tırmanan toprak ve nem; ayakların indiği zeminlerin ve basamakların köşelerinde çizikler ve açığa çıkan malzeme; kayaların kuzey/gölgeli yüzlerinde yosun ve liken; en alçak noktalarda çamur ve durgun su; ve bir arazide arazi katmanları arasındaki dikişler. Bunlar bir hikâye anlatıcısının süslediği aynı yerlerdir, çünkü bir yerin tarihini gösterdiği yerlerdir. Onları boya ve temiz, yeni görünen bir kit aniden yıpranmış ve gerçek okunur.

Performans ve sınırlar

Harman malzemeleri piksel başına daha pahalıya mal olur (birden çok doku seti örneklerler), bu yüzden geçişlerin önemli olduğu yerde kullan, her yerde değil. Vertex detayı mesh yoğunluğuyla sınırlıdır: yalnızca vertex'lerinin izin verdiği kadar ince boyayabilirsin.

Harmanlama bedava değildir: iki ya da üç katmanlı bir harman malzemesi piksel başına birkaç doku örnekler, yani tek bir malzemeden daha pahalıdır. Bu, kahraman arazide ve kameranın incelediği yüzeylerde sorun değil, ama her mesh'e dört katmanlı bir harmanı toptan uygulamak GPU'yu boşa harcar. Diğer sınır çözünürlüktür: vertex boyama yalnızca mesh'in yoğun olduğu kadar detaylı olabilir, yani low-poly bir duvar ince boyalı bir geçiş taşıyamaz, burada decal'lar üstüne daha küçük ölçekli detay eklemek için devreye girer. Her ölçekte doğru aracı kullan: geniş geçiş için vertex harman, keskin yerel detay için decal.

Diğer araçlarla nereye uyum sağlar

Vertex harman orta ölçekli malzeme geçişini halleder; döşeme dokuları temel detayı ucuza sağlar; decal'lar vertex başına boyanamayacak kadar ince keskin yerel özellikler (çatlaklar, lekeler, sızıntılar) ekler. İstiflenirler.

Bu araçların hiçbiri rekabet etmez: katmanlanırlar. Döşeme dokuları büyük yüzeylerde uygun maliyetli yüksek frekanslı detay verir. Vertex harmanlaması o döşeme malzemelerini karıştırır ki sert çizgilerde buluşmasınlar. Decal'lar sonra vertex çözünürlüğünün ulaşamadığı özgün, keskin detaylar için üstüne oturur: bir çatlak, bir yanık, bir dikişin üzerinde bir su lekesi. Olgun bir ortam yüzeyi genellikle üçü birden aynı andadır. İnandırıcı malzeme harmanlamasını bir oyuna sokmak (ve çalışma zamanında beklenmedik bir maliyet olmaması için standart motor malzemelerine bake etmek) tam olarak Numivo'nun rutin hale getirmek için inşa edildiği türden yüzey işidir, böylece dikişler her iki malzeme buluşması için özel bir shader olmadan kaybolur.

Çalmaya değer saha sayıları

  • Çamurlu harmanları düzelten yükseltme: height blend, doğrusal alfa değil
  • Vertex boyama detay tavanı = mesh vertex yoğunluğu, daha yoğun mesh, daha ince boya
  • En yüksek değerli boyama bölgeleri: duvar tabanları, zemin kenarları, gölgeli kaya, çukur noktalar
  • Harman malzemesi maliyeti örneklenen katmanlarla ölçeklenir, yani çok katmanlı harmanları kahraman yüzeylere ayır
  • Tam istif: yerel detay için döşeme temeli → vertex harman → decal

Mini-SSS

Arazi için vertex boyama mı splat/ağırlık haritası mı? Aynı fikir, farklı depolama: arazi çoğu zaman vertex renkleri yerine katman ağırlık haritaları (bir doku maskesi) kullanır, ki bu detayı mesh yoğunluğundan ayırır. Mesh'ler vertex renklerini kullanır; büyük araziler çoğu zaman katman haritaları kullanır. Height-blend ilkesi ikisine de uygulanır.

Harmanım neden yumuşak ve çamurlu görünüyor? Neredeyse kesinlikle alfa üzerinde doğrusal harmanlıyorsun. Yükseklik/yer değiştirme güdümlü bir harmana geç ki geçiş önce alçak alanlara yerleşsin, ve yumuşaklık keskin, doğal bir kenara dönüşsün.

Kaç harman katmanı çok fazladır? İki ucuzdur ve çoğu geçişi kapsar; üç arazi için yaygındır; dört ve üzeri pahalı ve oluşturması zor hale gelir. Daha fazlasına ihtiyacın varsa, decal'ların ya da ikinci bir malzemenin daha iyi hizmet edip etmeyeceğini sorgula.

Bunun için özel bir shader'a ihtiyacım var mı? Harman mantığı, çoğu motor ve araç setinin sağlayacağı kadar standarttır, ve düz motor malzemelerine bake etmek çalışma zamanı maliyetini öngörülebilir tutar. Nadiren özel shader koduna ihtiyacın olur: height-blend kurulumuna ve boyayacak makul bir yere ihtiyacın var.

Dikişler, inandırıcı ortamların kazanıldığı ya da kaybedildiği yerdir. Geçişlerini yüzeylerin gerçekten etkileştiği yerlere boya, düz bir solma yerine yüksekliğe göre harmanla, ve etrafına döşeme ve decal istifle, ve malzemelerin dünyada yaptıkları gibi buluşacak: düzensizce, iç içe geçerek, ve tek bir ele verici düz çizgi olmadan.