2 流体シミュレーション | ||
さてでは本題となる流体シミュレーションを始めたいと思います。 この流体シミュレーションでは 1 3Dオブジェクトを別のソフトで作成→2 RealFlowへとインポート→3 3DCGソフトへインポートしレンダリング を行いたいと思います。 ありきたりの内容ですがRealFlowをほかのソフトと組み合わせて使う人には必須の作業だと思います。 またRealFlowには残念ながらレンダラーが搭載されていないので、シミュレーションの結果をアニメーションして吐き出したいのならレンダラーを搭載したほかの3DCGソフトが必要になります。 今回のレビューでは3ds Maxと組み合わせて使用していきます。 このレビューではオーク(http://www.oakcorp.net/)のサイトで配布されてりる3ds Maxのエクスポーター用のプラグイン、チュートリアルを使用させていただきました。
|
||
●3Dオブジェクトを作成する | ||
まずは3dsMaxでシミュレーションするオブジェクトを作成します。 今回は初めてということもあり単純にホースとバケツを作成しました。 下の画像(図3-1)がmaxで作ったオブジェクトです。
図 3-1 ここで先ほどのプラグイン(図3-2)を使用してシーンファイルを吐き出していきます。なぜオブジェクトファイルで吐き出さないのかというとオブジェクトファイルで吐き出すと3dsMAXでつけたアニメーションが流用できないからです。 今回は特にアニメーションは設定しませんでした。
図 3-2 これで3dsMax上でのオブジェクトの作成は終了です。プラグインのおかげで割とすんなりと出来ました。
|
||
●RealFlowへのインポート | ||
3dsMaxでの先ほどのデータをRealFlowを起動して読み込みます(図4-1)。 読み込みはimport→先ほどのファイルを選択します。 またCG系のソフトでは当たり前ですが、複数のソフトを同時に起動すると著しく動作が遅くなることがあります 3dsMaxとRealFlowを同時に起動することも出来ますが、不安定になるのでやめておきましょう。 図 4-1 割とすんなりシーンデータを持ってこれたのですが少し大きいような気がします。 ためしにパイプの大きさをメジャーツール(図4-2)を使用して図ってみると、なんと8514㎡もsufaceがありました。 いくらなんでも大きすぎます。 また余談ですがこのメジャーツール、日本用の単位(図4-3)も用意されており使用してみるとtsuboとkokuという日本特有の単位でオブジェクトの大きさを計算してくれます。 が正直な話、逆にわかりにくいです。
図 4-2 図 4-3 さてここでいったん3dsMaxに戻ってもう一度サイズを変更して吐き出しなおすという法方もあるのですがそれはさすがに面倒なのでRealFlow上でサイズを変更します。 Max等でスケールを行うとオブジェクトの基本的な大きさは変更されないのですが、RealFlowではそんなこともなく普通に小さく出来ます。 今回は0.1倍してみました。すると90㎡といい感じの大きさになってくれました。 この大きさでシミュレートしたいと思います。
|
||
●RealFlowでのシミュレーション | ||
今回も特に水の設定は変更せずにシミュレーションを行っていきたいと思います。 デーモンに重力を付加した以外は最初のシミュレーションとあまり変わりません。 また今回のシミュレーションでは何かシミュレーション速度が遅いなと思っていましたが、オブジェクトの「collision distance」というパラメータの値が大きすぎたのが原因のようでした。 シミュレーションをする際は水の流れがわかるように、3Dオブジェクトをボックス表示にしてシミュレーションをします。 下の画像(図4-4)がシミュレーションの結果です。
図 4-4 コップの中にある水にさらに水を足すというシミュレーションが簡単に作成できました。 またRealFlowではシミュレーションを途中で止めることが出来、さらにシミュレーションの途中にRealFlowを終了しても前回の続きからシミュレーションを始めることが出来ます。 この機能は非常に便利です。
|
●メッシュの作成 | |
RealFlowでシミュレーションは本来パーティクル(粒子)で行われます。 しかしながらこれでは3DCGソフト上でマテリアルなどを適応してレンダリングすることが出来ません。 そのためRealFlowでは先ほどのシミュレーションで発生させたパーティクルをメッシュで囲ってそれをメタボールのように扱い、水のような感じを表現します。 なのでシミュレーションのワークフローとしては以下のようになります。 1 3Dオブジェクトとパーティクルの衝突距離、パーティクルの質感を設定 2 シミュレーションをしてパーティクルの流れをシミュレート 3 2で発生したパーティクルの周りにメッシュを適応し、メタボールのような表現をしメッシュを連結 この最後のメッシュの生成なのですが、以外に設定が難しいです。 上に記載したようにRealFlowではオブジェクトとパーティクルの衝突は計算できますが、メッシュの衝突は計算できないため液体を表現したメッシュがオブジェクトを通過してしまうこと(図 4-5)があります。 今回のレビューでは何度も失敗して、くじけそうになりました。 図 4-5 赤枠で囲った部分は生成したメッシュがオブジェクトを通過してしまっている場所です。 |
●シーンデータを3dsMaxに書き出す | |
ここではデータを3dsMaxから書き出したと同様にオークのプラグインを使用します。 オークさんのプラグインを使用するとパーティクル、メッシュ、RealWaveの情報を3dsMaxに持っていくことが出来ますが。 3dsMaxにパーティクルの情報を持ってきても、マテリアルの設定が出来ないので今回はメッシュの情報だけを持ってきます。 図(4-6)は3dsmaxにシミュレーションの結果を無事に読み込めた様子です。 図(4-6) RealFlow状でスケールして値を変えていたので、メッシュも小さくなってしまっているのではないか?と不安でしたが無事に規定の大きさになっています。 あとは先ほど発生した液漏れ(図 4-5)を解消するためオブジェクトを少し変形していきます。 |
||
●3dsMaxを使用してのレンダリング | ||
一番最初にも述べましたが、RealFlowにはレンダラーが搭載されていません。 そのためほかの3DCGソフトにシミュレーションの結果を書き出してレンダリングします。 先ほどの読み込んだRealFlowのメッシュに水のマテリアルを適応してレンダリングします。 今回は水の流れをわかりやすくするために色をつけてみました。 図(4-7)がレンダリング結果です。 図(4-7) せっかくなので動画(QuickTime形式)にもしてみました。 ここまで一通りの作業をした感想はやはり、シミュレーションの数値設定が非常に難しいということです。 パラメータの意味を知っていたとしても空気抵抗、摩擦力など物理的なことも考えないといけないので大変です。 また数値をいじったからといって、狙ったと通りの結果を出すのは困難だと痛感しました。 単純に水の流れをシミュレートするだけなら簡単なのですが、オブジェクトを通過させずにきれいに結果を出すというのは思ったよりも至難の業です。RealFlowのインターフェイスは非常にすばらしく使いやすいのですが、シミュレーションの結果を狙ったとおり出力するとなるとやはり数値設定が大変です。
|