Simulation

Tips

modoのパーティクルをサーフェースに沿って動かす方法

今回はメッシュの表面に沿ってパーティクルを動かす方法について書いてみたいと思います。

■サンプルファイル

アイテムのスナップ移動」でも軽く書いてますが、modoのパーティクルシステムは他のソフトと違い、アイテムのリギングで使用するノードをそのままパーティクルシステムで使用することができます。
汎用性が高くて面白い特長ですが、どうすれば欲しい表現を実現できるかわかり難いと感じることもあると思います。そこで「パーティクルをサーフェースに沿って動かす表現」を作る場合の考え方、どんな感じでノードを使えばいいか手順を書いてみます。

 

1.サーフェースに沿わせたい →「交差サーフェース」コンストレイント

パーティクルをサーフェースに沿わせたい場合、まずサーフェースと交差判定できるノードが必要そうだと思いつきます。modoのアニメーション機能でサーフェースと交差判定できる機能といえば、「交差サーフェース」コンストレイントです。

「交差サーフェース」コンストレイントは、サーフェース表面にロケーターをくっつけてくれる機能です。操作の基準となるアイテム、メッシュアイテムの順番で選択してモディファイヤタブの「交差サーフェース」ボタンを押すと、サーフェース表面に沿って移動するロケーターを生成してくれます。

スケマティックでノードの繋がりを見るとこんな感じになってます。

Toroidアイテムと、操作の基準となるアイテム(Locator)がIntersect ノードにつながって、交差位置用のアイテム(Locator_2)に位置が出力されていることがわかります。

このノードの処理をパーティクルで組めば同じようにサーフェースに沿ったパーティクルの移動が作れそうです。

 

2.「交差サーフェース」コンストレイントと同じ処理をパーティクルで組む

スケマティックはこんな感じです。Intersectの流れを見比べると「交差サーフェース」で作られたノード構成と同じようにリンクされてるのがわかると思います。

Particle Operatorの特性で「位置(Read Only)」「位置」の2チャンネル追加して、「交差サーフェース」と同様にノードをリンクします。Intersect の「位置出力」のチャンネルタイプマトリクスなので、Matrix Vectorを使用して「位置」チャンネルにリンクできるようXYZ軸に変換します。

 

「位置(Read Only)」「位置」について

パーティクルは「位置(Read Only)」「位置」の2つのチャンネルを使用することで、他のノードで計算した結果を戻すことができるようです。
modoは1つのノードであれば依存ループにならずに計算出来るのですが、パーティクルの場合は1つだけでは複雑な計算ができないため、このような動作になってるのかもしれません。

 

VDB Voxelを使用してメッシュを作成すると、サーフェース表面を水が流れるような表現にも使えそう。

パーティクルをサーフェースに沿って動かすのは Particle Snap Modifierを使用しても同じような表現は可能ですが、Particle Snap Modifierはパーティクルそのものの位置には影響がありません。
例えばサーフェースに沿って動いてるパーティクルから、さらにパーティクルを発生させたい場合には今回紹介した方法が便利だと思います。

参考資料

DNA growth

Maxのプラグインtyflowを使用したテスト動画が公開されてます。どれも綺麗ですね。

参考資料

Transport-Based Neural Style Transfer for Smoke Simulations

画像を使用してスモークシミュレーションにスタイルを転送する技術だそうです。面白い。
http://www.byungsoo.me/project/neural-flow-style/index.html

概要

芸術的に流体を制御することは常に困難な作業であった。最適化手法では、煙のダイナミクスを間接的に制御するためにアーティストが手作業で作成することが多い、ターゲットの速度または密度フィールドの設定に対してシミュレーション状態を近似することに依存します。
パッチ合成技術は、イメージテクスチャまたはシミュレーション機能をターゲットフローフィールドに転送します。しかし,これらは構造パターンの追加または乱流構造による粗い流れの増大に限定され,従って異なるスタイルおよび意味的に複雑な構造の全スペクトルを捕捉できない。
本論文では,体積煙データのための最初のトランスポートベースのニューラルスタイル転送(装置)アルゴリズムを提案した。この方法は,自然画像から煙シミュレーションに特徴を転送することができ,単純なパターンから複雑なモチーフまでの一般的な内容を意識した操作を可能にする。提案したアルゴリズムは,ソース入力煙から所望のターゲット構成への密度輸送を計算するので,物理的に影響を受ける。著者らの輸送ベースのアプローチは,煙を様式化に向けて輸送する非圧縮性および非回転性ポテンシャルを最適化することにより,様式化速度場の発散を直接制御することを可能にする。時間的整合性は後続の様式化速度の輸送と整列により保証され,3D再構成は異なるカメラ視点からの様式化のシームレスなマージにより計算される。

