Simulation

Tips

modoのソフトボディ

modoのソフトボディのパラメータの動作をまとめてみた。ソフトボディは布やゴムボールのようなシミュレーションに使用することができます。

 

ソフトボディ

modoのソフトボディ(Bullet Physics)はメッシュの頂点間に仮想のバネを作成してシミュレーションします。

仮想のバネ

例えばV字のメッシュがあるとします。

ソフトボディを適用すると「屈曲剛性」「構造」「シアー」はそれぞれ、下の画像の色分けした部分にバネを作成します。

仮想のバネを使用する計算方法であるため、メッシュの細かさによってソフトボディの印象が変わります。厚く固い布はメッシュを荒く、柔らかい布はメッシュを細かく分割する必要があります。

平面を「細分割」した回数でソフトボディの印象が変わる例です。メッシュが細かくなるにつれ、柔らかい布のように動いて見えるようになります。

「構造」に高い値を設定していますが、メッシュが細かくなるにつれて頂点間のバネの数が多くなり、メッシュ全体が伸びた計算結果になります。

「屈曲剛性」「構造」「シアー」は相互に影響しており、大まかな動作として「屈曲剛性」「構造」「シアー」に小さな値を設定するとメッシュが伸びるようになり、大きな値を設定すると元のメッシュ形状が維持されます。
ソフトボディは同じパラメータ設定でもメッシュの細かさによって変わるため、パラメータの値あくまで参考程度のものです。実際に使用するメッシュに応じて設定を詰める必要があります。

 

ソフトボディのパラメータ

各パラメータの変化を比べてみました。

屈曲剛性

メッシュの形状を保とうとする力です。100%のように高い値を設定するとメッシュ表面がデコボコになることがある。

 

構造

メッシュのエッジに設定されるバネです。重力のようなフォースによってオブジェクトが変形したとき、元の形状に戻ろうとする力が発生します。

 

シアー

ポリゴンの対角線上に設定されるバネです。値が大きいと布のようなシワが発生します。

 

自己衝突

自身のメッシュとコリジョンジョン判定します。メッシュ通しがめり込まなくなりますが、計算に時間がかかるようになります。

自己衝突のはチャンネルビューポートの「reSoftSelfMargin」で設定します。

 

圧力

風船のようにメッシュを内側から押す力です。メッシュが閉じた形状のときに動作します。メッシュが細かいほど効果が出やすい。

 

ボリューム維持

風船をつぶしたときのように体積を維持するパラメータらしいです。値を変えると変化はありますが、比較して明かな違いがでるような設定にできませんでした。

 

ドラッグ

メッシュの動きを抑えます。

 

質量

ソフトボディを適用したオブジェクトの重さは「質量」で設定します。フォースを使用して薄い布のように動かすには、「密度」に小さい値を設定するとよいです。フォースの強さにもよるので、密度の値は参考程度。

 

modoのソフトボディはBullet Physicsというオープンソースの物理演算エンジンライブラリを使用してます。Maya、Houdini、CINEMA 4D、LightWave 3Dなど多くのソフトで使用されています。ソフトウェアによってはライブラリに手が加えられ、シミュレーションの安定性が違ったりするようです。

CG News

FumeFX 5.0 for Cinema 4D

Cinema 4D用のFumeFXがリリースされたようです。
https://www.afterworks.com/Blog/FumeFX5-C4D-release.asp

Sitni Satiは、Maxon®Cinema4D®用の流体力学ソフトウェアFumeFX™5.0をリリースしました。

過去13年の間に、世界中の多くのスタジオ製作パイプラインの不可欠な部分となりました。Justice League、Deadpool、Independence Day2、Dr.Strange、Thor、Roland Emmerich’s2012、Ghost Rider:Spirit of Vengeanceなどのゲーム映画や大ヒット映画を含む幅広いビジュアルエフェクトの作成に使用されています。
この待望のリリースは信頼性が高く、制作実績のあるツールを提供します。このツールを使用すると、これまでのCinema4Dでは実現できなかったさまざまな効果を実現できます。Cinema4Dの豊富な機能セット、堅牢性、シームレスなワークフロー統合により、アーティストは創造性を解き放ち、複雑な視覚効果をタイムリーに実現できます。ユーザは短期レンタルライセンスから永久ライセンスまで、複数のライセンスオプションから選択できます。

 

