DreamScapeのDynamicsで船の走行

せっかく付いているDynamicsなので少しは使ってみようと思いマニュアル見ながらやっていたらなかなかうまくいきません。ふと思い出して付いていたビデオマニュアルを見たらしっかり勘違いしていました・・・

そんな状態だったので、反省を込めてまとめてみました。
尚、海面の設定とか、細かい設定の説明は省略しています。あくまでも船の走行のみが目的です。

 


シーンにパーツを配置


船のオブジェクトを用意します。
DreamScapeのSea Surfaceを作成します。
(サンプル画像の場合、サイズは400×400)
水面の分割は、仮で100×100にしておきます
DreamScape DeamonsのDynamicsを作成します。
(取合えず海面と同じ寸法にしています。)

※Dynamicsのエリアの範囲内だけ海面としてダイナミクスが計算されます。

DreamScape WarpsからEngineも作っておいて船の後尾に配置し、船にリンクしておきます。向きはスクリュー見たいなアイコンなので分かるかと思います。
(船外機みたいな感じです)

 


Dynamicsを登録


Sea Surfaceにダイナミクスを登録します。
※DreamScapeのダイナミクスはコマンドパネル内DreamScape Daemonsで行います。


ダイナミクスを設定します


Spacingは1のままにしておきます。細かくディテールを出したい時は数値をさげて、Grid Sizeを増やします(当然計算時間が余計にかかります)。
波が分かりやすいようにWake Scaleを5にします。
(この数値はシミュレーション後に変更できます)
Water Densityを50くらいにします。
※標準のDensityの値はこのサイズには大きすぎるらしく、Dynamicsの面が板のように硬いです。元もとのチュートリアルにあった数値をそのまま使っています。

波を大きめに広げるためにPropagationを6としておきます。

4
船オブジェクトを設定

ダイナミクスを選択し、Objectsに船を登録します。
登録したオブジェクトを選択します
Wake Strengthを20(波にかかる力)
Use Dynamicsをオンにします
Mass/kgを300(ある程度大きくしないと沈みません)
Frictiionを0.05とします。(数値が大きいと船が波に揺られ、なかなか進んでくれません)
Inertiaを1000くらいにします。(うまく直進しない時は数値を上げます)

※Frictionの影響は結構大きいようです。

5
船の重さをテスト

船は予め希望する水位まで下げておきます。
この時点でCalulateを押しダイナミクスの計算をしてみます。
船がその場で波に揺られながら海面に浮きます。
船の沈み具合が希望の通りかを確認します。(極端に軽かったり、海のDensityが大きいと跳ね飛ばされたりします)

必要に応じて重さを変更して再計算してください。

 

※計算をする前に

Viewport Updateは、何フレーム毎に計算結果を画面に反映させるかを指示します。当然随時更新もできますが、その分処理時間がかかります。
Pathを指定していない場合はmax6のフォルダとかに保存されることがあるので、後でフォルダ内のデータ整理をしなくても良い様に、適当なフォルダを作って指定しておく必要があります。
DynamicsのFormのデータも同じ場所に保存されるので、場合によっては結構な量のファイルが保存されることになります。

6
Engineを設定

沈み具合が問題ないようであれば、 DynamicsのObjects欄の船がアクティブな状態でSelect Forcesを選択し、Engineを登録します。

EngineのFroceを1500に設定します。

6
Caluculateを押してシミュレーション実行

波が立ちながら走行すれば成功です。
海面の分割は後から変更可能です。(DynamicsのScaleを変更すると再計算となります)

船がなかなか進まない時
・EngineのForcesを上げてみます。

船が直進しない時
・Inertiaを上げてみます。
・Frictionを下げて見るのもありです。

波の形がおかしい
・Max. Mesh Qualityの値を上げてみます。
・WakeのPropagationを変更してみる(大きくすると、波が広がります)。

希望する波になるようにその他のパラメータを調整します。
(泥沼にはまると時間ばかりが過ぎてゆきます・・・)

 

後付け

上記の数値はある程度実験した後の設定ですが、確定値ではありません。
船の形状が異なると波の立ち方が変わるので、ケースバイケースとなるので、あまり参考にもならないかもしれませんが、これからやってみようという人の少しでも参考になればと思います。
Formを有効にすれば、泡用のマッピング画像ができるので、マテリアルに使用すればかなり雰囲気が変わります。

○追加
Engineを使わず直接Objectを手付けで移動させて、それで波を立てることもできますが、Engineを使った時ほど自然な波にはなってくれないようです。
Object Unyieldingは固定オブジェクトに有効とありますが、ダイナミクスによって発生した波は感知してくれますが、通常の波は素通りするので今ひとつという感じです。
(私の勘違いで、実はちゃんと使えるよ・・・というのなら嬉しいのですが)

尚、今後の実験の具合によっては上記の内容に変更が加わる可能性は大なので、「この前と違うぞ」と言う場合は、日々の進歩と言うことでお見逃し下さい。
またこうした方が良いというご指摘などありましたら、お気軽にご指摘下さい。

[戻る]