x-particlesを使った流水シミュレーションの制作
流体のシミュレーションはCINEMA 4Dのプラグインであるx-particlesを使用することで比較的簡単に制作することができます。
このようなイメージを制作する流れをご説明したいと思います。
場の設定
スケールは実寸よりも小さくします。実寸で作ると演算時間が長くなってしまいますので、最終的な制作で事前のテストでは縮小して行います。
今回は、流体の計算を行う大きさは、およそ長さ10m、横2.7m、高さ3.5mになります。
オブジェクトの配置
まず必要なものは
・xpEmitter(粒子を生成します)
・xpFluidFX(流体の動きを再現します)
・xpGravity(重力を付与します)
この3つがまず必要です。
そして、無駄な計算をしないために、領域を作ります。
・xpKill
この領域外に出たパーティクルは即時消滅します。これが無いと画面外に出てもパーティクルは設定された寿命まで演算を行うことになりますので、無駄な時間を消費してしまいます。
では次に、水が流れる場所を制作します。
これはポリゴンで制作しますので、プリミティブの立方体から編集していきます。
先に作っているxpKillの領域外に出る部分を作っておくと、その部分に流れ出たエミッタが消失することになります。
作ったポリゴンにxpColliderタブを付与します。
xpEmitterを配置します。
これで水の流れるシミュレーションが出来ます。
シミュレーションの設定
emitterの出現数を増やしていくと粒子の量が増えるので水かさが上がります。
このまま増やしても良いのですが、粒子の径を小さくしておくことで粒子の動きが細かくなります。小さくしすぎると計算に時間がかかりますので、目的によって調整します。
粒子の出現数を増やす際に粒子があふれ出るようになりますので、放出速度を上げておくと良いと思います。
このまま出現数を増やしていくと、演算により処理に時間を要しますので、粒子と粒子の間にエミッタを生成し、見た目の粒子の数を増やすモディファイヤを追加します。
xpSheeter
グループに対して効力を発揮しますので、emitterでグループを作成しておきます。この手順はメッシュ化も含めて過去の記事がありますのでご参照ください。
(過去記事:x-particles(1030) ではxpSkinnerの代わりにxpOpenVDBMesherを使う)
次に、水が衝突した際に発生する泡を作ります。
xpFoam
「Add Emitter」で泡を生成するエミッタを作ります。
泡の寿命や発生条件(衝突条件)などをここで設定します。
次いで、水の流れに乱流を付与します。この乱れ(乱流)はリアルな感じを出すのには重要な要素になります。これが大きすぎるとあり得ない動きも出てきますので、程よく調整します。
xpTurbulence
今回の流体は右手側に流れるように設定していますので、流れを良くするために風を吹かせます。
xpWind
その風に沿うように波の動きも付与します。
xpWave
以上が大まかな流れになります。
何かの参考になりましたら幸いです。