圖形學中的高逼格物理模擬動畫是如何渲染出來的?

題主最近在做流體模擬方面的探究,很多流體模擬都是基於粒子的,所以我一直都是在opengl中顯示粒子狀態下模擬的結果。閱讀文獻時,看到文章中的渲染結果,感覺逼格賊高。所以想問下,他們是怎麼從粒子渲染出那樣酷炫的效果的?有沒有相關的教程可供大家學習的?


J. Yu G. Turk / Reconstructing Surfaces of Particle- Based Fluids Using Anisotropic Kernels
這篇文章是目前的State of the art, studio里都有自己的實現。
Houdini里一般用vdb_from_particle_fluid一類的簡單levelset重建。


之前參與了銀翼殺手2049,分享一些流體技巧:

場景大小對流體的製作方法影響很大,一般小規模的水流或者水滴是把粒子轉變成poly,其他答案已經提到了。規模較大的流體(比如瀑布,噴濺,有互動的海水)一般是許多元素混合出的效果,以下幾種方法可能混合使用(軟體Houdini) :

- particle convert to poly(particle fluid surface) : 有可能會基於vel或者density控制轉換後的形狀

- particle to vdb to poly (vdb from particle fluid) : 不同方法但原理一樣

- vex控制,根據密度拆分,低密度散濺的粒子copy stamp sphere,大密度的轉換成poly或者vdb同上兩種

然後流體本身的render pass:

- render as liquid: 以上結果正常方法渲染

- render as volume: 以上結果按volume渲染

- render as mask: 根據vel生成黑白遮罩,合成時根據這個來把水的volume合進去,給水增加體積感

-以及額外可能產生的各種pass

基於particle的結算進一步加入white water:

- particle render as volume(foam、bubble、spray): 粒子做volume渲染增加泡沫、噴濺細節

- particle render as partile: 粒子直接做粒子渲染,進一步增加流體細節

繼續加入水霧和煙霧(mist/smoke)

以及每個element設定各種AOV給合成用。

另:以上一切基於好燈光、合成和給力的機器。

不足之處歡迎大家指正,謝謝。


最近正在做fluid fx 強答一發(*′?v?)
houdini裡面一般可以轉化為levelsets然後smooth後轉化為polygon進行渲染

如果是splash,瀑布或者whitewater等可以用wisps進行volumetric rendering


核心:數學公式


推薦閱讀:

TAG:渲染 | 模擬 | 計算機圖形學 | Blender |