第二回 : RealFlowレビュー: RealWaveについて

1. RealWaveってなんですか?

オフィシャルからの説明も引用させてもらうと、"RealWaveは水面上における波の伝播を追跡する事ができる物理学に基づいたウェーブシミュレータです。RealWaveは浮力のシミュレーション機能も備えており、水に浮かび漂うオブジェクトをリアルに再現する事が可能です。"とあるように、波のある海面や、水上を走るボート、お風呂に浮かぶアヒルのおもちゃなどをリアルにCGで再現できる機能です。RealFlow 3 から統合されたインターフェースにより、より簡単に RealFlow の機能と連携させることができます。どんなシーンができるかは、こちらのギャラリーを見て貰うと分かりやすいと思います。リンク先は、RealWave 2 のギャラリーで、バージョンは低いですが、おおよそこのようなシーンを再現できます。

2. 作業手順

今回は 3D Studio Max (以下、Maxと表記) と一緒に使ってみたいと思います。オークのプラグインダウンロードページから

Max 用のプラグインをダウンロードして、Max のプラグインフォルダにインストールしておきます。すると、作業タブ内、ジオメトリのプルダウンリストに、"Next Limit" という項目が出るようになるので、そこからパーティクルや、流体のメッシュ、RealWave で作られた水面がインポートできます。また、Max 上で作り、RealFlow 内で計算したオブジェクトは、システムタブから "SDLoader" を使うことでインポートできます。同様に、システムタブから、Max で作ったオブジェクトをエクスポートする、 "SceneData Saver" も利用できます。システムタブのボタンに前もって、この2つのボタンを追加しておきましょう。

 
Next Limitメニュー
 
SceneData Saver & SDLoader

Max と RealFlow との連携は、基本的に、このプラグインを介して行います。共通して使われるデータのフォーマットが "SD" フォーマットです。ヘルプを読んでみるに、ワークフローは次のような感じです。

  1. Max でオブジェクト、及び、シーンを作ります。
  2. Max のシステムタブから "SD Saver" を使い、オブジェクトを RealFlow へエクスポートします。
  3. SD ファイルを RealFlow 内へインポートします。
  4. RealWave、加えて各エミッター (パーティクルを放出) やデーモン (物理的な効果:重力や風など) を使い、シミュレーションします。
  5. シミュレーションで保存された各シーケンスを Max へインポートします。
  6. ライトの設置、マテリアルやコースティクスの設定を行い、レンダリングします。

以上のワークフローにより、水面や流体のCGムービーが作られます。

RealFlow や RealWave の機能を学習するために役立つサンプルファイルやチュートリアルチュートリアルビデオが Next Limit、オークのRealFlow紹介ページにあるので、これらを参考にすると効率的に操作方法を覚えられると思います。

3. ではさっそく、基本的なシーンから作ってみます。まずは、 Max でオブジェクトを作ります

英語のマニュアルを頑張って斜め読みしつつ、さっそく 「ボックスの中にある水面」 とテーマでシーンを作ってみたいと思います。

と、その前に、オークにあるこのチュートリアルによると、単位設定が重要らしいので、まず Max の単位をメニューの、カスタム -> 単位設定から 「センチメートル」 にしておきます。

Max の単位設定

では、ボックスを作成します。作成タブの標準プリミティブからいつものようにボックスを追加。大きさは、長さ、幅、高さの全て、 100cm です。

ボックスを作る

これをシステムタブの "SceneData Saver" からエクスポートします。 SceneData Saver を押して、SD Saver Settings をクリックします。フレーム数を聞いてくるダイアログが出るので、そのままで "SAVE SEQUENCE" をクリックします 。 あとはパスを指定して保存です。

   
SD 形式で保存します
 
オブジェクトを選んで SET を押します
 
フレーム数を設定してセーブする

これで、まずオブジェクトの作成は終わりです。 「え?たったこれだけのことに Max を起動しなきゃいけないの?」 とお思いの方もいるでしょうか?少々の手間ですが、残念ながら(?)RealFlow内ではオブジェクトを作ることができないので、いかに簡単なプリミティブといえども、Max で作り、SD 形式でエクスポートしてやる必要があります。とはいえ、1度ボックスやボール、ピラミッドや長方形など、実験用のオブジェクトを作っておけば、後々使いまわせるので、実験用にいくつか作っておくのも良いと思います。

