Rigging

CG News

Applicator Kit for Modo

フェイシャルキャプチャデータを使用するためのキット「Applicator Kit for Modo」がリリースされました。価格は$49、9月末までお試し価格$ 35。

このキットはTrueDepthカメラを搭載したiPhoneで、Apple ARKit Face Trackingを使用してキャプチャしたデータをmodoに読み込むためのキットです。フェイシャルキャプチャするには別途ソフトウェアが必要です。

https://gumroad.com/l/applicatorkit

 

概要

アプリケーターキット for Modoを使えば、iPhoneやiPadのTrueDepthカメラで撮影したApple ARKit Face TrackingデータをModoのキャラクターに適用することができます。
Apple ARKit Face Trackingは、あなたのiPhoneやiPadでパフォーマーの頭の位置だけでなく、50以上のユニークなブレンドシェイプ係数(Modoではモーフターゲット)を60フレーム/秒で追跡することができます。アプリケーターキット for Modoを使えば、このデータを取り、4つの簡単なステップでModoのキャラクターに適用することができます。

  1. マッピングファイルを定義する
  2. 顔のキャプチャパフォーマンスを記録する
  3. パソコンにデータを転送する
  4. データを自分のキャラクターに適用する

 

主な機能

  • アイテム階層ターゲット:シーン内のアイテム階層内にマッピングされたすべてのターゲットにデータを適用します。
  • アクターとアクションターゲット: データをアクターに適用し、オプションでアクション(新規または既存)として適用します。
  • マッピングファイル:トラッキングデータを適用する対象のモーフマップとアイテムを設定することができます。
  • マルチターゲット:単一のブレンドシェイプのトラッキングデータを複数のモーフマップに適用することができます。
  • 独立した有効化/無効化:シーンに適用するデータポイントを完全にコントロールできます。
  • マルチプライヤー: キャプチャーが微妙すぎて(または極端すぎて)、必要なパフォーマンスが得られないことがあります。マルチプライヤーを使用すると、シーンに対するトラッキングデータの値を増加(または減少)させることができます。
  • バリューシフト: 乗算器のように、バリューシフトはパフォーマンスを微調整することができますが、トラッキングデータを乗算するのではなく、一定の値を使用して上下にシフトします。
  • スムージングアルゴリズム: オプションでトラッキングデータにスムージングアルゴリズムを適用します。
  • FPS変換:60fps記録データをシーンのfpsに自動的に変換します。サポートfpsオプション。60、50、48、30、29.97、25、24。
  • ニュートラルアルゴリズム:オプションでニュートラルな顔のキャプチャ(ニュートラルな状態でパフォーマーの顔を5秒程度録画)を提供することで、アルゴリズムはパフォーマーのユニークな顔の形状に合わせてキャプチャデータを調整します。
  • 開始フレーム: データアプリケーションを開始するフレームを指定します。
  • キャプチャフレームをスキップ:スキップする録画のフレーム数を指定します。

 

サポートされているフェイストラッキングアプリ

注意: アプリケーターキットは顔のトラッキングデータをキャプチャしません、これはModoであなたのシーンにデータを適用するだけです。顔のパフォーマンスをキャプチャするには、以下のアプリのいずれかを使用してください。

Tips

modoのシェーダーノードでレンズディストーションエフェクト

modoのシェーダーノードを使って、カメラのレンズゆがみのような効果を制御する方法が解説されてたので写経してみました。

カメラの回転とShader Inputのレイ方向をそろえた後、レイ方向のXYを任意に編集した結果をRayCastでFinal Color Outputに戻すというのが基本的な流れのようです。

 

球面

球面のようにレンダリング。

サンプルファイル

 

ディストーションのカーブ制御

カーブを使用してゆがみ制御。

サンプルファイル

 

ディストーションのテクスチャ制御

テクスチャを使用してゆがみを制御。

サンプルファイル

 

レイ方向を制御する方法はポストエフェクトによるゆがみと異なり、ピクセルが荒くなったりせずシャープな画像を維持できるのがメリットです。しかし、欲しいゆがみを計算で求めるのが難しいです。
シェーダーノードはレンダリングも遅いので、テクスチャオフセットのように、もう少し手軽に使えるような機能があると嬉しいですね。

 

参考

詳細な解説をしてくれた館長さんに感謝です。

 

Tips

modoでカメラの視野角を計算する方法

modoでカメラの視野角を計算することができたのでメモしときます。

modoのカメラではプロパティで「視野」を確認することはできますが、「視野」チャンネルをスケマティックに追加することができません。Expressionノードを使用すると「視野」を計算することができます。

 

一般的にカメラの視野角は以下の計算式で求めるそうです。

視野角=2*atan(イメージセンサー幅/(2*焦点距離))

 

