Simulation

Tips

modoのリジッドボディで壁が崩壊する表現

modoのリジッドボディダイナミクスで崩壊する表現をテストしてみたのでファイルを公開しておきます。単純なファイルであまり綺麗なデータではありませんが、何かの参考になればと思います。

 

壁が壊れる表現

球体で壁が崩れるサンプルです。複雑なデータではないのでシミュレーション速度は早め。ボリュームのレンダリングが遅いのでレンダリングするのはお勧めしません。

サンプルファイル

 

煙のない画像。

 

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

壁のオブジェクトは形状メニューの「メッシュシャッター」の均一を使用して分割してます。分割したアイテムは「複合ダイナミクス」を使用して、まとめてダイナミクスを設定してます。

Collision Emitterを使用してリジッドボディの衝突を使用してパーティクルを発生させ、そのパーティクルを利用して壁の大小の破片と、煙用のボリュームとスプライト用のパーティクルを発生させています。

今回は破片から煙用のパーティクルを発生させているため、衝突した頂点付近からパーティクルが発生していますが、本来はSurface Particle Generator等を使用して面からパーティクルを発生させた方が自然に見えると思います。Surface Particle Generatorは動作が重くなるので今回は使いませんでした。

煙のパーティクルの制御は他の記事に書いてるので、そちらを参考にしてください。

 

地面が崩れる表現

地面が崩れるサンプルです。シミュレーション結果をキャッシュするとファイルサイズが1GBくらいになりますが、大規模なデータではないので、テストシーンとしては軽い方だと思います。

サンプルファイル

スケマティックはこんな感じです。基本的には上の壁が壊れるシーンと同じです。

地面が崩れるタイミングの調整にはウェイクオンの「衝突フォース」を使用しています。パーティクルに質量を設定して、パーティクルと衝突したアイテムからリジッドボディが動き出します。衝突は近くのアイテムに伝播してしまうので、細かく制御するのに向かない場合があるかも知れません。

 

modoのダイナミクスはシミュレーション速度や精度に難点があるため、ビルが崩壊するような大規模シミュレーションをじっくり見せるために使用するのは大変そうですが、アクションシーケンスの短いカットで使用するには十分使えると思います。

 

参考

Tips

modoで鎖帷子のような表現

modoのUV Transformを使って、鎖帷子(チェーンメール)のような表現をテストしてみた。

サンプルファイル

作り方は単純です。ソフトボディを使って布のようなシミュレーションを行います。

シミュレーションしたメッシュをUV Transformのターゲットメッシュに設定してチェーンメッシュを変形します。
UV TransformはUVを使ってメッシュを変形する機能です。メッシュ表面にメッシュを沿わせるモデリングやアニメーションで便利に使えます。

チェーンはループして見えるように配置した輪を、Arrayを使って複製してます。

 

UV Transformを使うと鎖帷子のように、そのままシミュレーションするのが難しい複雑なメッシュをアニメーションさせることができて便利です。

UV Transformはポリゴン数の少ないメッシュではそれほど遅くないのですが、Arrayと組み合わせると驚くほど遅くなります。また、UV Transformはターゲットの形状によって、計算不能ということなのかメッシュが変な方向に伸びてしまうことがあるようです。

 

参考

参考資料

Particle Universe

Cinema 4D、X-Particles、Houdiniで行ったシミュレーションをまとめだそうです。レンダリングはRedshift。
レンダリングが綺麗。

Tips

modoでPlexusっぽいライン表現

modoでAfterEffectsのプラグイン「Plexus」っぽいライン表現について書いてみます。

サンプルファイル

 

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

基本的にはパーティクルシミュレーションをParticles to Array使って配列を作成し、Create Polygonsでラインを生成してます。Create Polygonsは配列から一筆書きでラインを生成することしかできないので、Offset Arrayで少し配列をずらしたデータを作り、Merge Arraysを使用して1つの配列に統合します。Merge Arraysを繰り返すことで1つの頂点から複数のラインを生成してます。

パーティクルが一定の距離離れたらラインを消すためにSelect Edges by Lengthを使用します。

パーティクルをレンダリングするために、Replicatorを使用してキューブを複製してます。このときキューブはParticle Look At Modifierを使用して常にカメラを注視するように設定してます。

 

それっぽくレンダリングするとこんな感じ。ロゴの頂点番号を工夫すると、もう少し面白いテキストアニメーションにできそう。フォールオフSelect By Volumeを使って、ラインを生成する範囲を制御してみるのも面白いかも知れません。

 

参考

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%に著しく低減した。

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

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

フリーシェイプ生成

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