Thinkbox Software 製品
ブログ

パーティクルメッシュとカスタムフィールド

概要

このチュートリアルでは、Krakatoaツールセットを使用してカスタムベロシティフィールドの作成方法と、パーティクルフローやFrostパーティクルメッシャーを使用してStokeパーティクルをメッシュ化する方法について説明します。

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

このチュートリアルの一部は、Frostパーティクルメッシャーの商用版もインストールしていることを想定しています。もしFrostをお持ちでない場合は、チュートリアルの一部をスキップするか、こちらのページからメールを送ってFrostの2週間の評価版ライセンスをリクエストすることができます。

 

基本的なシーン

まず、テストシーンを何もない状態から作成します。

  • 新規の3ds Maxシーンを開始します。
  • 200.0×200.0x200.0のサイズで原点にボックスのプリミティブを作成します。
  • ボックスを選択して、Krakatoa ツールバーのVOLアイコンを押すか、またはKrakatoaメニューからCreate PRT Volume…を選択します。
  • Spacingを2.5に設定します。
  • Viewp. Spacingオプションのチェックを外します。
  • 規則的なグリッドを生成するためにJitter Positionオプションのチェックを外します。
  • ボックスプリミティブを隠します。
  • PRT Volumeを選択して、それのスタックにMagma modifierを追加します。KCMアイコンを使用するか、KrakatoaメニューからAdd Krakatoa Channels Modifier(KCM)…を選択するか、もしくはモディファイアリストから手動で選択するかのいずれかを行います。
  • Magma Editorを開きます。
  • Outputノードを作成するため、[Ctrl]+[O]を押します。
  • OutputをVelocityチャンネルに設定します。
  • Outputノードを選択して、Position InputChannelノードを作成するために[SHIFT]+[P]を押します。そうすると自動的にOutputにつながれます。
  • Position InputChannelを選択して、Multiplyオペレータを作成するためにテンキーの[*]を押し、Right Valueフィールドに0.0345を入力します。これは次に大規模なノイズを生成するために必要です。
  • Multiplyノードを選択して、[F]その後[V]を押してVecNoiseオペレータを挿入します。このオペレータは、スケーリングしたPositionインプットに基づいてベクトルノイズを生成します。
  • VecNoiseオペレータのNormalizeオプションのチェックを外します。
  • VecNoiseノードを選択して、別のMultiplyオペレータを挿入するためにテンキーの[*]を押し、Right Valueに60.0を入力します。これは、Velocityとして出力されるノイズの測定を行ないます。この値は、かなり恣意的な数値であり、速度は秒単位で想定されているので必要となります。30 FPSの場合、各フレームに有意な動きを生成するための十分なVecNoiseを測定します。後ほど、この値を調節することやパーティクルの速度を調整するためにStokeのScale値を使用することができます。
  • この時点で、設定したモディファイアは、有効なベロシティフィールドを生成しますが、その形状についてアイデアを具体化するためにベロシティフィールドを視覚化することができます。
  • 別のOutputノードを追加するために[Ctrl]+[O]を押します。PRTViewportVectorチャンネルを設定し、新しいOutputをVecNoiseのアウトプットにつなげます。
  • さらに別のOutputノードを追加するために[Ctrl]+[O]を押します。Colorを設定してVecNoiseのアウトプットにつなげます。
  • 強制的に更新するために>AUTOボタンをチェックします。

結果:Magmaフローは、以下のようになります。またビューポートは、ラインと色の両方でベクトルのフィールドを表示します。

Tut07_001_8169217-22559117-thumbnail

Tut07_002_stokemx_prtvfield_pfmesh_velfield

 

カスタムベロシティフィールドを使用するStokeシミュレーション

これで、Stokeオブジェクトを作成し、フィールドを介していくつかのパーティクルをシミュレーションする準備が整いました。 

  • シーンの終了時間を200に設定します。
  • 半径5.0の球を作成し、フィールドの中心である[0,0,100]に配置します。
  • 球とPRT Volumeを選択し、Stokeアイコンをクリックして、Stokeオブジェクトを作成するためにビューポートをクリックし、PRT VolumeをDistributionソースから除外します。あるいは、Stokeを手動で作成して、球をDistributionソースに、PRT VolumeをVelocityソースに追加します。
  • リストに登録している球を選択して、Volumeモードに、Volume Spacingを0.8に設定します。
  • Velocity FieldのGrid Spacingを5.0に設定し、Create Fluid Motionをチェックします。
  • 200フレーム目で20,000パーティクルを生成するためにRate/Frameが100に設定されてことを確認してください。
  • SIMULATEボタンを押して待ちます。ベロシティフィールドのサイズが大きいため、シミュレーションにはしばらく時間が掛かります。
  • シミュレーションを行なってディスクキャッシュにも保存されたら、DisplayをVelocityに切り替えます。

