Thinkbox Software 製品
ブログ

FumeFXのシミュレーションをアンダーサンプリングする

概要

このチュートリアルは、Velocity SourceとしてKrakatoa PRT FumeFXオブジェクトを中間で使用してSitni Sati社のFumeFXの流体シミュレーションをアンダーサンプリングする方法について説明します。

このチュートリアルは、Krakatoa MX v2.1.8以上をインストールしている必要があります。(無料)評価版でも可能です。

 

基本的なシーン

前回のStokeとFumeFXのチュートリアルで作成して保存したテストシーンから続きを始めます。

 

追加の設定

前回のチュートリアルでは、FumeFXシミュレーションをサンプリングし、希望どおりのパーティクルを生成するDistribution sourceとしてKrakatoa PRT FumeFXオブジェクトをすでに使用しました。これは、FumeFXオブジェクトをStokeMX Distributionソースとして直接的に選択された際には提供されなかった、FumeFXに関連するすべてのチャンネルへのアクセスも提供しています。

今回は、シミュレーションのすべてのボクセルをサンプリングし、Stokeにベロシティフィールドを提供するために、Krakatoa PRT FumeFXを使用します。これは、Velocity Field From Particlesを使用してグリッドの間隔を変化させたり速度のデータをぼかしたりすることができます。

  • PRT FumeFXオブジェクトを再表示し、モディファイアをすべて除去します。
  • シーン上でStokeオブジェクトを選択します。
  • Distributionロールアウトで、FumeFX001のみDistributionオブジェクトとしてチェックし、他のソースはチェックをはずします。
  • Velocity Fieldロールアウトで、以前使用していたFumeFX001チェックをはずします。
  • Pick…ボタンをクリックして前回のチュートリアルで作成したPRTFume _FumeFX001 _001 オブジェクトを選択(pick)するか、By Name…ボタンを使用してリストから選択します。
  • リストに新しく登録したものを選択し、シーンのフレームレートに30 FPSを使用していると想定して、Velocity Scale30.0にします。これは、私たちが毎秒単位として速度の値を必要としますが、PRT FumeFXオブジェクトは毎フレーム単位として速度の値を提供するからです。
  • シミュレーションを行ったときのFumeFXのgrid sizeが4.0だったため、Grid Spacing4.0変更します。
  • 新しく登録したものを右クリックし、メニューからSelect Object…を選択します。
  • Seed In Smokeオプションにチェックし、Minimum値を0.0に設定します。
  • グリッドを作成するためJitter Positionチェックをはずします。
  • PRT FumeFXオブジェクトを再度隠します
  • SIMULATEボタンを押します。

結果:パーティクルが、各FumeFXボクセルの中央部でPRT FumeFXオブジェクトによって作成され、関連づいた速度は、グリッド上で弾けて、Stokeパーティクルに引き継がれます。

下部のアニメーションでは、赤いパーティクルが独立したシミュレーションの実行で保存された実際のFumeFXの速度を使用して作成したStokeシミュレーションを、PRT Loaderでロードしたものを表しています。

黄色のパーティクルは、PRT FumeFXパーティクルの速度を使用しているStokeシミュレーションです。前者のシミュレーションアプローチは、FumeFXグリッドの任意の点での速度値を補完することができ、後者は別々のパーティクルのサンプルを使用しているので、ふたつは非常に似ていますが同一ではありません。

Tut04_001_stokemx_undersamplefume_grid4

そのパーティクルアプローチの精度で高めることが可能だろうか?とあなたはお尋ねになるかもしれません。

ある程度は賛成ですが、事実上意味がありません。PRT FumeFXは、サブディビジョンを使用して、より多くのパーティクルを作成できます。Subdivide Regionを2に設定すると、グリッドの間隔を1.0より低くすることができますが、結果は近いものの同一ではなくシミュレーションの時間はずっと長くなります

 

FumeFXのシミュレーションをアンダーサンプリングする

では、FumeFXシミュレーションの実際の間隔(Spacing)よりも大きなGrid Spacingの値を使用して、入ってくるデータにブラーをかける方法について見ていきます。

  • Grid Spacing12.0に変更します。
  • SIMULATEを再度押します。

結果:黄色のパーティクルが新しい大きなグリッドにしたがって動き、パーティクルの動作にとても小さなディテールが現れます。

Tut04_002_stokemx_undersamplefume_grid12

より一層少ないディテールを生成するために、例えば。Grid Spacing を24.0の単位まで増やせます。

Tut04_003_stokemx_undersamplefume_grid24

 

ダイバージェンスの流体運動を作成する

FumeFXは、空気中での燃料の燃焼をシミュレーションし、その結果ベロシティフィールドは、(本当に非圧縮性である液体のための)ダイバージェンスフリーである必要はありません。

上記のアプローチを利用して、かなり異なるパーティクルの動作を生成するために、サンプリングしたFumeFX Velocity FieldでCreate Fluid Motion機能を使用することができます。

  • Grid Spacing4.0に戻します。
  • Create Fluid Motionオプションをチェックします。
  • SIMULATEボタンを押します。

結果:本来のFumeFX Velocity Fieldによって移動しているオリジナルの赤いパーティクルに比べてパーティクルはかなり異なった動きをしています。

Tut04_004_stokemx_undersamplefume_grid4_fluid