これをmodoのExpressionで計算します。Expressionノードには入力Aに「焦点長」、入力Bに「フィルム幅」を接続します。atanを使うとラジアンになるらしいので、最後に角度に変換します。

2*atan(B/(2*A))*180/3.141592

modoの視野チャンネルと同じ値が計算できています。

 

カメラの視野角が計算できるとカメラから見える範囲にだけ処理を行うことができるので、ビューポートが重い場合に効果的です。例えばカメラの見える範囲だけReplicatorを表示することができます。下の画像では視野に合わせて自動的にReplicatorの表示が切り替わってます。

サンプルファイル

ファーには「視錐台カリング」という同様の機能がありますが、Replicatorにはありません。そんな時に視野角を使ってリグを組みます。フォールオフを使用してるので、プロシージャルモデリングと組み合わせても便利かもしれません。

参考資料

MPC Film - Creating Scar - Characters of The Lion King

ライオンのリアルさ凄すぎ。

スカーを作るためにチームはまずコンセプトアートを参照することから始めました。

キャラクターのデザイン。モデリングチームは、このアートとライオンの写真を使用して、スカーの形と形を見つけました。モデリングプロセスの後、グルーミング、リギング、シェーディングは早い段階で始まりました。
ステージで、ファーとテクスチャを持つキャラクタを表示するレンダーテストと並行します。プロジェクトが進むにつれて、リアルタイムのバーチャル制作リグから筋肉やスキンの詳細なワークフローに至るまで、リギングツールはプロジェクトの進行に合わせて継続的に開発されました。

アニメーションとリギングのチームは協力して、以前のシステムを構築しました。スカーの繊細な顔のアニメーション、リアルなうなり声、しわが引っ込んだときに皮膚やファーに起こる現象まで、スカーのニュアンスに焦点が当てられました。彼の目とその周りの皮膚には非常に詳細な情報が与えられ、チームは獣医の専門家を招いて構造の特異性を学びました。
マッスルシミュレーションツールは、スカーのスケルトンとの接続性を高めるために開発されました。これにより、軟部組織とスケルトンを衝突させることができ、正しい解剖学的構造とボリュームを維持することができます。

スカーのファーを可能な限りリアルに見せるために、スタジオのファーシェーダーを一から書き直し、アーティストが使用するメラニンベースのカラーパレットを作成しました。グルーミングFXシミュレーションを開発し、風と雨の相互作用に対する現実的な効果を作成しました。

スカーのアニメーションでは、チームはプラネットアースからの何百時間にも及ぶリファレンスクリップ、ケニアでの撮影、アニマルキングダムで撮った映像を研究して、キャラクターのパフォーマンスの面で新しいレベルのディテールを達成しました。
スカーは完全にキーフレームアニメートし、完全に手作業で作成しました。人間の顔の筋肉はライオンの顔の筋肉とは非常に異なるため、スカーの顔のアニメーションは、ライオンのリアリズムを失うことなく感情を伝えるために多大な芸術的判断を必要としました。アニメーションプロセスは非常に時間がかかり、適切なレベルのパフォーマンスと信頼性を実現するために何度も繰り返す必要がありました。

Tips

modoのプロシージャル頂点マップ

Foundryのフォーラムで面白いスレッドを見かけたので紹介します。

「Vertexmaps In The Mix」はmodo 14で追加されたプロシージャル頂点マップ活用法を共有しようというスレッドで、アニメーションからレンダリングまで幅広い活用方法が紹介されてます。
https://community.foundry.com/discuss/topic/151806/vertexmaps-in-the-mix?mode=Post&postID=1196476#1196476

スレッドでは様々なサンプルファイルが公開されてます。ファイルが公開されてないものから面白そうな物をまねしてみました。サンプルファイルを公開しておくので参考にどうぞ。

 

徐々に消えるウェイト

現状はウェイトマップを徐々に消えるような機能がありません。そこでパーティクルを使用して、メッシュとパーティクルが離れるにつれてウェイトが消えるようにするハック技です。

サンプルファイル

パーティクルの距離とウェイトの強さはテクスチャリプリケーターを使用しています。Constantはレイヤーを反転、または値を-100%に設定しないとウェイトが意図したように反映されないようです。理由は不明。

14.0ではウェイトをブラーする機能が搭載されてないため、全体的にウェイトが荒い印象になってしまいます。現在はTracerXにウェイトマップをブラーする機能があります。

 

メッシュのパートによるアニメーション

メッシュのパート(連結されたメッシュ)単位でウェイトを設定してアニメーションする方法です。

サンプルファイル

Falloff Operatorのポイントパートを使用して、Boxごとに0~100%のウェイトを適用します。ウェイト位置のアニメーションはmodo 13.2で追加されたグラディエントノードを使用して、Falloff OperatorのグラデーションをGradient Offsetを使用してアニメーションしてます。

 