参考資料

Houdini Vellum R&D 2019

Vellumの紹介とクロスシミュレーションのR&D映像。こういうの好き。

CG News

STARDUST 1.5

AfterEffects用のパーティクルプラグイン、STARDUST 1.5がリリースされました。openVDBに対応したようです。進化のスピードが速いですね。
https://www.superluminal.tv/blog

Stardustの豊富なツールセットに新たにボリュームワークフローが加わりました。世界的に有名なopenVDBテクノロジをStardustにシームレスに統合することで、Volumeオブジェクトを簡単に作成できるようになりました。
パーティクルシステムとモデル全体をボリュームに変換し、ブール演算、フィルタ、ノイズなどのさまざまなツールで結果を操作します。Stardustのツールセットに追加された他の機能には、魅力的でスタイリッシュなオブジェクトのアウトラインを作成するための驚くべき3Dワイヤーフレームの作成、マスクとテキストの端から数回のクリックで精巧な3Dオブジェクトを作成する「エッジを押し出し」、その他のツールや改良などがあります。

CG News

Bifrost for Maya

現在開催中のイベントSIGGRAPH 2019で進化したBifrost for Mayaが発表されました。Bifrost for MayaはMaya2018以降のすべてのバージョンで動作し、Maya 2019.2以降はインストーラにも含まれます。

Bifrost for Mayaはマルチフィジックスシミュレーション用の新しいビジュアルプログラミングシステムで、既存の液体シミュレーションツールセットの拡張版です。Disney for Frozenで使用に基づくMPMソルバー、Arnoldでのネイティブサポートに加え、他のDCCツールへAlembic、OpenVDB、Field3Dのエクスポートなど、様々な機能追加がおこなわれてるようです。
https://area.autodesk.com/blogs/the-maya-blog/introducing-bifrost-for-maya/

チュートリアル
https://area.autodesk.com/all/tutorials/maya/?tag=bifrost

BifrostはリグやIKソルバも構築できるようで、SoftimageのICEやFabric Engineのような広範囲に使用できるノード環境になってるようです。一部情報ではBifrostはスタンドアロンアプリケーションで、サードパーティの開発者が使用できるとのことです。もしかして次世代3Dソフトのコアになったりするのかな?

SIGGRAPHの会場では3dsMax版のデモがあったようで、近い将来Maxにも搭載されそうです。

 

概要

Bifrostを使用すると独自のカスタムエフェクトを作成して公開し、他のアーティストと共有してさまざまなショット、シーン、さらにはショーで使用することができます。また、砂塵、火、雪、砂などのエフェクトをすばやく作成するための、多数のグラフも用意されています。

1つのグラフ

Bifrost Graph Editorを使用すると、コンテキストやグラフのセマンティクスを切り替えることなく、視覚的なプログラミンググラフを作成して、散布、インスタンシング、変形、ボリューム処理、ダイナミックシミュレーション、マテリアル割り当て、ファイルIO、さらにはローレベルの数学ノードでのミックスが可能です。

 

詳細な煙、火災、爆発

空気力学と燃焼のための新しい物理ベースのソルバーを使用することで、見た目に自然な煙、火、爆発を作成することが可能になりました。簡単なアーティスティックコントロールを使用すると、エフェクトの境界条件を簡単に調整して、周囲のシーンと物理的に正確な方法で相互作用させることができます。また、速度、乱流、煙の密度などの特性に応じて、詳細を自動的に追加または削除するようにアダプティブ機能を設定することもできます。

燃焼ソルバーは、火災や爆発の物理反応をシミュレートするために、計算化学と熱力学を実行します。メタンやブタンのような現実世界の燃料から選択することができ、ソルバーは煙や水蒸気のようなリアルな出力を自動的に作成します。

 

 

マテリアルポイントメソッド

マテリアルポイント法(MPM)は、ディズニーのアナと雪の女王で雪かき用に使われて有名になりました。オリジナルの研究チームのメンバーによって設立されたJixie Effectsと協力して、プロダクション対応のMPMソルバーを開発しました。MPMの重要な利点の1つは、解像度が高くなってもシミュレーションの動作が一定であることです。オリジナルのMPMは雪のシミュレーションに重点を置いていましたが、JixieはBifrost MPMソルバを拡張し、次のような他の現象にも対応できるようになりました。

  • 砂や泥、雪などの粒状物質
  • ダイナミックな薄いシェルと布 (布地、アルミニウム、プラスチックなど)
  • 個々のファイバーのダイナミクス(またはストランド)

 

新しい高性能パーティクルシステム

完全にビジュアルプログラミングを使用して作成されたBifrostの新しいパーティクルシステムは、Mayaのパーティクルで以前可能であったものよりもさらに強力で拡張性に優れています。パーティクルは、空力シミュレーションと燃焼シミュレーションを実行するための効果的な方法として使用でき、その逆も可能です。

 

