表情ポーズ編集は、おそらく Expression Editor で最も重要な部分であり、複雑な編集操作を伴います。
表情ポーズ編集は、他のモードと同様に行います。 正しい DNA がロードされていることを確認し、ホーム画面の編集モード セクションにあるボタンをクリックします。
表情グラフ
このグラフでは、各ノードが表情を表し、依存関係は表情の組み合わせ方や、後で 1 つまたは複数の表情に適用する修正を示しています。
ノードの名前とグラフのトポロジは固定されており、リグ定義を表しています。
表情グラフはタブ表示されています。 ワークフローのさまざまな時点で新しいタブを追加したり、タブのナビゲーションをロックしたりすることができるため、ワークフローに役立ちます。 全般的に、[Whole-rib View (全体リグ表示ビュー)] タブは常に一番左にあり、利用することができます。
グラフには、2 つの機能があります。1 つ目は、表情の依存関係とその状態に関する情報を表示する機能です。有用なデバッグ ツール、あるいは MetaHuman リグに慣れるための学習ツールとして利用できます。2 つ目は、表情の編集を依存関係にある表情に伝搬する (または伝搬しない) などの重要な操作のコンテキストを設定する機能です。
シーン アセンブリ
他のモードと同様、ポーズを編集するためには、まずシーンを組み立てる必要があります。
シーンを組み立てることで、Maya シーン内で完全に機能するリグが作成されます。 他のモードとは異なり、LOD0 編集のみがサポートされ、アセンブリ時に自動的にデフォルトになります。
アニメーションの読み込み
動作を検査し、介入が必要かどうかを見極める出発点として、キャプチャー、手作業、人為的な制御を問わず、アニメーションを活用してリグを特定の表情に動かしてみる方法を強く推奨します。
アニメーションを格納する FBX ファイルは、Faceboard リグ チャンネルまたは RigLogic チャンネルに直接読み込むことができます。 このようなアニメーションは、上部のボタンから読み込めます。各コマンドは、フェイスボードのフックまたはフック解除を行い、適切なチャンネルにアニメーションを読み込むようにシーンを設定します。
アニメーションを読み込む際、アニメーション ファイルに格納されているものに関していくつかの条件があります。
フェイスボードにアニメーションを読み込むには、FBX ファイルが、表情ポーズ編集モードで作られたシーン内のフェイスボード コントロールに正しく対応したチャンネルに設定されていなければなりません。
RigLogic の Raw アニメーションを読み込むには、FBX ファイルに CTRL_expressions というオブジェクトが格納されている必要があります。このオブジェクトには、キーとなる Raw コントロールの属性がすべて含まれています (CTRL_expressions.browDownL や、同様の名前の属性など)。
フレーム解析
コントロールを介して手動でポーズを決めた場合でも、アニメーションがチャンネルに読み込まれた場合でも、リグを解析することで、どのノードがアクティブになっており、現在のフレームのポーズに寄与しているかを表示できるようになりました。
[Analyze Frame (フレーム解析)] ボタンをクリックすると、グラフが更新され、リグのアクティビティ (ポーズ) のヒートマップが表示されます (ノード スウォッチの色が暖色系で濃いほど、アクティビティが高いことを示します)。
フレームへの最も大きな寄与を持つものが特定されたら、右クリック メニューから Preview Selected ノードを有効にすることで、その変更結果を隔離して表示できます。 これを行うと、選択した最後のノードがどのように全体に影響しているかをビューポートに詳しく表示するように設定されます。 この設定はユーザー設定に保存されます。
編集が必要な表情が特定されたら、既存のグラフ ビューで作業するか、依存関係を選択して Isolate Selected ノードを使用し、ノード数を減らした新しいタブを作成することができます。
アクティブな表情の編集
Expression Editor のツールキットの大半は、メッシュとジョイントの両方のターゲット表情のキャリブレーションに利用できます。
ジョイントはメッシュと一致させることができ、LOD0 は他のすべての LOD にシームレスに縮小できるため、表情編集モードでは LOD0 の変更に対してのみ機能します。 他の LOD は自動的に表示されて最適化されますが、編集は意図的に最も高精細な LOD に制限されています。
表情を編集するには、ノードを選択し、緑色の丸印のボタンを押す必要があります。 ノードをダブルクリックすることでも、表情の編集が可能です。
有効な選択が存在する場合、ボタンの状態と外観が変わり、上部のツールバーの他の部分は無効になります。
現在アクティブなタブ以外のすべてのタブが無効になります。 上部のツールバーも無効になり、[Edit Mode (編集モード)] ボタンが赤くなります。
現在のタブでは、ノードをロックして、編集の影響を受ける表情を選択することができます (差分反映)。 現在編集中のノードの下流にある各ノードの南京錠アイコンをクリックすることで、それが可能です。
ノードのロック状態はグローバルな状態です。 つまり、あるグラフ タブにおける変更が、すべてのタブに影響するということです。 ノードのロック状態は条件付きでもあります。他のノードの上流のノードがすべてロックされている場合、下流のノードに差分が反映されません。
ジオメトリとジョイントのアウトライナーと垂直のツールバーが表示され、アクティブになります。
各コマンドの詳細な説明は、「UX Overview セクションの Utility Toolbar の項目」に記載されています。
上流の表現のプレビュー
表情をアクティブに編集する際のもう 1 つの重要な要素は、プレビュー スライダーです。
プレビュー スライダーを使うと、上流の表現がどのようにブレンドされるかをプレビューできます。 上流にある表情が 2 つ未満の場合、グローバル スライダーのみが利用できます。
このセットの一番上にあるグローバル スライダーは、他のすべてのスライダーを同時にブレンドします。 これは事実上、ニュートラルなポーズと現在編集中の表情をブレンドすることと同じです。
連続するスライダー (存在する場合) は、それぞれ上流にある表情のブレンドをコントロールします。 単純な (上流の) 表現が正しく組み合わされているかどうかをプレビューできるため、表現のキャリブレーション後におけるアート面、品質面の最も重要な検査ステップと見なされます。
下流にある表情のプレビュー
プレビュー スライダーは、上流の表情を確認し、それらが今編集している表情ときれいに組み合わさっているかを検証する際に便利です。ただし、編集内容が影響を与えていようが、下流の表情には何も影響を与えません。
変更を確定する前に下流のノードを確認したい場合は、プレビュー メッシュを使って行うことになります。
プレビュー メッシュを作成するために 3 つのボタンが用意されています。
3 つのボタンは、それぞれ以下の機能を持っています。
表情グラフで選択されたすべてのノードのプレビュー メッシュを作成する
アクティブに編集された表情の下流にある、ロックされていないすべてのノードのプレビュー メッシュを作成する
上記のいずれか、または両方によって作成されたメッシュを削除する
フェーズ付きの表現
フェーズ付きの表情を編集すると、スライダー上にいくつかの編集ポイントが表示されます。 左または右をクリックするとフェーズが進みます。ジョイントが赤くなったらそのフェーズが編集可能です。 編集が終わったら、スライダーを使って、どのような見た目になるかを確認しましょう。
変更を下流にコミットする (差分反映)
高度な差分反映の使用は、表情の仕組みや組み合わせ方に十分慣れた、非常に経験豊富なテクニカル アーティスト以外にはおすすめしません。 実質的には、Expression Editor の「上級者モード」として作られた機能です。
差分反映モードには、2 種類あります。 この動作は、[Settings and Preferences (設定と環境設定)] メニューのオプションで制御できます。
デフォルトの差分反映 — 編集内容は、ロックされておらず非アクティブ化されていないノードすべてにまとめて反映されます (「非アクティブ化されていない」とは、少なくとも 1 つの上流ノードがロック解除されているノードを指します)。ただしそれは、編集作業が完了したときに限られます (上部ツールバーの丸いボタンをクリックするか、別のノードをダブルクリックして編集を切り替えると、作業が終了したと見なされます)。
高度な差分反映 — 編集を行うたびに、その時点でロックされておらず非アクティブ化されていないノードに対して、編集内容が部分的に反映されます。また、編集中にノードのロック状態を変更した場合でも、内容が自動で反映され続けます。アクティブな編集モードを抜ける必要はありません。 この機能を使えば、編集モードを切り替えることなく、複雑な選択対象に対して、編集しながら小さな調整を反映させることができます。 ただし、「流れ (変化の連鎖)」が大きくなると、変更内容の確認や検証が難しくなります。
表情に加えた変更や、上流の関連表情とのブレンド状態、下流への変更の反映に満足したら、編集モードを終了します。終了するには、上部ツールバーにある丸いボタンをクリックするか、現在編集中のノードをダブルクリックします。 これで、頂点への差分反映が完了します。
表情の編集モードを終了すると、変更内容はシーンに反映されますが、その対象は頂点のみに限られます。 リグはアニメーションのプレビューとして問題なく動作しますが、情報はすべて「モーフ ターゲット」に保存されています。すなわち、ジョイントの位置は変更されておらず、モーフ ターゲットは LOD0 でのみ利用可能です。ジョイントの位置合わせは別の工程として設計されており、頂点編集の後に行います。
あるノードを編集中に別のノードをダブルクリックすると、現在編集中のノードが終了して変更が確定され、新しくダブルクリックした (別の) 表情の編集が始まります。
初めて MLJM を表情編集ツールバーから実行する場合、ML モデルを読み込む必要があるため、数分かかります (マシン スペックによる)。 ただし、一度読み込んでしまえば、その後はそのセッション中はすぐに使えます。
ジョイント マッチングについては次の章で詳しく説明しますが、ここで特に伝えたいのは、表情編集中にも少なくとも一部のジョイント マッチングが表情レベルで可能であるということです。ただし、それはツールバーで提供されている機械学習ベースのジョイント マッチングに限定されます。
シーン レベルのジョイント マッチング
ジョイント マッチングは、最適化プロセスのように体系的に進めることをおすすめします。アーティスティックなやり方は推奨されません。 クリエイティブな調整や類似マッチングは、表情編集の段階で頂点に対して行うのが最適です。ジョイント マッチングは、その後でモーフ ターゲットによる頂点のずれをできるだけ小さくする役割を持っています。こうすることで、できるだけ多くの情報と正確さをジョイントの変形だけで表現できるようにします。
ほとんどの場合、この作業は実行できるジョイント マッチングの処理で自動的に行われますが、結果をよく確認することを強く推奨します。最初の段階ではいくつか修正を加えることが多いです。
LOD 0 (ジョイントと頂点の両方を使ったアニメーション) とジョイントだけのアニメーションとの間の違いを小さくするために、ジョイントと頂点の距離を必ずしも最小にする必要はありません。 表情の場合、最小にすることが逆効果につながる傾向があります。
最小化の目的は、ジョイントのみの LOD (あるいは頂点アニメーションなしの LOD0) のボリュームを、できるだけ完全な LOD に近づけることです。
良い結果の場合、複数の頂点に影響を与えるジョイントや、複数のジョイントから影響を受ける頂点は、ニュートラル ポーズで近くにあった頂点とほとんど一致しません。
サーフェスのジョイントが頂点に近くなるのは、ニュートラル ポーズのときのみであり、表情にはあまり当てはまりません。
ジョイント マッチングは、フレームレート関連の最適化以上の意味を持っています。 ジョイント アニメーションは、線形形状補間ではできない滑らかな動きを実現します。 たとえ映画のような設定で LOD0 を使うだけの場合でも、ジョイント マッチングは行うことをおすすめします。 モーフ ターゲットは動きを豊かにできますが、細かい部分やわずかな変化を目的に使うべきです。
ジョイント マッチングには、NLS と ML の 2 タイプがあります。
NLS ジョイントマッチング (NLSJM) は、可変的なジョイントの組み合わせに対応できる、分析的で確立されたプロセスです。一方、ML (MLJM) は当社のデータベースをもとに訓練された、実験的なデータ駆動型の機械学習手法です。
ML ジョイント マッチング (MLJM) は、比較的標準的なプロポーションの人間に対しては、1 回のパスで高速にしかも良好に動作します。 ただし、ターゲットのメッシュが通常の人間の形態から逸脱している場合は、品質が低下します。 実行して結果をざっと確認する目的で「とりあえず試してみる」には、便利な手段となることがよくあります。
MLJM を実行した後でも、MLJM では位置調整されないジョイント (たとえば頭の回転に関連するもの) に対応するために、NLS のプリセットをいくつか実行したほうがよい場合があります。 さらに詳しい情報については、該当する既知の問題を参照してください。
一方、NLSJM は特定のジョイント セットに対して複数回のパスで処理を行います。
NLS ジョイント マッチング
NLSJM は「パス」単位で実行されます。 パスとは、アルゴリズムが実行されるジョイントのセットを指し、位置を変更することができます。 各パスでは、表情を表すメッシュ内のボリュームに基づいて、ジョイントの位置を調整します。私たちは、特に効果的だったパスの組み合わせをプリセットとしてまとめ、順番に名前を付けて提供しています。これにより、使いやすさが向上し作業のガイドも提供されます。
ジョイント マッチングのパスを実行する手順は非常にシンプルで、任意のパスを選択し、[Run (実行)] ボタンをクリックするだけです。
プリセットの選択が影響するのは NLSJM のみであり、MLJM には反映されません。
ジョイント マッチングは手動の修正と組み合わせて行うことができます。次の「編集の推奨事項」セクションで、具体的で効果的な手順を紹介します。
プリセットの実行には、プリセットとその中のジョイントの数にもよりますが、数秒から数分かかります。
MLJM を実行した場合でも、いくつかの NLSJM パスは常に実行する価値があり、必要とされます (詳しくは MLJM セクションの推奨事項を参照してください)。
ML ジョイント マッチング
MLJM は実験的機能の 1 つです。
MLJM は、当社のデータベース (MetaHuman Creator が使用しているのと同じデータベース) にあるキャラクターで学習された機械学習ジョイント配置システムです。
(表情編集ツールバーに表示されているように) 個別の表情に対して実行することも、グラフ内の大半の表情に対して一括で実行することも可能です。
ML ジョイント マッチング ジョイント除外
Expression Editor では、MLJM が以下のジョイントに影響を与えることを明示的に制限しています。
|
|
|
これは通常、エンドユーザーにとっては関係ありませんが、ライブラリを直接使用し、Expression Editor 固有の実装を無視する場合には考慮すべき点です。
MLJM は一部の表現 (上記リスト参照) には影響しないため、それらに効果のある NLSJM のパスをいくつか実行する必要があります。
DNA の更新
メモリ内にある DNA は、シーンの内容によって上書きされます。
シーンが更新されないジョイント マッチングとこの更新を組み合わせるときは注意してください。
ジョイント マッチングを実行した後は、表情の編集を開始する前や再開する前に、必ず DNA を再読み込みすることを推奨します。
このコマンドを実行すると、シーン上の表情やメッシュ、ジョイントの状態が分析され、それらはメモリ内の DNA に書き直されます。 一時ファイルが保存されますが、それを利用することは推奨しません。保存は右隣の別のコマンドで行います。
DNA の保存
メモリ上に存在する DNA の状態をファイルに保存します。 この操作では、他の計算は行われません。保存したいすべての変更がメモリ上の DNA に反映されているかどうかはユーザー自身で確認してください。
ワークフローや各段階でのエフェクトを十分に理解するまでは、DNA ファイルを保存した後に再読み込みしてから次の操作を行うことを推奨します。
次の内容
データの保存とエクスポート
修正した MetaHuman ヘッドの DNA を MetaHuman Creator と Unreal Engine で利用できるように準備します。