STOKE MXとFumeFX
概要
このチュートリアルでは、Stoke MXでVelocity FieldソースとDistributionソースとしてSitni Sati社のFumeFX流体シミュレータでの両方の使用方法について説明します。
基本的なシーン
まず、テストシーンを何もない状態から作成します。
- 新しい3ds Maxのシーンを開きます。
- 半径15でワールド座標が[0,0,0]のティーポットを作成します。
- XY平面に存在しないことを確認するため、ティーポットを上に10.0移動させます。
- WidthとLengthを120.0に、Heightを300.0にしたFumeFXグリッドを[0,0,0]に作成します。そのほかのすべてのパラメータはデフォルトの値のままにします。
- FumeFX UIを開き、Outputロールアウトで、Exported ChannelsのリストのSetをクリックしてVelocityとTemperatureを追加します。
- FumeFX ObjectSrc ヘルパーを作成してティーポットを選択(pick)します。
- FumeFX UIのObjectsロールアウトでObjectSrcヘルパーを選択(pick)します。
- FumeFXのシミュレーションを実行します。
- display optionでVelocityをチェックします。
結果:Velocityはビューポートで色つきのラインとして表示されます。下は100フレーム目時のものです:
単純なStokeシミュレーション
では、FumeFXの速度を使用していくつかのStokeパーティクルを移流してみましょう。
- FumeFXグリッドオブジェクトを選択します。
- ツールバーのStokeアイコンをクリックして、Stokeオブジェクトを作成するために設置平面上のどこかの場所をクリックします。
結果:Distribution Sources とVelocity Sourcesの両方にFumeFXシミュレーションを設定した新しいStokeオブジェクトが現れます。
- もしあなたがツールバーをカスタマイズしていない場合は、コマンドパネルの作成タブ経由でStokeオブジェクトを作成し、DistributionとVelocity Sourcesの両方にFumeFXを選択します。
StokeMXのそれらデフォルト値の設定をすべてそのままということは、100個のパーティクルが、FumeFXシミュレーションのソースチャンネルに基づいてフレームごとに放出し、FumeFXの速度によって移流することを意味します。
- SIMULATEボタンをクリックし、シミュレーションが終了するのを待ちます。現行のクアッドコアi7のマシーンでは、2秒程度かかります。
結果:パーティクルはFumeFXシミュレーションに従って、100フレーム目に先ほど見たベロシティフィールドとよく似たクラウドが生成されました。
- Display modeをLarge DotsからVelocityに変更します。長さ0のラインは描画しないので、0の速度をもつパーティクルは消えてしまうことに注意してください。
ソースジオメトリから放出する
前のステップでは、新しいパーティクルを作成するためにFumeFX自体をソースチャンネルとして使用しました。これはソースがシミュレーション自体のものしかない場合や、エミッタオブジェクトがすでに存在しない場合に有効です。
このアプローチの欠点は、ソースオブジェクトが持っていたかもしれない何か他のチャンネルへのアクセス権がないことです。
現時点で、FumeFXのシミュレーションのエミッタとして使用したティーポットをまだもっているので、Distribution SourcesリストにあるFumeFXのチェックをはずして、代わりにジオメトリのティーポットをDistribution Sourcesリストに選択(pick)できます。
- Distribution Sourcesリストに登録しているFumeFX001の前にあるチェックボックスのチェックをはずします。
- By Name…ボタンをクリックして、Distribution SourceとしてTeapot001を選択します。Teapot001はデフォルトでチェックされます。
- Channelsリストが、TextureCoord他多数を含むジオメトリチャンネルを表示していることに注意してください。
- 再度シミュレーションします。パーティクルクラウドの結果は非常によく似ています。
以下は、PRT Loaderがティーポットのサーフェスから放出したパーティクルを赤で表示しているものと、FumeFX ソースチャンネルから放出したパーティクルを黄色で表示しているものを比較しています。分布は明らかに異なるとはいえ、クラウドの全体的な形状はほぼ同じです。
Krakatoa PRT FumeFXオブジェクトから放出する
これまでで、私たちはジオメトリ、パーティクル、FumeFXシミュレーションからのパーティクル放出をサポートしているStoke搭載のDistribution Source機能を使用してきました。
(無料評価版を含む)Krakatoa MXのユーザにより多くの柔軟性を提供する先進的な手法は、FumeFXシミュレーション内よりも多くの制御が必要な場合、中間ソースとしてPRT FumeFXオブジェクトを使用することです。
- FumeFXグリッドを選択してKrakatoa ツールバーからFFXアイコンをクリックするか、Krakatoa メニューからCreate PRT FumeFX object…を選択します。
- Seed in SmokeとSeed in Fireをチェックし、両方のMinimum valuesを0.0に設定します。
- スタックにKrakatoa Magma modifierを追加し、Temperature(温度)チャンネルを読み込み、Less論理演算子を使用して285.0と比較して、Selection(選択)チャンネルとして出力するフローを設定します。
- 温度が閾値未満であるパーティクルを削除するためにKrakatoa Delete modifierを追加します。
- Stokeオブジェクトを選択します。
- Distribution SourceにPRT FumeFXオブジェクトを選択(pick)します。
- 放出させないためにティーポットのチェックをはずします。
- SIMULATEボタンをクリックしてシミュレーションが完了するまで待ちます。
結果:PRT FumeFXで作成したFumeFX Temperatureチャンネルに基づいて、パーティクルに炎系が設定され、Stokeパーティクルがそれらのパーティクルにシードされます。
- Distribution SourcesリストのPRT FumeFXを選択し、Use Seed Count As Rateオプションにチェックします。
- 再度SIMULATEを押します。
結果:各フレームで、1個のStokeパーティクルがPRT FumeFXシードパーティクルそれぞれに作成され、非常に高密度なクラウドを作成します。
この時点で、次のFumeFX関連チュートリアル用にシーンを保存します。
放出(Emission)でFumeFX Channelをサンプリング
直接放出する際にStoke MX自体がFumeFXチャンネルを表に出さない場合、PRT FumeFXオブジェクトにあるすべてのチャンネルは、もちろん、上記で概説している方法で間接的に放出する際にStokeからアクセス可能です。
- PRT FumeFXオブジェクトのMagma modifierを無効にします。
- PRT FumeFXベースオブジェクトでSeed In Smokeチェックボックスのチェックをはずし、Seed In Smokeはチェックしたままにします。
- Stokeで使用可能なチャンネルリストの中のTemperatureチャンネルをチェックします。
- SIMULATEボタンを押します。発生のときのTemperature(温度)チャンネルの値をStokeのパーティクルは含んでおり、アニメーションを通じてその値を保持します。
- StokeオブジェクトにMagma modifierを追加して、Temperatureチャンネルを読み込み、300.0の倍率で除算し、結果を0.0と1.0の間でクランプし、値をベクトルに変換し、TextureCoordチャンネル(Mapping channel 1)で出力するというフローを設定します。
- 温度ベースマッピング座標に従ってマッピングするために青→黄色→赤の色にしたグラデーションランプを設定した標準マテリアルをStokeオブジェクトに適用します。
結果:パーティクルは、それぞれの出生点の温度を反映し、アニメーションの間ずっと維持されます。








