Unityに浮力の描写を導入。「FusionWater」を紹介
インタラクティブなコンテンツにおいて実装が難しくなりがちなのが、液体の表現です。以前もGPUを用いた流体のレンダリングを行う「Zibra Liquid」を紹介しましたが、こちらは美麗なグラフィックや説得力のある物理演算と引き換えにGPU資源をふんだんに利用するため、スマートフォンやスペックの高くないデバイスには向きません。一方、ゲームに登場する水面を表現するにはいろいろな手段があります。そのうちの一つが液体と固体のインタラクションを表現する、という手法があります。水面自体のリアルさはある程度にとどめて、水面と外部環境の間の振る舞いによってそのリアリティを強調することが出来ます。
今回紹介するのはUnity向けにCPUベースで軽量の浮力計算を行う「FusionWater」です。
FusionWaterでは比較的サイズが小さく、等方的な立体に利用可能なBasicFluidInteractorと、疑似的な錘をぶら下げることによって複雑な立体の浮力計算を行うことが出来るComplexFluidInteractorをサポートしています。
コードを見るに軽量化のためにかなり大胆な近似計算を行っているのですが、それにも関わらず非常に説得力のある浮力表現に成功しています。
興味のある方はぜひ、githubのリポジトリをのぞいてみてはいかがでしょうか?
FusionWaterのリポジトリはこちら