RealFlow が様々なOS、プラットホームで利用できるのには、この SD という共通のデータフォーマットも大きな役割を担っているのでしょう。まだ試していませんが、おそらく、Kaydara の FBX のように、流体シミュレーションを利用するシーンを RealFlow を中心としてソフトウェアをまたいで連携できるのだと思われます。

4. RealFlow 内へオブジェクトをインポートし、 RealWaveで水面を作ります

次に RealFlow を起動し、プロジェクト名を指定し、開きます。ここで、先述した単位設定をここでも行います。先のページには、RealFlow の環境を "3ds max" スケールを "0.01" にするとあったので、その通りに設定してみました。

環境を 3ds max に、スケールを 0.01 に設定

先ほど、保存したボックスをインポートします。オブジェクトのインポートは、右のパネルの "Objects"ボタンをクリックし、フォルダを開けるアイコンをクリックして、先ほど保存したボックスを選択します。

オブジェクトをインポートする

次に、いよいよ RealWave を使います。パネルの左にある波のアイコンをクリックして、更にその下の波のアイコンをクリックします。すると次のような状態になります。

 
RealWave オブジェクトを作る
 
ボックスと RealWave

青色のワイヤーフレームがこれから水面になるオブジェクトです。赤のワイヤーフレームがボックスです。このままでは大きさが違うので、Max と RealFlow の単位を揃えるため、ボックスを選択した状態で、RealFlow の "Measure Utility" を Tool メニューから呼び出し、ボックスを計測してみました。100cm×100cm の面が6面あるので、6m^2 となっています。このままではボックスの方が大きいので、RealWave にフィットするように拡大した後、もう一度計測します。拡大の前に、インポートしたオブジェクトは"SD <-> Curve"ボタンで RealFlow 内でエディットできるようコンバートしておきます。

   
ボックスの表面積など
 
拡大
 
拡大後の表面積

ちゃんと 5m×5m の6倍で、150m^2 になっています。この結果を参考にすれば、Max のシーンと RealFlow のシーンで大きさが揃えられるでしょう。

試しに、このままの状態で、Action を押してみましょう。何も起こらないはずです。RealWave で作ったオブジェクトはあくまで土台であって、ここにオブジェクトとの衝突や波の効果をつけることで水面ができます。では、波を設定します。見やすいようボックスの中央付近に RealWave を移動させ、RealWaveのパネルで水面オブジェクトを選択し、"Create new wave" から "Fractal" をクリックします。この状態で Action を押し、計算してみます。すると次のようになりました。

Fractal を適用したところ

波が立ちました!でもこのままだと波が穏やかすぎるので、もうちょっと波の数を増やしたいと思います。パラメーターを眺めてみたところ、"Scale X, Scale Y" の項目がありました。このパラメーターを上げて、再度計算させてみます。とりあえず両方とも5倍にしてみました。

波がたくさん!

波がたくさん出てくれたので、これをこれから Max へエクスポートしたいと思います。

5. SD 形式へエクスポートし、Max でレンダリングします。

エクスポートの設定は、"Export Central"

から行います。開いたダイアログで "Export All" をクリックし、Done をクリックします。この設定の後、 Reset を押し、もう一度 Action を押して、再計算させると、プロジェクトフォルダ内にデータができます。その後、Max を再び起動し、作成タブのオブジェクトメニューから "Next Limit"を選択します。すると、3つのボタンがでるので、このうち、 "RW Loader"をクリックします。"Select .SD file"というボタンがあらわれるので、これをクリックして、先ほどプロジェクトを保存したパスにあるフォルダのうち、"objectsフォルダ"を開き、"Realwave01.sd"というファイルを読み込み、"CREATE SURFACE"ボタンをクリックします。

 
Export Central
 

とりあえず Export All を選んでおけば安心

 

Select .SD file -> CREATE SURFACE

