Thinkbox Software 製品
ブログ

STOKE MXとFumeFX

概要

このチュートリアルでは、Stoke MXVelocity 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をクリックしてVelocityTemperatureを追加します。
  • FumeFX ObjectSrc ヘルパーを作成してティーポット選択(pick)します。
  • FumeFX UIのObjectsロールアウトObjectSrcヘルパーを選択(pick)します。
  • FumeFXシミュレーションを実行します。
  • display optionでVelocityチェックします。

結果:Velocityはビューポートで色つきのラインとして表示されます。下は100フレーム目時のものです:

Tut03_001_stokemx_ffx_basescene_frame100

 

単純な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フレーム目に先ほど見たベロシティフィールドとよく似たクラウドが生成されました。

 

Tut03_002_stokemx_ffx_basesim_frame100

  • Display modeをLarge DotsからVelocityに変更します。長さ0のラインは描画しないので、0の速度をもつパーティクルは消えてしまうことに注意してください。

Tut03_003_stokemx_ffx_basesim_velocities_frame100

 

ソースジオメトリから放出する

前のステップでは、新しいパーティクルを作成するためにFumeFX自体をソースチャンネルとして使用しました。これはソースがシミュレーション自体のものしかない場合や、エミッタオブジェクトがすでに存在しない場合に有効です。

このアプローチの欠点は、ソースオブジェクトが持っていたかもしれない何か他のチャンネルへのアクセス権がないことです。

現時点で、FumeFXのシミュレーションのエミッタとして使用したティーポットをまだもっているので、Distribution SourcesリストにあるFumeFXのチェックをはずして、代わりにジオメトリのティーポットをDistribution Sourcesリストに選択(pick)できます。

  • Distribution Sourcesリストに登録しているFumeFX001の前にあるチェックボックスのチェックをはずします。
  • By Name…ボタンをクリックして、Distribution SourceとしてTeapot001を選択します。Teapot001はデフォルトでチェックされます。
  • Channelsリストが、TextureCoord他多数を含むジオメトリチャンネルを表示していることに注意してください。
  • 再度シミュレーションします。パーティクルクラウドの結果は非常によく似ています。

以下は、PRT Loaderがティーポットのサーフェスから放出したパーティクルを赤で表示しているものと、FumeFX ソースチャンネルから放出したパーティクルを黄色で表示しているものを比較しています。分布は明らかに異なるとはいえ、クラウドの全体的な形状はほぼ同じです。

 

Tut03_004_stokemx_ffx_source_vs_geometry_frame100

 

Krakatoa PRT FumeFXオブジェクトから放出する

これまでで、私たちはジオメトリ、パーティクル、FumeFXシミュレーションからのパーティクル放出をサポートしているStoke搭載のDistribution Source機能を使用してきました。

(無料評価版を含む)Krakatoa MXのユーザにより多くの柔軟性を提供する先進的な手法は、FumeFXシミュレーション内よりも多くの制御が必要な場合、中間ソースとしてPRT FumeFXオブジェクトを使用することです。

  • FumeFXグリッドを選択してKrakatoa ツールバーからFFXアイコンをクリックするか、Krakatoa メニューからCreate PRT FumeFX object…を選択します。
  • Seed in SmokeSeed in Fireをチェックし、両方のMinimum valuesを0.0に設定します。
  • スタックにKrakatoa Magma modifierを追加し、Temperature(温度)チャンネルを読み込み、Less論理演算子を使用して285.0と比較して、Selection(選択)チャンネルとして出力するフローを設定します。
  • 温度が閾値未満であるパーティクルを削除するためにKrakatoa Delete modifierを追加します。

Tut03_005_stokemx_ffx_prtffx_magma

  • Stokeオブジェクトを選択します。
  • Distribution SourcePRT FumeFXオブジェクトを選択(pick)します。
  • 放出させないためにティーポットチェックをはずします。
  • SIMULATEボタンをクリックしてシミュレーションが完了するまで待ちます。

結果:PRT FumeFXで作成したFumeFX Temperatureチャンネルに基づいて、パーティクルに炎系が設定され、Stokeパーティクルがそれらのパーティクルにシードされます。

Tut03_006_stokemx_ffx_prtffx_rate100

  • Distribution SourcesリストのPRT FumeFX選択し、Use Seed Count As Rateオプションにチェックします。
  • 再度SIMULATEを押します。

結果:各フレームで、1個のStokeパーティクルがPRT FumeFXシードパーティクルそれぞれに作成され、非常に高密度なクラウドを作成します。

Tut03_007_stokemx_ffx_prtffx_matchrate

この時点で、次の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オブジェクトに適用します。

Tut03_008_stokemx_ffx_temptomap_magma

結果:パーティクルは、それぞれの出生点の温度を反映し、アニメーションの間ずっと維持されます。

Tut03_009_stokemx_ffx_colorbytemp