結果: Magma modifierの中のVecNoise関数によってベロシティフィールドが生成され、パーティクルが球のボリュームから発生します。

Tut07_003_stokemx_prtvfield_pfmesh_stoke

 

メッシュ化するためにパーティクルフローにStokeパーティクルを転送

この例では、各パーティクルにジオメトリメッシュを配置します。このために、パーティクルフローにPRT Loader、Krakatoa PRT Birth、PRT Updateオペレータを介してパーティクルデータを転送します。

  • Stokeオブジェクトを選択して>Use Disk Cacheボタンの隣の[+]アイコンをクリックします。Stokeパーティクルを読み込むための新しいPRT Loaderが作成されるでしょう。
  • PRT Loaderで表示したシーン上でベイクしたパーティクルがあるためStokeオブジェクトを隠します。
  • パーティクルビューを開き、標準フローを作成します。
  • PF Sourceノードを選択してビューポート %を100.0に変更します。
  • Krakatoa PRT Birthと発生オペレータを交換し、ソースとしてPRT Loaderを選択(pick)します。プロンプトが表示されると、PRT Loaderのレンダリング可能なプロパティを無効にするに[Yes]と答えます。
  • Krakatoa PRT Updateと位置オペレータを交換し、ソースとしてPRT Loaderを選択(pick)して、PositionとIDに追加してVelocityチャンネルをチェックします。
  • 速度オペレータを削除します。
  • 回転オペレータを速度スペースフォローモードに切り替えます。
  • シェイプオペレータのサイズを3.0に設定します。
  • 表示オペレータのタイプをジオメトリに変更します。
  • 必要に応じて、PFソース発生イベントのプレイバックのスピードを上げるためにキャッシュオペレータを追加します。
  • PRT Loaderを隠します。

結果:パーティクルフローは、PRT Loaderで読み込んだStokeパーティクルの動きを複製し、Velocityに沿って方向付けされた各パーティクルをボックス(Box)に置き換えます。

Tut07_004_stokemx_prtvfield_pfmesh_pflow

 

Frostパーティクルメッシャーを使用するメッシュ化の代替的アプローチ

次のアプローチは、Thinkbox Frostパーティクルメッシャーの商用ライセンスを所有している場合にのみ使用できます。

  • パーティクルフローを無効にして隠します。
  • PRT Loaderを表示して選択します。
  • ツールバーをカスタマイズしているならCreate Frostアイコンをクリック、またはFrostオブジェクトを手動で作成してソースとしてPRT Loaderを選択(pick)します。
  • FrostのMeshingロールアウトでGeometryモードに切り替えます。
  • Particle SizeのRadiusを2.0に設定します。
  • Particle GeometryドロップダウンリストをBoxモードに切り替えます。
  • Orientationグループのコントロールで、Use Vector Channelを選択し、Vector ChannelリストからVelocityを選択します。

結果:FrostとPRT Loaderの両方は、全く履歴に依存しないため、この結果は、任意のフレームに自由に前後移動できるところを除いては上記のパーティクル フローの例と類似しています。

Tut07_005_stokemx_prtvfield_pfmesh_frost

 

Frostを使用して半固体のメッシュにする

途切れないブロブ(半固体)メッシュを生成するZhu-BridsonモードにFrostメッシャーを切り替えます。

  • Meshing ModeをZhu-Bridsonに切り替えます。
  • もう少しボリュームを作り出すためにParticle Size > Radiusを2.0から2.5に変更します。
  • Meshing Quality > Relative to Max. Radius > Viewport resolutionを3.0に設定します。
  • Blend Radiusを2.0に設定します。
  • スタックにリラックス モディファイアを追加して、リラックス値を0.5に、反復を20に設定します。

結果:パーティクルは抽象的で流体のような飛沫に変わります。

Tut07_006_stokemx_prtvfield_pfmesh_frost_zb