ここまでの作業で RealFlow でシミュレーションした水面が Max にインポートできました。しかし!ヘルプに載ってる情報を自分流に理解したつもりができていなかったような部分が!ボックスはシステムタブの方から読み込んではみたものの、比率がおかしなことになってしまった(水面に対してめちゃめちゃデカイ)。別に RealFlowでアニメーションをつけたわけでもないので、ボックスの SD ファイルも RW Loader から読み込むと水面と同じ大きさになってくれた。ただ、RealFlow 内で5倍したのはしっかりと利いているようで、水面の方を 1/5 に縮小しておけばよかったと後で思いました。この辺のスケールの互換性は、ちょっと気の利いたコンバートツールとかが付いていると安心かもしれません。

テーパで幅を計ったところ、約 500cm でした。

ここから、マテリアルとレンダリングの作業です。マテリアルは分かりやすいように、次のようにつけました。ボックスはコーネルボックス風に、法線をフリップして側面にそれぞれ赤と緑と白、水面は透明度 100%、屈折率 1.35、鏡面反射光レベルを 155 の 40 と適当に設定して、次の左の図のような感じに。水面にコースティクス生成のオプションをプロパティからチェックし、オムニライトを設定してレンダリングしてみたものが右の図です。動画の方は、すみません、レンダリング時間縮小のため、各種オプションを外しました。ゴージャスコースティクス&レイトレが見たい人は、ギャラリーをご覧になるか、ダウンロードして自分で試してみましょう。

 
プレビュー
 

サンプルムービー

6. ちょっと実験。 RealFlow パーティクルと併用 & 水面をかき回してみる。

長くなっちゃいましたが、ここで他にも実験したシーンをご紹介します。

まず、RealFlow から RealWave に水を流し込んで波が立つテストをしてみました。シーンツリーは次のようにしました。

 
シーンツリー
 
RW_Particle_Interactionの設定

サンプルムービー

ちゃんと波が立っていますね。成功ですムフフ。次は、球体を使って、水面に筋を立ててみたいと思います。Maxで球体を作り、RealFlow へインポートします。その後のことは、物理計算も関係してくるので、次回との重複を避けるため、今は秘密ですが、サンプルムービーをご覧ください。ちゃんと、球体と接触と抵抗を持ってアニメーションしています。

7. 感想など

というわけで、使ってみました、 RealWave。ただ波を立てるだけならヘルプを見ながらであれば、5分足らずでシーンができてしまいますが、やはり RealWave の真価は物理計算や RealFlow との併用で発揮されるのだと思いました。今回は、ほとんど物理計算を行わないシーンを作りましたが、実際はおまけのシーンのように、複数のデーモンやエミッターを使うことで、非常に興味深いシミュレーションを行うことができます。インターフェースは洗練されており、特に使い方で迷うことはありませんでしたが、ただ、各パラメーターがどのような意味を持つかの理解は必須でしょう。RealWave は RealFlow Ver.3 から統合されているようですが、これは非常に必然的だったと言えると思います。実際にサンプルシーンや実験を重ねて分かるのが、RealFlow が持つ様々な機能を組み込むことにより、目的に応じたリアルなシミュレーションが行えるということです。

ただ、全ての水面を用いるシーンが RealWave のみで完結できるわけではないように思いました。ダイナミックに動く量感たっぷりの水などは恐らく RealFlow にまかせた方が効果的な演出が行えるのではないでしょうか。ただこれは、だからこそ RealFlow と統合しているのだと見れば、RealWave の欠点ではないでしょう。

欠点をあげるとすれば、RealWave のみの不満ではないですが、ややスケールの互換性が少々手こずるため、なにか簡便な手段が欲しいところです。

この他にも、実は水面のシミュレーションだけではなく、RealWave を使ったサンプルシーンには足の型=フットプリントを作るデモなどがあるところが RealWave の潜在性を感じさせます。是非試してみてください。実は、RealFlow は体験版がダウンロードできるのですが、機能制限が一切ないので、対応している 3DCG ソフトさえ持っていれば、すぐに機能が試せます。このあたりからも、Next Limit の自身と力の入れようが伺えますね。次回は、物理計算を使ったレビューをお送りしたいと思います。それではまた。