郭一璞 魚羊 發自 凹非寺
量子位 報道 | 公眾號 QbitAI
還沉醉在《黑神話:悟空》精細的3D計算機特效裏呢?
做3D特效這件事兒,一浪更比一浪強。
最近,一位名叫John Lin的網友,就分享了自己做的3D流體特效。
注意,用GPU渲染之後,運行下面分享的所有特效效果,都只要一塊CPU。
而且是實時的,你可以用鼠標操縱改變水流和環境。
比如,彩虹色的流水注入不規則的泳池,整個水流的形狀、波瀾,完全符合現實世界的物理特徵。
水滿則溢,右邊的瀑布劃出了漂亮的拋物線。
甚至還能做出這種類似跑馬燈的效果。
水揚上天,瞬間激起了潔白的浪花,衝撞天花板的各個角落。
如果把地形改得再複雜一點呢?
比如,我們把地形改成蘇州園林裏的獅子林這種不規則假山組成的風格?
加上水流,頓時就有了靈動的江南感。
視角穿行其中,就像走在溶洞裏一樣。
如果水流激盪,一樣能穿過每條石頭縫。
真想@一下《江南百景圖》的策劃,下一部遊戲別做2D平面風格了,做出這樣的特效豈不是更加狀況?
甚至,水流還可以適應動態的地形。
不信你看下面的例子。
水流穿過上層容器中心的洞,形成瀑布澆灌下層容器。
如果我們把兩層之間的隔板刪掉,模擬的水流依然可以適應地形的變化,用更快的速度墜落。
簡直巧奪天工。在只用一塊CPU的情況下,有效粒子最高值達到了200萬之高。
如果不過癮,你可以可以看看視頻完整版:
其實,上面的特效用到的工具是MLS-MPM算法,它的一作正是姚班畢業生、MIT在讀博士胡淵鳴大神,在賓夕法尼亞大學蔣陳凡夫老師的指導下完成。
水流的效果,讓胡淵鳴本人都覺得驚豔,稱讚作者代碼功底強。
而且,不少同行開發者看到之後也都讚歎不已,impressive、awesome,各種好詞輪流誇:
他們覺得,能在單個的CPU核心上跑起來,簡直驚人。
MLS-MPM是什麼
胡淵鳴團隊發表在SIGGRAPH 2018上的一篇論文,介紹了MLS-MPM算法。
MLS-MPM,全稱是Moving Least Squares Material Point Method,移動最小二乘材料點方法。
用移動最小二乘法,將APIC(The Affine Particle-In-Cell Method)和動量方程弱形式一致的力計算統一起來,實現了新的應力散度離散化,使MPM的運行速度快了兩倍,還成功模擬了MPM此前並不支持的各種新現象,包括材料切割、動態開放邊界和剛性體的雙向耦合。
它的基本步驟是這樣的:
(1)從粒子到網格。使用APIC將質量和動量從粒子轉移到網格上。
(2)更新網格動量。用半隱式歐拉法或隱式歐拉法更新網格動量。
(3)從網格到粒子。使用APIC將網格中的速度和仿射/多項式係數傳遞給粒子。
(4)粒子變形梯度。利用速度梯度的MLS近似更新粒子變形梯度。
(5)更新粒子塑性。預測粒子變形梯度的塑性(如果有的話)。
(6)粒子平移。用新速度更新粒子位置
與傳統MPM唯一的區別是步驟(2)中力的表達和步驟(4)中粒子變形梯度的更新。
MLS-MPM在這兩個步驟中均比MPM更容易實現,可以輕鬆實現性能的提升。
另外,為了解決材料不連續和剛體耦合等問題,胡淵鳴團隊還開發了Compatible Particle-In-Cell(CPIC)算法,允許基於粒子和網格節點之間的相對位置的材料點不連續和無限薄的邊界。
這樣就可以把MPM和剛性體雙向耦合在一起,實現切割的模擬。
現在,藉助這個算法,就可以實現各種和符合物理規則、看起來像真的一樣的運動特效了。
【來源:量子位】
聲明:轉載此文是出於傳遞更多信息之目的。若有來源標註錯誤或侵犯了您的合法權益,請作者持權屬證明與本網聯繫,我們將及時更正、刪除,謝謝。 郵箱地址:[email protected]