ボリュームのあるアートエフェクト

Bifrostにはノードがロードされており、メッシュ、ポイント、ボリューム間の変換や、次のようなアーティスティックなエフェクトのためのボリュームの処理に役立ちます。

  • メッシュ、ポイント、およびパーティクルをボリュームに変換する
  • ボリュームをメッシュに変換する
  • ボリュームをスムージングする
  • ボリュームのプロパティのサンプリング
  • ボリューム内の点の分散

 

レンダリングに適したインスタンス化

Bifrostはレンダリングに適した高パフォーマンスのインスタンス化機能を提供し、シーンを非常に複雑にすることができます。

インスタンスは、分散ポイント、MPMソルバなどのパーティクルシステム、およびその他のジオメトリの頂点に適用できます。インスタンス形状は柔軟性があり、複数のバリエーションレイヤから選択できる単純な選択メカニズムを使用して簡単に調整できます。たとえば、1つのレイヤで草と花を区別し、別のレイヤでドリルダウンしてそれぞれのバリエーションを選択できます。

Arnoldのインスタンスおよびビューポート2.0と緊密に統合されているため、メッシュ、ボリューム、ストランド、ポイントなどのレンダリング可能なBifrostジオメトリや、Arnoldのようなレンダリングアーカイブ形式の完全にレンダリング可能なアセットをインスタンス化できます。assファイル。

 

ストランド

Bifrostを使用すると、髪や毛皮から毛羽立ち、衣服、草、ワイヤー、埃まで、複数の繊維(またはストランド)から構成されるものを手続き的にモデリングできます。

 

リアリスティックプレビュー

ArnoldをMayaに統合すると、Arnoldビューポートでエフェクトの最終ピクセルプレビューを確認できるため、ライティングやレンダリング後にエフェクトがどのように見えるかを推測する必要がなくなります。ビューポート2.0でエフェクトのほぼ最終的なプレビューを確認することもできます。

 

すぐに使用できるグラフ

ドライアイスや体積測定のための雲から火災や爆発に至るまで、新しいBifrost Browserであらかじめ構築されたBifrostグラフのライブラリを探して、優れた外観のエフェクトをすばやく作成できます。また、事前に作成されたグラフは、独自のカスタム効果をゼロから作成するための出発点としても最適です。その後、スタジオの他のアーティストが簡単に検索して再利用できるように、グラフをブラウザにパブリッシュできます。

Tips

modoでアイテムが粉砕されて別のアイテムに変わる表現

modoでアイテムが粉砕されて、別のアイテムに組変わる表現について書いてみたいと思います。基本的には以前書いた記事の組み合わせでできる表現です。

 

スケマティックはこんな感じです。

 

最初にアイテム2個(球とトーラス)を Shatter を使用して粉砕します。粉砕タイプはUniformを使用します。破片の個数は球とトーラスで同じ数を設定します。
粉砕したアイテムは Locators to Array とCreate Polygonsを使用して、アイテムのセンターの位置に頂点を作成します。この頂点からSource Emitterを使用してパーティクルを発生させます。今回はWind ForceとCurve Forceを使用してパーティクルを制御しました。

 

球とトーラスのParticle Simulationのうち、どちらか一方を CSV Point Cacheを使用してキャッシュします。またCSV Point Cacheの「オフセット」を使用してシミュレーションを逆再生にします。

 

Particle Simulation_3では「パーティクルの位置をブレンドする方法」と同じく Matrix Blendを使用してパーティクルをブレンドします。こうすることで球から発生したパーティクルが、トーラスの位置に移動するパーティクルを制御できます。

 

Particle Simulation_3をMerge Meshesし、Create Polygons_3でラインを生成します。このラインメッシュに粉砕したアイテムを「頂点の位置コンストレイント」することでアイテムをアニメーションしています。粉砕したアイテムを球からトーラスに変えるところは「アイテムインフルエンス」を使用します。リニアフォールオフを使用して球の破片はスケールが100%から0%になるように設定し、トーラスの破片はスケールが0%から100%に変わるように設定しています。

スケマティックでは粉砕したアイテムを循環して使用してますが循環させない方がいいです。循環させるとコンストレイントの影響でアイテムの位置からパーティクルが発生しなくなります。少し煩雑になりますが粉砕したアイテムは複製して、 Locators to Arrayで使用するアイテムと、コンストレイントするアイテムはわけた方がいいです。


「頂点の位置コンストレイント」は複数のアイテムを同時にコンストレイント設定できないので、「コンストレイント補正オプション」をONにして、手動で1つずつコンストレイントしました。ちょっと面倒くさいですね。

 

