Ana sayfa Yazılım Displacement Map Optimizasyonu

Displacement Map Optimizasyonu

0

Her türlü displacement (kaydırma) haritasını render sürecindeki uzun etkilerine rağmen doğrudan kullanmalı mıyız? Bilgisayarımızın işlemcisini gereksiz hesaplardan nasıl kurtarırız?
 

Genel Hatlarıyla Kaydırma Haritaları (Displacement Maps)

Kaydırma haritaları (vector displacement haritaları hariç olmak üzere) gri ölçekli haritalardır. Siyah ve beyaz oranına göre model yüzeyinde girinti ve çıkıntı oluşturmak üzere kullanılırlar. Bir nevi elinizdeki kaplamayla modelleme yapmak olarak değerlendirebilirsiniz bu sistemi.
Genellikle bu haritalarda model yüzeyinde değişiklik yapılmayacak kısımlar RGB (128,128,128) değeriyle boyanır. Girintiler için siyaha doğru koyu renklerle, çıkıntılar içinse beyaza doğru açık renklerle boyama yapılmaktadır (Resim 01).

Kaydırma haritalarının, tümsek (bump) ve normal haritalara nazaran daha çok tercih edilmesinin sebebi diğer yöntemler gibi aldatıcı şekilde değil, fiziksel olarak model yüzeyini değiştirmesinden kaynaklanmaktadır (Resim 02).
 

displacement map optimizasynu
Resim 01
 
  
Resim 02
 
Modelleme yerine kaydırma haritası kullanılmasının sebebi ise, ince detayları modelleyerek zaman kaybetmeyi engellemek ve kaydırma haritalarının programın arayüzünü yavaşlatıcı çok sayıda poligonla uğraşmanıza gerek bırakmadan sadece render sırasında hesaplanan bir deformasyon aracı olmasıdır. Aynı zamanda karmaşık yüzeylerin kabartma şekilde modele yansıtılması poligon araçları ile mümkün olmamaktadır. Mesela pürüzlü bir yüzey elde etmek için yüzeyi milyonlarca poligona bölüm tek tek girinti ve çıkıntılar oluşturmak üzere poligonları taşımanız gerekirdi.

Kaydırma haritalarındaki temel çalışma mantığı micropoly sistemi ile girinti ve çıkıntı şeklinde “kaydırılacak” her pikselin ek poligonlar ile oluşmasını sağlamaktır. Bunu render sürecinde sahnede hesaplanan poligon sayısını öğrenerek takip edebilirsiniz. Resim 01″deki yüzey aslında sadece 10 poligondan oluşuyor fakat kaydırma haritası uygulandıktan sonra sahnedeki poligon sayısı render esnasında 3.27 milyon poligon olarak hesaplanmıştır. Bu sayı render motoru tarafından kaydırılarak oluşturulan yeni mikro poligonlar yüzünden bu kadar yüksektir.

Bahsi geçen mikro poligonların sayısı tabii ki limitli tutulmalıdır. Kullanılan kaydırma haritasının resim olarak çözünürlüğünün yüksek oluşu kaliteyi artırıcı bir etki yaratmasına rağmen poligon sayısında da artışa sebep olarak render süresinde uzamalara sebep olacaktır.

 

Genel Hatlarıyla Tümsek Haritaları (Bump Map)

Tümsek haritaları kaydırma haritalarına göre daha ucuz yollu bir çözümdür. Mantıksal açıdan kaydırma haritalarıyla tamamen aynıdır. Yine gri ölçekli haritalar olup, girinti ve çıkıntılar için siyah ve beyaz tanımlı bölgelere ihtiyaç duymaktadır. Fark ise render çıktısında ortaya çıkmaktadır. Tümsek haritaları yüzey üzerinde deformasyon gerçekleştirmezler. Sadece gölge oluşumlarını sanki yüzeyde o tümsekler varmış gibi göstererek izleyiciyi kandırmayı hedeflerler. Bu yöntem biraz aldatıcı da olsa kimi zaman gerçekçi sonuçlar çıkarmaktadır, özellike 90 derece dik şekilde tüksek haritası uygulanmış yüzeye bakıyorsanız…
 


Resim 02
 
Tümsek haritalarının foyası onlara kesitten baktığınız zaman ortaya çıkar. Model yüzeyinde fiziksel bir deformasyon oluşturmadığı için kesitten bakıldığında pürüzsüz yüzeyi daha iyi algılarsınız (Resim 02).

 

