■使用ツールを決定する
モデリングやアニメーション、ショットワークまで、制作工程各所で使用できるアプリケーションの選択肢は非常に多くなってきています。DCCツールのみで制作が完結することは現在ではほぼありません。それぞれの特性を活かしアプリケーション間をはしごして制作が行われることはもはやお馴染みの光景です。
今回は、前回のキャラクターモデリングに引き続きリギングについてお話していきますが、アプリケーションが多様化しているとはいえリグを構築する場所とアニメーション作業を行う場所は同じツール内であることがほとんどです。このため“どこでアニメーション作業を行うか”が決まると、必然的にそこがリグを構築する場所となります。リグの目的はあくまでアニメーションとそのエクスポートであるということをしっかり念頭に入れ使用ツールを決定します。
■エクスポートに適したリグ構造とは
UE4ヘキャラクター及びそのアニメーションをインポートするにはFBX形式を経由します。キャラクターのインポートに必要な情報は、メッシュデータとスキニングを行うボーン、そしてアニメーションインポートに必要な情報はアニメーションキーがベイクされたボーンのデータのみです。最終的にはリグ構造のあらゆるオブジェクトは全て不要となりますので、これらを適格に除外できるようデータを構築すると良いでしょう。
最も分かりやすく扱いやすいのは以下の画像 (fig01, fig02)のようなメッシュ・ボーン・リグの3つをすべて別階層の独立構造として組み上げる方法でしょう。これにより、不要なオブジェクトの除外はもちろんのこと、アニメーションのベイクも破損なく容易にできます。
fig01. メッシュ・ボーン・リグの独立階層構造
fig02. 3dsMax付属のリグシステム「Biped」を使用し、メッシュ・ボーン・リグをそれぞれ別階層で構築した例。Bipedの特性上、スキニングをするボーンがそのままコントロールリグとして機能するものですが、階層を分けるためあえてボーン階層を別途ダミーオブジェクトで作成しコンストレイントで接続しています。
自らカスタムリグを組む場合、独立構造で設計することはさほど難しいことではないかと思いますが、既存のリグシステムを使用する場合はそれぞれの特徴をよく理解した上で加工する必要があります。衣装や髪、フェイシャルリグなど追加リグを付け足す場合この基本構造を壊さないよう注意します。これは下記のfig03及びfig04のようにそもそも独立構造で設計されているリグにおいても同様です。
fig03. Mayaに付属のHumanIK。モーションキャプチャの流し込みやリターゲットに特化していることもあってか、もともとボーンとコントロールリグは別階層で切り離しも簡単。
fig04. Animation and Rigging Toolkit (ART)はUnrealEngineのマーケットプレイスから入手可能なMaya用のツールセット。こちらも独立構造。リグ構造内にボーン階層と同じものがダミーとして含まれている。
■フェイシャルリグ
フェイシャルリグはおそらく全身の中で特に可動部分が多く動きも3次元的なため、構造が複雑になりやすい部分です。フェイシャルアニメーションをボディ同様にスケルタルメッシュとしてUE4にインポートする場合はボーンによるスキニングとモーフターゲットが使用できます。ラティスなどのデフォーマは原則使用できません。
fig05. ボーンとモーフターゲットを使用したフェイシャルリグ。まぶたや口内にはボーンを使用しそれ以外はモーフターゲットを作成しています。このキャラクターでは大部分をモーフィングに頼った方式でした。
注意しなければならないのはまず、変形処理の多階層化ができないという点です。単一階層においてはスキンとモーフの計算順は原則モーフが先となりますが、この順序を一部だけ入れ替えたい状況には対応が難しくなります。例えば、顎の開閉はモーフで制御したいが、事実上その子階層に位置する舌の動きはボーンで行いたい場合。fig06上図のような単一階層ではfig07左で示すように変形に破綻が生じますが、fig06下図のような舌の動きをいったんダミーのメッシュで変形した後これをモーフターゲットとして処理する構造にすれば、変形順が入れ替わりfig07右のように理想的な変形が可能になります。ただし、FBXエクスポート前提ではこの複雑な構造を採用することはできません。
fig06. 単一階層と多階層の変形処理図。
fig07. 顎の開閉をモーフ、舌の動きをボーンで、それぞれ単一/多階層で変形した結果。単一階層では舌よりも顎下げが先に処理されてしまい舌ボーンの位置がズレてしまっています。
次に、UE4へのFBXインポートではスキンウェイトの最大影響数が1頂点あたり最大8つまでしかサポートされていないことです。(fig08)多階層化でダミーメッシュを介すことができないとなると、どうしてもメインのメッシュに多くのボーンが集中してしまいますが、8影響数を超えるほど細かなウェイトを仕込む場合は何らかの対策が必要です。この点は『Fortnite トレーラー制作のリアルタイム パイプライン情報』でも言及されています。この問題の回避に加えラティスデフォーマを使用したいなどの理由から、頭部だけAlembic形式で出力するという方法を選択したとのことです。
fig08. 1つの頂点に10のボーンを影響させ、UE4にスケルタルメッシュでFBXエクスポートした際のエラーウィンドウ。2つのボーンが無視されウェイトは分散されてしまいます。
■揺れ物アニメーションへの対応
キャラクターのパーツの中には、布や紙、尻尾など、主たるアニメーションに追従して揺れるように動く部分が数か所は出てくるでしょう。これらのアニメーション作業にはシミュレーションを活用することも十分考えられます。シミュレーションをDCCツール内で事前にベイクしておくのか、UE4内でリアルタイムに行うのかは選択の余地がありますが、映像制作目的であれば前者をおすすめします。シミュレーションそのものをリアルタイムで描画する必要はありませんし、結果の安定性、微調整、埋まりの除去などを考慮するとDCCツール内で固めてしまったほうが確実でしょう。ツールを跨ぐことでアニメーションワークフローが複雑化することも避けられます。
しかし当然のことながら、DCCツール内でのシミュレーションを採用するのであれば、エクスポート可能か否かは十分に検討しておかなければなりません。(fig09)FBXでは原則スキンとモーフしか移行できませんので、尻尾などのチェーン構造であればボーンを仕込んでダイナミクスシミュレーションを適用すれば良いでしょう。最終的にシミュレーション結果をボーンのアニメーションとしてベイクできる形でであれば何ら問題はありません。問題は、チェーン構造でなくマントやスカートなどの面構造に対しクロスシミュレーションを行う場合です。クロスシミュレーションはスキンでもモーフでもありませんので何らかの手法でこれらに変換する(※)か、そもそもFBX出力をやめてAlembic形式でジオメトリキャッシュとしてUE4へ移行する必要があります。
※. 現在は残念ながら入手が不可能となっていますが、下記参考で紹介されているようなツールを使用してスキンへ変換できると非常に便利です。 参考:『アニメーションするメッシュからボーンやスキンメッシュを作成!「Skinning Converter」の紹介!』
fig09. 青色のパーツはチェーン構造の揺れもの制御で十分そうですが、赤色のパーツは面構造なのでクロスシミュレーションが必要になりそうです。
リギングは最終成果物には直接表れないものですが、アニメーション作業のための仕組みであり、データをUE4へエクスポートするためのベースの仕組み作りでもあります。 ツールを跨いでエクスポート/インポートが発生することで、仕様や制約が増え頭を悩ませることも多くなりがちですが、逆に言えば使えるものが限られるため、覚えなければいけないことはさほど多くないようにも思えます。割り切って全てジオメトリキャッシュにしてしまうというのも、ある意味シンプルで良い手かもしれません。
出来る限り妥協が無く、かつ快適なワークフローになるよう、最適なデータ構築を行いたいところです。
---
ジェットスタジオは2001年に発足し現在まで、フルCGの映像を中心にアニメ・ゲーム・パチンコなど様々なコンテンツの3DCG制作を行ってきた会社です。詳細は公式HPやFacebookページをご覧ください。
(関連記事)