チュートリアル / GEMBAコンバート道
第3回:フェイシャルキャプチャ編
- 3ds Max
- MotionBuilder
- アニメーション
- コラム
- チュートリアル
- データ
- 上級者
- 中級者
- 映画・TV
こんにちは、株式会社GEMBAの佐藤 宏樹と申します。
GEMBAコンバート道、第3回はフェイシャルキャプチャ編です。
今回は、フェイシャルモーションキャプチャを利用したフェイシャルアニメーションを紹介したいと思います。
ターゲットを使ったフェイシャルアニメーションでは、どうしても意図的なアニメーションになってしまいがちです。そこでGEMBAではモーションキャプチャを利用することで、筋肉の連動などの自然な動きを得るための方法を模索してきました。
過去に3つのプロジェクトで、それぞれ別の手法でアプローチを行いました。
● Softimage の Face Robot
マーカーのキャプチャデータを使用した顔にボーン(スケルトン)を仕込んで変形させるセットアップです。
● 3ds Max フェイシャルキャプチャセットアップ
3ds Maxでフェイシャルキャプチャデータを利用できる仕組みを構築しました。
● MotionBuilder と Dynamixyz プラグイン
マーカーレス(ビデオベース)のキャプチャで、スキンを利用したフェイシャルリグとターゲットを同時にアニメーション作成することができます。
フェイシャルキャプチャはまだ完全に確立した技術ではないため、各ソフトでも得意不得意がありました。そのため各ソフトの利点を生かすためにはデータのコンバートが非常に重要になってきます。実際に上記3つのアプローチの解説と必要になったコンバートを参考事例として紹介していきます。
事例①.Softimage Face Robot
経緯
2011年頃、弊社にフェイシャルキャプチャ及び、顔にボーン(スケルトン)を仕込んで変形させるセットアップを行なうノウハウが全くなかったので、まずは身近なソフトウェアで簡単に使用できると定評のあったSoftimage Face Robotを使用してみました。
キャプチャデータ
● Face Robotで使用されているコントローラに似せて配置した55個のマーカーでキャプチャを行ないました。
● 当時キャプチャデータとしてFBXが使えなかったので、C3Dというフォーマットのノイズ軽減処理をされていないものを提供してもらいました。
必要なコンバート
● 3ds MaxからSoftimageへメッシュの変換。
FBXプラグインを使用してExportしました。
● アニメーションをキャッシュとして変換。
Softimageから3ds Maxに読み込むためにポイントキャッシュ(.pc2)を使用。
作業のポイント
● モデル
○ 軸が違うので、顔・眼球・口・舌のメッシュに対してルートノードを作る。
ルートノードがないとキャッシュを90度回転させる必要があります。
(※第2回での「ルートノードを作成する」のおさらい)
○ ポリゴンは首以外を閉じたメッシュにしておく。
Face Robotでエラーになってしまうので。
○ 追加で調整するためには、ターゲットモデルを用意する。
● セットアップ(Softimage)
○ Face Robotのウィザードでフェイシャル用コントローラを配置。
○ ウェイト調整。
● セットアップ(3ds Max)
○ 追加で調整するターゲットのリグ
● アニメーション
○ キャプチャデータ読込みと強度の調整
○ Face Robotの設定で、セットアップしたコントローラと、フェイシャルキャプチャデータのマーカーのマップを作成する。
顔の各部位の、キャプチャからの動きを拾う強さなどの調整を行う。
○ キャプチャデータ適用後の調整。
コントローラを調整しながら、モデリングも交えて顔形状の調整をします。
○ 満足のいく結果が得られたら、キャッシュをエクスポートします。
○ 3ds Maxへ読み込んだ後のアニメーション調整
モーファーモディファイヤを利用して追加の調整を行ないました。
Softimageからのキャッシュをチャンネルのひとつにし、他の形状のターゲットと並列にしました。
結果と課題
● セットアップが非常に簡単
● アニメーションの調整はSoftimageで行う
● 最終調整のために3ds Maxでもターゲットを作成した
コントローラを動かすと、ほうれい線が目立ったり口が下に下がりすぎたりしてしまい、抑えようとして動きが全体的に弱くなってしまいました。 自動でフェイシャルリグが作成されるのはとても楽ですが、調整する箇所が多く、作業環境がSoftimageのみだったこともあり、難航。 結果として、3ds Maxでターゲットのフェイシャルアニメーション作業の下敷き程度になってしまいました。
事例②.3ds Max フェイシャルキャプチャ・セットアップ
経緯
前回の反省も踏まえキャプチャデータの調整とアニメーションの調整を同じソフトウェアで行ないたいということで、3ds Maxのみを利用したセットアップを作成しました。
キャプチャデータ
Face Robotの時より頬の動きをよく拾うために複数のマーカーを追加し、計86個のマーカーを使って撮影しました。キャプチャデータはFBXです。
必要なコンバート
MotionBuilderで書き出したFBXデータ作成して、3ds Maxで読み込みます。
作業のポイント
● セットアップ(3ds Max)
○ マーカーから位置を拾えるようにするためのオブジェクトの配置。
Custom Attributeやスクリプトで、マーカーの位置移動を拾う強度の設定ができるようにしました。
○ マーカーの位置の強度・調整が設定できるリグ
Face Robotのように、額や上唇など顔の部位全体を調整できるものと、
個々のマーカー調整が ローカルx,y,z方向+-の六軸で細かく調整できるものを準備しました。
○ キャプチャデータの動きを適用してみた画像(*おじさんでやってみました)
● アニメーション
○ キャプチャデータ読込み
○ データから位置を拾う強さの調整
結果と課題
● 調整箇所を増やしたおかげで、精度が上がった
● マーカーを拾うだけではできないアニメーションがあった
3ds Maxで細かく調整できるようにしてあったこともあり、Face Robot使用時よりもキャプチャの動きを拾う精度は上がった感じがしました。 しかし「唇を突き出す」「巻き込む」といった形状のときに、マーカー移動を単純に拾うだけではできません。そういう部分は、マーカーの動きに連動させたリグにするか、理想の形をモデリングしターゲットにする必要がありました。
事例③.MotionBuilder と Dynamixyz プラグイン
経緯
次に自然な芝居が必要とされる案件でDynamixyzを使用することにしました。
Dynamixyzはマーカーレスキャプチャデータ(ビデオ)から、スキンを利用したフェイシャルリグとターゲットを同時にアニメーション作成することができるプラグインです。
キャプチャデータ
ヘッドマウントカメラを頭に固定して顔のビデオ撮影をしました。
Dynamixyzでは、そのビデオをキャプチャデータとして利用します。
必要なコンバート
● 3ds Max から MotionBuilderへモデルの書き出し
● MotionBuilderでコンストレインなど再現
● Dynamixyzでのビデオの解析し、MotionBuilderのアニメーションに変換
● MotionBuilderから3ds Maxへのアニメーションの書き出し
作業のポイント
● セットアップ(3ds Max)
○ スキンを利用するフェイシャルリグ(前回のものとほぼ同じ)とターゲットを同時利用してセットアップしました。
○ ターゲットのコンバート。
FBXの設定でDeformers/MorphsをOnにする
○ 参考画像(ShapeでWinkさせ、頬のボーンを少し移動してみました)
● セットアップ(MotionBuilder・Dynamixyz)
○ ビデオから顔パーツの動きをトラッキングして、リターゲットにつかうデータを作成します。
○ 一度ベースを作成すると、同じ人物で撮影したビデオはすべてトラッキングできるようになります。
○ アニメーションに使用できるEntityとして、Shape (モーフターゲット) と フェイシャルリグコントローラを登録します。
○ Dynamixyzのオフィシャルチュートリアルでも一連の流れがわかります。
● アニメーション
○ 作成したトラッキングデータをDynamixyzのツールが分析して、自動的にEntityにアニメーションキーを作成します。
○ MotionBuilderから3ds Maxに、Shapeとリグのアニメーションを書き出します。
○ 3ds Maxで書き出したFBXをアニメーションをインポートすると、フェイシャルリグとモーファーモディファイヤにアニメーションが付いた状態になります。
○ モーファーを使って微調整。
結果と課題
● 自動なのに精度が高い
● キャッシュではなくアニメーションキーなので、データが軽くエディットができる
● ターゲットの選定、ウェイト調整には時間がかかる
Dynamixyzが自動的に作成してくれるアニメーションの精度はかなり良かったです。
3ds MaxにMotionBuilderからのアニメーションを持ってきたときには、ポイントキャッシュではなくモーファーチャンネルにアニメーションがついている状態なので、追加で設置したボーンでの微調整が効果的でした。それによって、フェイシャルアニメーション作業の効率化が図れました。
当時はありませんでしたが、Dynamixyzでは3ds Max用のリターゲットプラグインも用意されているそうです。
総評
Dynamixyzのように画像解析で効率化ができ、ターゲットとボーンなどによる調整ができるフェイシャルセットアップというのが、最も良い仕上がりでした。
今後の課題としては、効果的なターゲットの作成、ウェイト調整の効率化、リグの自由度を高める、などがあげられます。
おまけスクリプト
総評でも書いてあるように、キャプチャを使う場合でもターゲットをつかった調整をお勧めします。
その際、ターゲットが大量にあると面倒な複数のモーファーのチャンネルをインスタンスにするスクリプトを提供します。使うと少し手間が省けるのではないかと思います。
詳しくは配布中データの【使い方】ご覧ください。
最後に、前回のアニメーションに表情をつけてみました。 MotionBuilderでつけたフェイシャルアニメーションを3ds Maxにコンバートしています。