Displacement Map Optimizasyonu

Şimdi esas konumuza gelebiliriz. Bu ay sizlere açıklayacağım optimizasyon yöntemi, kaydırma haritalarının içerdiği detaya göre sebep olduğu render süresini uzatıcı etkenleri, sahneye ve kullanılan haritaya bağlı olarak kısaltmayı amaçlayan bir yaklaşımdır. Aynı zamanda fotoğraftan çıkarılmış kaydırma haritalarındaki kontrolsüzlüğü de büyük oranda düzenleyen ve detayları daha anlaşılır sergileyen bu işlemin bir çoğunuza faydalı olacağını düşünüyorum.
 


Resim 03
 
Yöntemin temeli ince detaylar ile kaba detayları birbirinden ayırmaya dayanıyor. Daha önce de bahsettiğim gibi mikro poligon işlem sayısının artmasını istemiyoruz ve artışlarının sebebinin de kaydırma haritasındaki küçük detaylar yüzünden oluşan mikro poligonlar olduğunu biliyoruz. Eğer bir şekilde elimizdeki kaydırma haritasının sadeleştirebilirsek yani ince detaylarını sıfırlayıp uygularsak ve ince detayları (fazla “kayması” gerekmeyen detayları) tümsek haritası olarak uygularsak kaliteyi fazla kaybetmeden mikro poligon işlem sayısında düşüş sağlayabiliriz.

Ben bu sadeleştirme işlemi için median filter kullanıyorum. Bir çok 2d foto manipulasyon programında mevcut olan bir filtredir. Genellikle fotoğraflardan noise temizlemek için kullanılır. Bizim içinse kaydırma haritasındaki ince detayları düzleştirecek.

Elimdeki hazır dokulardan kiremit duvar görüntüsünü ve 21. Düzeyden Median Filter uygulanmış görüntüsünü Resim 03″te görebilirsiniz.

 

Sadeleştirilmemiş harita kaydırma haritası olarak uygulandığında (Resim 04) render motorunun hesaplama süresi 14 dakika 20 saniye olarak ölçüldü. Poligon sayısı ise 3,05 milyon poligondu. çıktıya baktığınızda ek olarak ince detayların biçimsiz bir şekilde kabarmış olduğunu göreceksiniz. Kaydırma haritası çok kontrolsüz bir şekilde modelde deformasyon yaratmıştır.
 

Resim 04
 
Resim 04″te orta bölmede orijinal haritayı tümsek haritası olarak uyguladım. İnce detaylar bir miktar gözleniyor fakat kaydırma haritasındaki kadar belirgin kiremit görünümü de sağlanamamış durumda… Bunun getirisi hesaplama süresi olarak gözlenebiliyor. Sahnedeki poligon sayısı 2, hesaplama süresi ise 34,2 saniye olarak ölçüldü.

Resim 04″teki son adımda ise sadeleştirilmiş haritayı kaydırma haritası olarak, önceki sadeleştirilmemiş haritayı ise tümsek haritası olarak modele uyguladım. Hesaplama süresi kabaca yarı yarıya düştü denilebilir. Poligon sayısı, kaydırma haritasındaki piksel sayısı (çözünürlük) değişmediğinden dolayı aynı kalmıştır. Ek olarak optimize edilmemiş kaydırma haritasındaki abartılı pürüzleri hatırlayacak olursak, ince pürüzleri bu sefer tümsek haritası olarak uygulamamız bize abartılı görünümün detaylı ve ince bir biçimde hesaplanması olarak geri döndü.

 

İkinci bir örnek için Resim 05 ve Resim 06″yı inceleyebilirsiniz. Haritanın sadeleştirilme işlemi için Resim 05″i, optimize edilmiş ve edilmemiş sonuçlar içinse Resim 06″yı inceleyebilirsiniz.
 

Resim 05
 
  
Resim 06
 
Bu ay displacement haritalarının gereksiz yükünü atmak için bu yöntemden bahsettik. önerileriniz, merak ettikleriniz, incelenmesini istediğiniz 3d araçlar ve sorularınız için bana e-posta gönderebilirsiniz.

 

BİR CEVAP BIRAK

Please enter your comment!
Please enter your name here