FluidFXとFluidPBDの違い
FluidFXとFluidPBDはいずれも流体のダイナミクスですが、その違いがどのように出るのか確かめてみました。
小規模なものを用意し、それをスケールアップしてパーティクルの流れを確認しました。
検証シーン
シーン中の立方体、円柱のプリミティブを満たしたパーティクルを重力により動かします。
シーンの長さは10秒(300フレーム)
シミュレーション演算時間
シーンの大きさ | ダイナミクス | 演算時間(分) |
---|---|---|
Large | FluidFX | 130分 |
Large | FluidPBD | 63分 |
Small | FluidFX | 12分 |
Small | FluidPBD | 13分 |
比較映像
考察
当初の想定以上に違いが出ており、FliudFXの方がリアルな挙動になります。X-particlesのドキュメントにもある通り計算方法の違いによるものと推測され、特に流体の端の部分の挙動に違いが大きいかと思います。これはシーンの大きさに関係なく現れる傾向だと思われます。
大きなシーンにおいては、細部の挙動に違いは出ていますが、大きな流れにおいては似た傾向が出ているようにも見えます。もちろんリアルな方が良いのですが、問題は演算時間です。今回のシーンは10秒(300フレーム)で、それぞれのキャッシュ作成(シミュレーション演算)時間は、このようになりました。
小規模のシーンの演算時間はほぼ同じと考えますが、大規模なシーンの演算時間においてはFluidFXは2倍の演算時間が必要になっています。
シミュレーションにおいては、最初から詳細な演算を行うことはありませんので、初期のトライ&エラーの際にはFluidPBDの演算時間は、FluidPBDの演算の速さは大変魅力的です。
※今回のシーンでは小規模の演算結果で違いが大きくこちらは改めて試験するべき必要があるかと思います。
FluidPBDとFluidFXを変えるのみで大きな違いが生じないのであれば、これらを制作のステップで切換ていくのも良い方法なのかもしれません。
次期X-particlesではGPUがサポートされるとの情報が出ておりますが、これまでのFluidFXと違うダイナミクスでの実装になるのであれば、これらの比較検討も今後行っていきたいと思います。