パーティクルをフォローするようにカメラ移動するとこんな感じになります。

Iridescence Materialとクリアコートを設定してレンダリングしてみまた。Iridescence Materialは虹色の反射を設定できるので、たまに使うと面白いですね。

CG News

3dsmax用の新しいフルードシミュレーター、メッシャー、Bullet Physicsプラグイン

3dsmax用の新しいフルードシミュレーター、メッシャー、Bullet Physicsプラグインが告知されています。価格や発売予定日についての詳細は発表されていません。
https://magicpics-software.com/

 

Aquarius Fluid Simulator

もうすぐ登場

 

Aq Mesher

3dsmax用のOpenVDBベースのパーティクル/オブジェクト/ VDBメッシングプラグインです。
このプラグインは、多くのOpenVDB関数を使いやすく反応させることができます。剛体シミュレーションのためのMeshing、Levelset filter、Fractureおよびlevelset sphere関数など。

特徴
  • オブジェクト/パーティクル/ PRTファイル/ VDBファイルからレベルセット
  • アダプティブメッシング(三角/四角メッシュ)
  • 速度/頂点カラーチャンネルの作成
  • レベルセットフィルタ
  • メッシングエリアクロッピング
  • レベルセット粉砕
  • Sphere / bullet Sphereへのレベルセット(Aq Bullet Pluginが必要です)
  • VDBエクスポート

 

Aq Bullet

3dsmax用のBullet Physicsベースのマルチボディ物理シミュレータです。このプラグインは、リジッドボディ、ソフトボディ、ロープ、コンストレイントを簡単にシミュレートできます。また、キーフレームまたはポイントキャッシュによってシミュレーション結果を取得し、編集、変更、配置を簡単にすることができます。

特徴
  • 剛体シミュレーション(ダイナミック/スタティック/キネマティック)
  • ソフトボディ/クロスシミュレーション
  • ロープシミュレーション
  • コンストレイント機能(P2P、ヒンジ、スライダー、コーンツイスト、6自由度、ソフトボディアンカー、ロープアンカー)
  • Bullet プリミティブオブジェクト(ボックス、コーン、スフィア、カプセル、シリンダー)
  • 凹面/複合オブジェクトの箇条書き複合オブジェクト
  • 使いやすい/制御しやすい

 

OpenSubdiv-MPS

3dsmax用の超高速OpenSubdiv修飾子です。このプラグインは標準的なOpenSubdivモディファイヤよりもどんな状況でもはるかに良い反応をします。そしてこのプラグインは標準の頂点折り目修モディファイヤで動作します。

CG News

Storm 0.2.5

スタンドアロンのシミュレーションツール「Storm」の0.2.5がリリースされたようです。https://effectivetds.com/resources/fx-tools/storm/

v0.2.516

  • すべての数値パラメータおよびブールパラメータにエクスプレッションを追加できる
  • キャッシュとイメージの書き込みが高速化され、堅牢性が向上
  • SPHシステム追加
  • Linux版を追加
  • フォースは、粒状のまとまりに応じて、風のモードまたは強さで機能します
  • マニピュレータハンドルがオブジェクトを通して表示されるようになり表示が改善されました
  • 静的Alembicジオメトリの読み取りが高速
  • より堅牢なフローティングライセンスをオプションとして提供
  • Alembicパーティクルエクスポートの修正とより多くのチャンネルの書き込み
  • すべてのシステムでbinファイルの読み取りが可能
  • コライダーはprtポイントファイルを直接読み取ることができます
  • パラメータアニメーションとエクスプレッションの処理がより堅牢に
  • フォールバックパスをシーンファイルの一部にエクスポート
  • その他
  • バグフィックス
Tips

modoのダイナミックリプリケータ

今回はReplicator通しのコリジョン計算を行うダイナミックリプリケータについて書いてみます。ビンにあめ玉を入れたり、アイテムをばらまくときに便利です。

サンプルファイル

 

modoではパーティクルにメッシュを複製する場合はReplicatorを使用しますが、パーティクルとメッシュにコリジョン判定を設定してもReplicator通しのコリジョン計算はおこなわれません。

Replicator通しのコリジョンを設定したい場合には Dynamic Replicator を使用します。Dynamic Replicatorを設定するには、Replicatorを選択して「アクティブリジッドボディ」をクリックします。

 

Dynamic Replicatorは異なるReplicator通しでコリジョン計算することができます。

Dynamic Replicatorの「質量」を設定すると、衝突したときの動きに変化をつけることができて面白いです。

 

modo 10くらいからサンプルコンテンツがあまり増えなくなってしまったので、Dynamic Replicatorの基本的なファイルを公開しておこうと思って記事を書いてみました。

 

参考