プッシュデフォーマを使ったバージョン。上の内容と同じです。

サンプルファイル

Falloff Operatorが思いのほか便利だと気がつきました。最初のサンプルではトランスフォームデフォーマを使用しましたが、モーフマップを使用しておなじような表現を作ることもできます。

Falloff Operatorはジオメトリ情報を元にウェイト値を生成できるので、「ポリゴン面積」「ポリゴン平面率」などを使用した標準機能では作れない質感を作れる気がします。

 

 

以下は自分でテストしたものです。

 

広がるウェイト

選択した頂点からウェイトが広がる基本的な使用法です。

サンプルファイル

ソフトボディには「ゴールマップ」という、シミュレーションをおこなわない部分をウェイトで指定する機能があるのですが、残念ながらウェイトのアニメーションには対応してないようです。


クロスシミュレーションする範囲が広がったり、逆にクロスシミュレーションからシミュレーション前の形状に変化させるアニメーションを作りたいときもあるので、将来的にウェイトのアニメーションに対応してくれると嬉しい。

 

波紋

パーティクルでメッシュを変形する使用方法です。基本的には以前紹介したカーブフォールオフでメッシュ変形する方法と同じです。

サンプルファイル

「徐々に消えるウェイト」のようにテクスチャリプリケーターを使用しても同じことができますが、変形する時間を制御するのは、カーブを使用した方が扱いやすいと思います。

 

足跡

雪に足跡が残るような表現です。メッシュが細かいので重い。

サンプルファイル

足跡用のメッシュをアニメーションさせて、Select By Volume を使って足跡メッシュ内に含まれるポリゴンにウェイトを設定してます。

 

エッジウェイトのアニメーション

何に使えばいいのかわからないけど、とりあえずアニメーションしてみた。

サンプルファイル

 

ウェイトマップはデフォーマの変形以外にも、ウェイトマップテクスチャと組み合わせてレンダリングに使用できるのも便利です。UV展開しなくても頂点ペイント感覚でモデルに質感設定することができます。

ウェイトのブラーのようにまだ足りない機能もありますが、プロシージャルでウェイトを設定できるのはアニメーションで大いに役立ちそうです。

 

参考

Tips

modoで唇リグ

modoの機能紹介ビデオをまねて唇リグを作ってみた。
modo 13.2で追加されたグラディエントチャンネルとCurve Falloffを組み合わせて使うと、単純なノード構成でも柔軟なアニメーションができます。

サンプルファイル(13.2)

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


唇の閉じた位置にカーブがあり、そのカーブを使ってトランスフォームデフォーマの影響範囲を制御してい ます。影響範囲の制御はユーザーチャンネルに追加したグラディエントと、Curve Falloffの「長さに沿ってフォールオフ」を使用します。

Gradient ScaleやGradient Offsetを使うとカーブをアニメーションすることができるので、唇の開き具合や位置の制御に使ってみました。

 

Curve Falloff使った単純なサンプルも公開しておきます。 Curve SweepとCurve Falloffの相性が悪いのかレンダリングするとmodoが落ちます。

サンプルファイル(13.2)

Gradient BlendやGradient Mathを使えば、もっと複雑なアニメーションを作ることができそうですね。

 

参考

参考資料

3ds Maxの高度なカートゥーンキャラクターリギングトレーニング

3ds Maxのカートゥーンキャラクターリギングのトレーニングだそうです。トレーニング時間:11時間08分
14の章と63のビデオ。費用は225 USドル。

リグがよくできてそう。
https://www.joaovictor3d.com/rigavancado-eng

このコースでは正確にリグを設定できるようにモデルを準備する方法、ベクトル間の角度を検出する方法、変換配列を操作する方法、値の参照、腕と脚用にパラメータ化されたik/fkブレンドシステム、コーディングによるスカッシュ アンドストレッチ、肘や手と膝のピン、パラメータ化された自動鎖骨、脊椎と手首用のツイストシステム、maxscriptを介したカスタムアトリビュートの追加、二次制御によるベンド腕とベンド脚、ラジアンと度、maxscriptを介してパラメータ化された足の回転、2軸足、ループを使用したタスクの自動化、指用の自動システム、ボーンの正しい位置、数学を使用したブレンドシェイプの修正(リニア方程式)、フロートリアクション、複雑なメッシュ用のスキニング方法、3つの異なる手法によるブレンドシェイプの修正、頭のスカッシュ アンドストレッチ、マズルリグ、スケーラブルな目、瞳孔コントロール、頬骨制御、選択ユーザインタフェースなどについて学習します。

Tips

modoでメッシュを押しつぶす表現

modoでメッシュを使用して、別のメッシュを押しつぶす表現について書いてみます。

サンプルファイル

 

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

プロシージャルモデリング機能のSurface Constraintを使用してメッシュを押しつぶしてます。

