Öngörülen ızgara suyu ufuk detayı


13

C ++ ve DirectX11 ile bir okyanus manzarası uygulamaya çalışıyorum. Şu anda tahmini bir ızgaram, Gerstner dalgaları ve temel bir gölgeleme var. Benim sorunum, kameramı yatay olarak hedeflediğimde, su ufkunu görebiliyorum, uzaktan, yüksek tepe değerlerinde bile yansıtılan ızgara yetersiz oluyor. Bu ekran görüntüleri sorunu göstermektedir:

gölgeli su yüzeyi

tel çerçeve su yüzeyi

Sorunun nedeninin öngörülen ızgara kavramında olduğunu biliyorum (ızgara kameranın yakınında ayrıntılı, ondan çok uzakta), ancak bunu çözmek için en iyi uygulama olmalı.

Herhangi bir fikir?

Yanıtlar:


7

Ortak bir çözüm, ızgarayı yansıtmak için kullanılan kamera dönüşümünü, ızgarayı oluşturmak için kullanılan kamera dönüşümünden ayırmak olduğuna inanıyorum. Yukarıdan aşağıya yakın perspektiflerde, iki kamera çakışıyor, ancak izleme kamerası yatay bir perspektife yaklaştıkça, projeksiyon kamerası sapıyor ve minimum eğimi tutmaya çalışıyor, yani görüş kamerasının üzerinde bir yerde duruyor ve biraz aşağı bakıyor.

Zor bit, projeksiyon kamerasının görüş alanının daima render kamerasından görülen sahneyi kapsadığından emin olmaktır. Elimde uygun dönüşümlerin nasıl hesaplanacağını ayrıntılandıran bir kaynağım yok ve elden türetmek sıkıcı olabilir.

Farklı bir çözüm, sinyal işleme araç kutusunu tutmaktır: Resminizde görülen eserler, yansıtılan ızgara tarafından dalga yükseklik alanının yetersiz örneklenmesinden kaynaklanan temelde takmadır. Bu nedenle, bir çözüm, bir ızgara hücresinin yansıtılan alanına bağlı olarak yükseklik alanını uygun şekilde filtrelemektir. Bunun okyanusların çevrimdışı oluşturulmasında kullanıldığına inanıyorum ve aslında ufuktaki dalgaların düzleşmesini sağlıyor. Ancak, bu yaklaşımın makul görünmesini sağlamak için yüksek kaliteli anizotropik filtrelemeye ihtiyacınız olacağından, gerçek zamanlı renderlemede bunun ne kadar mümkün olduğundan emin değilim.


Tavsiye için teşekkürler, şimdilik tembel çözümü seçtim. Köşe gölgeleyicisinde kameradan mesafeden dalga zayıflamasını belirleyen bir işlev kullanıyorum.
Gábor Szalóki


3

Maya gibi bazı yazılımlar bunu, kamera konumuna odaklanan ızgarayla aynı şekilde bir kutup (veya aslında kutupları uzaktan döndüren kartezyen) kullanarak çözer. Bu kurulum, en çok sayıldığı yere daha fazla ayrıntı ekler Sonra, daha fazla aralıkta gölgelendiricilerin normal işlemesine güvenir. İyileştirme malzemeleri için yer var. Bu yaklaşımı biraz değiştirirsiniz ve kameraya doğru örgü yoğunluğunu artıran başka bir şekle sahipsiniz. Bunun yararı, dikiş hakkında endişelenmeden efekti ufka kadar gerebilmenizdir.

Bu durumda yer değiştirenin karıştırılmamasının püf noktası, uzaklaştıkça yer değiştirmeyi yavaş yavaş azaltmanızdır. Daha sonra, ilerledikçe piksel gölgelendiricisinde normal modifikasyonu kullanırsınız. Filtrelemek, doğru bir shiluette kenarını filtrelemekten daha kolaydır. Ayrıca, bunu çok uzakta görebiliyorsanız, o zaman vaw'leriniz muhtemelen yeterince düzdür.


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.