FumeFXハイライト

ビューポート

FumeFX GPUアクセラレーションによる表示がCinema4Dビューポートに統合され、ボリュームシャドウ、適切なジオメトリオクルージョン、およびシェーダの即時フィードバックが含まれています。

シミュレーション

FumeFXのQCGソルバーは、最も厳しい生産要件に対しても信頼性の高いソリューションです。FumeFXには保存的移流タイプが用意されており、900フレームのアニメーションを実行した後でも、数値的な散逸を最小限に抑える流体フローを簡単に作成できます。

ファイルI/O

FumeFXはロスレスとロッシーを特徴としています。fxd圧縮ではチャンネルごとの圧縮タイプと品質を設定できます。最先端のマルチスレッド化。fxd I/Oにより、超高速のキャッシュ保存とロードが可能になります。キャッシュはユーザ定義の低解像度でロードできるため、アーティストはビューポートの操作とレンダリングのセットアップを簡単に行うことができます。VDBキャッシュとF3Dキャッシュのサポートは、FumeFXプラグインに統合されています。

ウェーブレット

既存のFumeFXシミュレーションに詳細を追加するのはこれまでになく簡単です。これはグリッド解像度を向上させるための高速でメモリ効率の高い予測可能な方法です。ウェーブレット乱流パスでは、シミュレーション速度を変更することもできます。

後処理

FumeFXのポスト処理を使用すると、キャッシュのリタイム、レンダーワープのベイク処理、さまざまなキャッシュファイルフォーマット間の変換、またはワークフローで不要になったチャンネルを除外することによるキャッシュフェッチの改善とディスクスペースの節約を行うことができます。また、アーティストはキャッシュをリタイムし、フロー特性を維持しながらシミュレーション速度を効果的に変更できます。

レンダリングワープ