Surface Constraintをポリゴン数の多いアイテムに使用すると計算が遅くなりそうなので、単純な形状のメッシュを使用してメッシュ変形できるようにWrapデフォーマを使用しました。Wrapデフォーマはスケマティックを使用してメッシュを入れ替えると反応しなくなり、modoの再起動が必要になる気がするので注意が必要です。

最後に、押しつぶしたあと柔らかいメッシュが揺れるニュアンスが欲しかったのでSoft Lagを追加してます。

スケマティック下の方はSurface Constraintの軸を反転する処理です。Surface Constraintは元々がモデリング用ということもあり、コンストレイントする軸が「XYZ」と「反転」の組み合わせで使うようになってます。
モデリングでは問題ありませんが、アニメーション用途で使おうとするとアイテムの位置関係でオプションを切り替える必要があって少し手間が掛かりそうです。アイテムの位置が45°の範囲でXYZ軸の切り替えと自動的に反転するリグを組もうと思いましたが、少し面倒そうでした。

 

Surface Constraintを使うとソフトボディのシミュレーションよりも手軽に変形を確認できるのが便利です。

modoのアセットに含まれてるチキンを変形してみた。

 

参考

Tips

modoでサーフェースに沿ってアイテムを動かす方法

modoでサーフェース(メッシュ)に沿ってアイテムを動かす方法について書いてみます。

サンプルファイル

modoでサーフェースに沿ってアイテムを動かすときは「交差サーフェース」を使用します。作成手順は以下の通り。

制御用のアイテム、次にサーフェースを参照するアイテムの順番で選択して、「交差サーフェース」ボタンをクリックします。するとサーフェースに沿って移動するロケータが作成されます。
通常はこのロケータにアイテムをペアレントすれば、サーフェースに沿ってアイテムが移動して見えます。

しかし、リグで使用するコントローラそのものをサーフェースにコンストレイントしたい場合があります(Mayaのジオメトリ コンストレイントのように)。そんなときはスケマティックを使用して、Intersectノードの「位置出力」を、コンストレイントしたいアイテムの「ワールド位置」に接続します。すると直接操作するアイテムをサーフェースにコンストレイントすることができます。

スケマティックではConeの「ワールド位置」がIntersectに接続され、Intersectで起算した結果がConeの「ワールド位置」に接続されており処理がループしています。一般的にこのような循環したノード接続をおこなうと、無限ループ(エラー)が発生して計算することができませんが、modoでは1ノードであれば計算をループさせて使用することができます。

参考資料

AIを使用した2Dビデオのフェイスリグ

AIを使用して2Dのビデオにリグを設定、そのリグを使用してアニメーションするテストだそうです。凄い!

Tips

modoで線をアニメーションする表現

modoで線をアニメーションする表現について書いてみます。
ArrayとCreate Polygonsを使用すると簡単に線がアニメーションするような表現が可能です。

■ サンプルファイル

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

ロゴのメッシュデータをParticles to Arrayで配列にし、Offset Arrayを使用して配列データをオフセットアニメーションします。この配列を使用してCreate Polygonsで「ライン」を生成してます。

線が全てつながった状態だとアニメーションしてる感じがしないので、Select Randomを使ってラインをランダムに削除します。
Create Polygonsはロゴのメッシュ全体を一筆書きのようにラインを生成するため、長いラインが発生します。この長いラインを削除したかったので、Select Edges by Lengthを使用しました。

ロゴの形状を崩すところは Jitter を使用してます。

 

参考

参考資料

GUILTY GEAR Xrd開発スタッフが送るスキニングのためのモデリング TIPS

2019年4月に行われてたセミナー「GUILTY GEAR Xrd開発スタッフが送るスキニングのためのモデリング TIPS」のスライドが公開されてます。 ローポリ前提ということで書かれてますが、ウェイトの影響と制御いう意味では、ローポリ以外にも活用できる話だと思います。
https://www.slideshare.net/ASW_Yokohama/guilty-gear-xrd-tips-208013275

続きを読む

参考資料

バニーガール3Dモデルリグ

かわいいバニーリグが販売されてます。価格は$18。
https://flippednormals.com/downloads/bunny-girl-3d-model-rig/

バニーガール3Dモデルリグ

このファイルには、Tポーズモデルとリギングバージョンが含まれています。リグはハイエンドレベルではありません。ポーズと静止画のレンダリングにのみ使用されたため(私はプロのリガーではありません)、基本的なアニメーションを処理できます。このシンプルなリグをそのまま提供します。

キャラクターとそのコンテンツは、個人的な使用(レンダリング、照明、リギング、アニメーション)を目的としていますが、営利目的ではありません。

含まれるファイル
  • バニーリグ
  • テクスチャー
  • Maya 2018シーン
  • Arnoldレンダラーのシェーダーとライトのセットアップ