Yağlı / kirli su işliyor mu?


19

Dışarıdaki herhangi bir gölgelendirici sihirbazının, buna benzer yağlı / kirli su etkisine nasıl ulaşılacağı hakkında bir fikri vardır:

yağlı su

İdeal olarak, su düzgün bir şekilde yağlı olmaz, ancak bunun yerine yağ bir kaynaktan (kimyasal bir tesisten kirletici bir drenaj gibi) üretilebilir ve daha sonra su kütlesi boyunca yayılabilir. Bu bölüm için düşüncem su yüzeyinde her noktada yağ yoğunluğunu belirleyen bir 2B doku olarak bir "petrol haritası" tutmak olacaktır. Su kadife ile doğal olarak yayılır ve hareket eder; o noktada (dinamik dalgalar için dalga parçacık simülasyonuna sahibim ve zaten su yüzeyinde köpük için benzer bir şey yapıyorum). Bununla birlikte, petrolün su ile aynı hızda hareket etmeyebileceğinden, bunun ne kadar fiziksel olarak doğru olacağından emin değilim.

Ve tüm bu trippy renkleri nasıl yapacağım hakkında hiçbir fikrim yok :-). Düşünceler?


Bir doku kullanın ..? Kromatik radyal gradyan, biraz bozulma uygulayın ..
bobobobo

@bobobobo - Baktığınız yön, hangi renklerin gösterileceğini etkiler, ancak ... youtube.com/watch?v=NRtUoMG16ZU
Robert Fraser

1
Sen dayalı bir shaderı uygulamak isteyeceksiniz en.wikipedia.org/wiki/Thin-film_interference ama bir yazma konusunda gitmek nasıl hiçbir fikrim yok.
jzx

2
( gamedev.net/page/resources/_/technical/… ) Bir cevabı damlatamıyorum çünkü konuyu bilmiyorum
horatio

Yanıtlar:


25

Bir yağ tabakasının renklerinin fiziksel temeli yanardönerdir ve ayrıca Newton'un halkalarıyla da ilişkilidir . Özellikle, yağ tabakasının kalınlığı ışığın dalga boyu mertebesindedir. Işık yağın hem üst hem de alt yüzeyinden, herhangi bir dalga boyunda yansıdığı için, bazı açılardan, iki yansıma faz dışı olacak ve birbirini iptal edecektir; diğer açılardan yansımalar evrede olacak ve birlikte eklenecektir. Bu, her dalga boyu için farklı açılarda gerçekleşir, bu nedenle yağı beyaz ışıkla aydınlatmak tüm bu renkleri üretir. Tek bir frekansla (örneğin lazer ışığı) aydınlatırsanız, yalnızca bir dizi açık ve koyu halka görürsünüz.

Yağ tabakasındaki kırılmayı görmezden gelirseniz, sadece durumun geometrisini çalışarak, herhangi bir dalga boyu için yansıyan ışığın parlaklığının

sin(2.0 * pi * oilThickness / (dot(L, H) * wavelength)) * 0.5 + 0.5

Teorik olarak bu tüm dalga boylarına entegre edilmelidir, ancak pratikte muhtemelen sadece kırmızı, yeşil ve mavi için yapabilirsiniz - diyelim ki sırasıyla 700, 550 ve 400 nm. Yağ kalınlığının değiştirilmesi, renk halkalarının görünen yarıçapını değiştirecektir. Muhtemelen 2.0 * pi * oilThickness / wavelengthgölgelendiriciye eşit bir değer olarak sağlanan tek bir RGB değerine sararım. İsterseniz, değişen yağ kalınlığını simüle etmek için bir doku ile çarpabilirsiniz - muhtemelen yukarıdaki resimde ilginç dokuların çoğunu veren şeydir.

Bu, BRDF'nize çarpabileceğiniz bir RGB renk değeri üretir. dot(L, H)Faktör noktası / yönlü ışıklar için kullanılacak ve yerini alabilir dot(N, V)bir ortam haritası yansıması bu uygulamadan için de içeride.

Feragatname: Bunu bir gölgelendiricide denemedim, sadece bazı diyagramlar çizdim ve kendimi "işe yaraması" gerektiğine ikna ettim ... bu yüzden denerseniz sonuçları bana bildirin! :)


Güzel şeyler. Üst ve alt yağ yüzeylerinde yansımaların olmasının nedeni, bazı dalgaların tepeye yansıtılması, diğerlerinin kırılmasıdır. Bu kırılan dalgalar, tekrar kırılabilecekleri veya yansıtılabilecekleri botton yüzeyine ilerler.
dsilva.vinicius
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.