FumeFXはさまざまなCinema4Dデフォーマをサポートしており、レンダー時やポスト処理中に使用してシミュレーションの完了後にFumeFXボクセルを曲げたり、ねじるなどの変形を実行することができます。特殊効果を作成する場合でも、最終的なアニメーションを微調整する必要がある場合でも、[レンダリングワープを使用するとさまざまな可能性を実現できます。

エフェクタ

ボクセル単位でほぼすべてのシミュレーションパラメータとフィールドをクリエイティブに制御できます。エフェクタを使用すると、速度によって渦度を制御したり、その他のチャンネル値に基づいて煙を生成したりすることが簡単になります。エフェクタはチャンネルデータを次のレベルに取り込みます。

XpressoとPython

FumeFXはCinema4Dに統合されており、Xpressoエディタ内でほぼすべてのユーザーダイアログパラメータにアクセスできます。最大限の柔軟性を得るために、ユーザはPythonを使用してさまざまなFumeFXシミュレーションボクセルデータにアクセスできます。

レンダリング

標準、物理、およびArnoldレンダラの初期状態のサポート。拡張されたArnoldレンダラのサポートは、より優れた柔軟性と高度な機能を必要とするすべてのVFXアーティストにとって大きな価値があります。ArnoldのサポートはArnold Standard VolumeシェーダとFumeFX Standardシェーダで使用できます。他のレンダラを使用するには、FumeFXデータをエクスポートします。Redshiftでボリュームグリッドを使用するか、OctaneRenderでVDBローダーを使用します。

Tips

modoのカーブフォールオフでメッシュ変形

modo13.2のベータフォーラムで、Warren Lさんがカーブフォールオフを使用した面白いテクニックを公開してたので紹介します。
https://community.foundry.com/discuss/topic/149545/fun-with-curve-falloff

カーブフォールオフを使用するとリプリケーターで複製したカーブを使ってメッシュを変形できるようになります。パーティクルと組み合わせると、色々面白い表現に使えそうですね。

 

動画をまねてみた。

■ サンプルファイル

modo 13.2ではSoftLagとパーティクルキャッシュとの相性が悪いため、シミュレーション再生ボタンを使用した時しか意図した動作になりませんでした。上の画像はシミュレーション再生した状態をキャプチャーしてます。早めにパーティクルキャッシュ修正して欲しい。

CG News

Storm 0.3 リリース

スタンドアロンシミュレーションツール「Storm」アップデートがリリースされました。0.3ではVDBパーティクルメッシャー、Alembicメッシュのエクスポート、Alembicパーティクルスティッチャーが追加されてるようです。

現在ブラックフライデーセール中で20%OFFです。 Indieが$119、Studioが$319です。
https://effectivetds.com/resources/fx-tools/storm/

CG News

Houdini 18 Sneak Peek

Houdini 18のスニークピークビデオが公開されています。主要な機能にはSparse Pyro Solver Solarisとルックデブ、レイアウト用の新しいUSBベースのコンテキストがあります。

このビデオには次のような改善点も含まれています。

  • Heightfield Terracing SOP 2.0
  • Substance プラグイン
  • 新しいグループSOP
  • ポリゴン編集用のいくつかの新しいスライドオプション
  • ポイント溶接
  • Bevel SOP 3.0(衝突検出を含む)
  • ラジアルメニューのホットキー
  • Edges SOPのサークル
  • ベンドSOP 2.0
  • Vellum Velocity Blendingと解像度の独立性
  • FEM非フック材料モデル
  • アダプティブFLIPプレッシャープロジェクション
  • スパース パイロソルバー
  • 破壊用のカスタム切断面
  • チッピング動作の改善
  • 破断線の処理の改善
  • 誘導破壊
  • Solaris:物理ベースのUSDレイアウト
  • Solaris:USDステージへのシーンのインポート
  • Solaris:インタラクティブなUSD照明
  • Solaris:USDライトのリンクとインスタンス化
  • Solaris:Renderman、Arnold、およびProrender Hydraデリゲート
Tips

modoでメッシュにパーティクルが集まる表現

Foundryのフォーラムでメッシュにパーティクルが集まるサンプルを公開してるのを見かけたので紹介します。パーティクルが収束するエフェクトに使えそう。
https://community.foundry.com/discuss/post/1184559

基本的にはMODO JAPAN GROUPさんが以前公開していた「パーティクルをメッシュの表面へと吸着させる方法」のパーティクル コンスレイントの代わりに、交差サーフェース コンストレイント (Intersect) を使用したバージョンです。

パーティクルでIntersectを使用するとサーフェース表面でパーティクルが動き続けるので、パーティクルシミュレーションの「ステップ」を上げると安定します。

Tips

modoでアイテムが揺れる表現

modoで移動したアイテムがバネのように揺れる表現について書いてみたいと思います。

■サンプルファイル

 

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

基本的には「トランスフォーム配列ツールでアニメーション作成」で紹介したように「Soft Lag」を使用して揺れを表現してます。
しかしメッシュ全体にSoft Lagを適用するとアニメーションの再生が遅くなるという問題があるため、今回はメッシュ全体を変形するのではなく Locators to Array と Create Polygons を使用してアイテムの位置からポイントを生成して、軽いメッシュにSoft Lagを適用することでアニメーションの再生が遅くなる問題を回避しました。

アルファベットのアイテムは「頂点の位置」を使用して頂点にコンストレイントしてます。

 

パーティクルに適用してみました。

サンプルファイル

Soft Lagはパーティクルと相性が良くないようです。パーティクルはフレームが進むごとにポイントを発生させますが、Soft Lagはポイントがない場合ワールド原点を前のフレームとして扱うようです。このためエミッターの位置を移動すると、原点から移動したような極端なラグが発生してしまいます。Soft Lagのトランスフォーム位置を参照してくれれば嬉しいんですけどね。

あと、ラグが好ましくないガクガクした挙動になります。ReplicatorをMerge Meshする方法も試してみましたが、同じようなフレーム間のカクつきが発生するようです。

Soft Lagは便利な機能なので、もっと改善して使いやすくして欲しいですね。

参考資料

服飾アニメーションのインタラクティブオーサリングのための組み込みの服飾スペース学習

クロスアニメーションのインタラクティブオーサリングに関する研究のようです。メッシュを入力すると間を補完してくれる的な物のようです。
http://geometry.cs.ucl.ac.uk/projects/2019/garment_authoring/

ここでは半自動の衣服アニメーションオーサリングワークフローについて説明します。

(a) ボディアニメーションシーケンスが与えられると、アーティストはキーフレーム(黄色)を選択します。
(b)そのフレームに対する衣服の形状を入力し、システムはこの設計の固有のプロパティを学習し、この設計を他のフレーム(緑色)に自動的に伝播します。
(c)アーティストはガーメントのアニメーションをさらに調整することができます。新しいキーフレームを挿入し(黄色)、ガーメントのシェイプを編集します。次にキーフレームを妥当なトランジション(オレンジ色のボックス)にリンクすることによって、アニメーションシーケンスが自動的に更新されます。
(d) このワークフローでは、アーティストがコンポジション中にボディアニメーション(赤いボックス)を変更することもできます。これは、このシステムが基礎となるボディモーションからインタラクティブなレートで衣服のシェイプを推測するためです。

 

要約

体の動きに関するキャラクタアニメーションのための動的な衣服の形状をオーサリングすることは,CG産業における基本ステップの一つである。確立されたワークフローは時間と労力がかかる(つまり、コントローラを使用した高密度フレームの手動編集)か、キーフレーム・レベルの制御がない(物理ベースのシミュレーション)かのいずれかです。
驚くことではありませんが、縫製は多くの生産パイプラインのボトルネックとなっています。代わりに筆者らは衣服アニメーションの半自動オーサリングのための深層学習ベースのアプローチを提示した。そこではユーザはキーフレームの選択において所望の衣服形状を提供したが,筆者らのシステムはその動作に依存しない固有のパラメータ(例えば、重力、布材料など)に対する潜在的表現を推論した。
新しいキャラクタの動きが与えられると、潜在的な表現によって、適切な衣服のアニメーションをインタラクティブな速度で自動的に生成できます。キャラクタの動きを考慮しなくても、学習された固有の衣服スペースによって新しいモーションシーケンスのキーフレーム間のスムーズなトランジションが可能になります。技術的には動作駆動オートエンコーダネットワークを用いて固有の衣服空間を学習する。ここでエンコーダは衣服の形状を体の動きの条件下で固有の空間にマッピングするが,デコーダはキャラクターの体の動きと固有のパラメータの変化に従って衣服の形状を生成するための微分可能なシミュレータとして動作する。
著者らは一般的な衣服タイプに関して,著者らのアプローチを定性的および定量的に評価した。実験は著者らのシステムがインタラクティブなユーザインタフェースを介して現在の衣服オーサリング作業手順を著しく改善できることを実証した。標準のCGパイプラインと比較して,本システムは必要なキーフレームの比率を20%から1−2%に著しく低減した。

モーション不変エンコーディング

筆者らは下にあるキャラクタの動きを因数分解しながら,潜在空間における同じ固有パラメータを持つ衣服形状を同じ位置に写像する運動不変符号化を訓練し,提供されたキャラクタの動きを使用して潜在空間における位置を様々な衣服形状に復号した。潜像空間において、同じ色のドットは同じ固有パラメータによって生成されたインスタンスを表す。

フリーシェイプ生成

本稿で提案した運動不変符号化ネットワークの視覚図を示す。学習した動き記述子を係数として用い,各ネットワーク層内の複数のサブネットワークを線形にブレンドし,動きに従ってネットワーク挙動を動的に変化させた。

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再構成は異なるカメラ視点からの様式化のシームレスなマージにより計算される。