ゲーム リグ(ボーン)を書き出す

 
 
 

Face Robot で頭の解析、調整、キャリブレート、アニメートが終了したら、ゲームのエクスポート ツールを使用してゲーム エンジンに書き出すことができます。このツールによってエンベロープおよびボーンをモデル ファイル(.emdl)に書き出します。

ゲームのエクスポート ツールを使用するには、Face Robot の頭モデルが完成した高解像度メッシュである必要があります。このメッシュではジオメトリにしわやひだがすべて組み込まれていること、そのアニメーションを完了していることを確認してください。また、マテリアルがメッシュ上のクラスタではなく頭のメッシュに適用されていることも確認してください。

書き出されるゲーム リグの質は、最初に取り込んだものと同じになります。作成するゲーム モデルでは、パフォーマンスのリアルタイム再生ができ、ゲーム エンジンに取り込む準備ができます。

(左)Face Robot で作成したオリジナルの高解像度の頭

(右)ゲームに書き出す低解像度の頭の複製

ゲームのエクスポート ワークフローの概要

基本的なゲームのエクスポート ワークフローには、次の手順があります。詳細については、実行する内容に応じたセクションを参照してください。

  1. 書き出す Face Robot の頭のゲーム用バージョンを作成します。「ゲーム メッシュ、パーツ、UV を選択する」を参照してください。

  2. ゲーム メッシュおよびオリジナルの Face Robot メッシュをニュートラルまたは基本の状態で同じ物理空間で位置合わせします。「ゲーム メッシュ、パーツ、UV を選択する」を参照してください。

  3. [Act(アクト)]パネルの[読み込み/書き出し]タブをクリックし(「高速再生キャッシュ ファイルを保存およびロードする」を参照)、[ゲームのエクスポート - プロットしたボーン](Game Export - Plotted Bones)オプションを選択します。[Game Export(ゲームのエクスポート)]プロパティ エディタが開きます。

  4. [Game Export(ゲームのエクスポート)]プロパティ エディタの[メッシュ](Mesh)ページで、書き出すゲーム メッシュとそのパーツ、さらにオーバーラップしない UV セットを選択します。「エンベロープのボーン ロケータにペイントする」を参照してください。

  5. [エンベロープ](Envelope)ページで、顔のボーン ロケータをペイントし、その他のエンベロープ オプションを設定します。「[エンベロープタイムラインの再サンプリング]オプション」を参照してください。

  6. 睫毛の作成ツールを使用して睫毛のリグを構築した場合は、ゲームのリグに転送して書き出すことができます。「睫毛リグを転送する」を参照してください。

  7. アニメーション付きのエンベロープを書き出してから、問題がないか確認します。必要に応じて、エンベロープに戻って問題を解決します。

    ヒント:もう一度やり直すには、エンベロープ オペレータをゲーム メッシュから削除し、作成されたゲーム モデルを削除します。
  8. [法線](Normals)ページで、顔の静止法線マップとストレス法線マップを生成します。「マスクを生成する」を参照してください。

  9. [マスク](Masks)ページで、書き出す法線マスクを生成します。「リアルタイム シェーダを作成する」を参照してください。

  10. [シェーダ](Shaders)ページで、リアルタイム シェーダを作成し、書き出すゲーム メッシュに適用します。「リアルタイム シェーダを作成する」を参照してください。

  11. フリップブックを作成して、全体の概要を参照します。

  12. すべて終了したら、GameExport モデルを .emdl ファイルとして書き出します。

ゲーム メッシュを作成および準備する

ゲームのエクスポートを使用するには、Face Robot のオリジナルの頭モデルが完成した高解像度メッシュである必要があります。このメッシュではジオメトリにしわやひだがすべて組み込まれていること、そのアニメーションを完了していることを確認してください。

また、マテリアルがメッシュ上のクラスタではなく頭のメッシュに適用されていることも確認してください。

頭が完成したら、ゲーム用バージョンを作成して書き出す必要があります。

ゲーム メッシュを作成するには

  1. [Act(アクト)]パネルの[読み込み/書き出し]タブをクリックして、[ゲームのエクスポート](Game Export)オプションを選択します。[Game Export(ゲームのエクスポート)]プロパティ エディタが開きます。

  2. このプロパティ エディタの[メッシュ](Mesh)タブで、[複製の使用](Use Duplicate)ボタンをクリックしてオリジナルの Face Robot メッシュのコピーを作成します。コピーが自動的にゲーム メッシュとして選択されます。

  3. 次のいずれかを実行します。

    • ゲーム メッシュの頭をそのままにして、オリジナルの頭と同じ高解像度メッシュにします。最適化されたモデルで、完全な Face Robot ソルバは含まれないため、簡単に書き出すことができます。

      または

    • ゲーム メッシュ用にオリジナルの Face Robot の頭の低解像度バージョンを作成します。[ポリゴンリダクション]コマンドを使用できます。

      通常はこの方法を使用します。頭にポリゴンがほとんどない場合でも、品質を損なわずにオリジナルの頭からアニメーションを転送できます。さらに、元の頭にある細かいしわもすべてゲーム メッシュに維持されます。

メッシュの位置を合わせる

ゲーム メッシュを作成したら、オリジナルのFace Robotメッシュと同じ物理空間にニュートラルまたは基本の状態で位置合わせする必要があります。これは後のエンベロープの転送に影響するため、オリジナルとゲーム メッシュの位置を可能な限り近付ける必要があります。

  1. オリジナル メッシュはアニメートされているため、多少は動きます。したがって、頭の[アニメーション]コンストラクション ヒストリで、まずオペレータをミュートする必要があります。そうすると、ニュートラル ポーズに戻ります。

    注:オペレータおよびコンストラクション ヒストリについては、「オペレータ スタック」(「データ交換」)参照してください。
  2. ゲームメッシュのポイントを選択してから、[モデル]ツールバーの[デフォーム](Deform) [シュリンクラップ](Shrinkwrap)コマンドを使用して、オリジナルの頭に正確に一致するようにします。[最も近いサーフェイス](Closest Surface)オプションを使用します。完了したら、ShrinkWrap Operator をゲーム メッシュのオペレータ スタックから削除します。

  3. 完了したら、頭の[アニメーション]コンストラクション ヒストリのミュートを解除して、正しいアニメーション データを使用します。

オリジナルの高解像度の頭とゲーム メッシュを空間で位置合わせします。

ゲーム メッシュ、パーツ、UV を選択する

頭のメッシュの位置を合わせたら、書き出すメッシュ、つまりゲーム メッシュを選択する必要があります。

  1. [Game Export(ゲームのエクスポート)]プロパティ エディタの[メッシュ]ページで、[メッシュのピック](Pick Mesh)ボタンをクリックして書き出すゲーム メッシュを選択します。

    [複製の使用](Use Duplicate)ボタンをクリックしてオリジナルの Face Robot メッシュのコピーを作成した場合は、コピーがすでにゲーム メッシュとして選択されています。

    ヒント:[ディスプレイ]ページのボタンを使用して、簡単に表示/非表示を切り替え、オリジナルの Face Robot メッシュおよびゲームの書き出し用メッシュを選択します。
  2. [顔のパーツのコピー](Copy Face Parts)ボタンをクリックしてキャラクタの眼球、歯、舌の各メッシュをゲーム メッシュにコピーします。

  3. キャラクタに睫毛メッシュがある場合は、[睫毛](Eyelashes)オプションを選択してこのメッシュをゲーム メッシュにコピーします。

    また、ゲーム メッシュ用の UV のセットを選択するか、新しいセットを生成する必要があります。UV は可能な限り不連続性を少なくして、オーバーラップしないようにする必要があります。Face Robot メッシュと同じ UV を再利用する場合は、GATOR を使用して UV をゲーム メッシュに転送することができます。

    注:GATOR については、「属性の転送」を参照してください。
  4. 次のいずれかを実行します。

    • [メッシュ]ページで、[UVマップ](UV Map) [UVのピック](Pick UV)を選択します。Explorer が開き、ここで既存の UV セットを選択できます。

      または

    • [UVマップ](UV Map) [生成](Generate)をクリックして、[texcoords]という名前の新しいUVセットを角度によるグループ化に基づいて作成します。このセットは、ゲーム メッシュの頭のジオメトリ ノードの下か、Texture Editor([Alt]+[7]を押す)にあります。

エンベロープのボーン ロケータにペイントする

ロケータをペイントする目的は、ゲーム エンジンに書き出すボーンの位置を定義することです。これらのボーンによってエンベロープを変形します。

オリジナルの Face Robot メッシュにあるロケータをペイントしてから、エンベロープ ウェイトおよびアニメーションをゲーム メッシュに転送します。

口領域など、大きく変形する部分のアンカーの位置でロケータをペイントする必要があります。主なデフォーメーション部分はすべてボーンで覆われるようにします。

A

眉の内側

B

目の上部

C

目の下部

D

鼻筋

E

鼻の先端

F

鼻腔

G

ほうれい線

H

上唇(マーカー 3 つ)

I

口角

J

下唇(マーカー 3 つ)

K

L

顎骨

M

頬の膨らみ

N

頬骨

顔のデフォーメーションを、ボーンの数は最小にして、できる限り正確にキャプチャする必要があります(ゲームで使用されるボーンの数は通常最大で 30)。適切な位置にボーンを配置するには、試行錯誤で何回か繰り返す必要があります。

参照アニメーションまたはライブ アクション ビデオを常に参照して、顔のどの部分が一番よく動いているかを確認します。

  1. [Game Export(ゲームのエクスポート)]プロパティ エディタの[エンベロープ]ページで、[ロケーション](Locations)ボタンをクリックしてボーンのあるマップのペイントを開始します。

    または

    ロケータのウェイト マップがすでに作成されている場合は、[読み込み](Import)ボタンをクリックしてブラウザを開き、ウェイト マップを選択できます。

    ロケータのペイントに関するヒント](Tips for Painting Locators):

    • 一般的には、まず多めにボーンを配置してテストし、必要に応じてボーンの位置を調整および最適化します。

    • ボーンのフリッピングなどの問題を回避するには、ディテールの細かい部分にはペイントしないようにします。この問題が発生しないように、唇の部分の内側にはペイントしないようにします。

    • 口角には回転するポイントがある可能性があるため、この部分の外側にペイントします。

    • しわの内部のポイントは、ロケータのペイントではなく、シェーダで操作するのが最適です。

    • ボーンの回転を調整するには、[ボーンのスピン](Bone Spin)ボタンをクリックして各ロケータの回転を調整します。これにより、エンベロープのフィッティングの問題を回避します。

    • 現在のペイントしたボーンの数がビューポートの右上隅に表示されます(DisplayInfo セット)。作成できるボーンの最大数は、ほとんどのゲームで 30 です。

    ペイント ツールの詳細については、「ウェイト マップをペイントする」を参照してください。

    ボーンでエンベロープを変形する場所をペイントします。口など大きく変形する部分から開始します。

  2. フリップブックを作成して、ボーンのフリッピングなどの問題がないか確認します。その後、必要に応じてロケータをもう一度ペイントします。

  3. [階層](Hierarchy) [親の顎](Jaw Parent)ボタンをクリックして、顎のボーン(下顎)によって実行時に変形される顎の周辺の部分をペイントします。顎マップが作成されます。

    顎のボーンを適切にペイントすることによって、アニメーション クリップ間の補間の品質を向上できます。顎マップを作成しない場合は、顎はボーンの親になりません。

    [顎の親](Jaw Parent)ボタンをクリックすると、ペイント ブラシがアクティブになり、ゲーム メッシュが非表示になるため、オリジナルの高解像度メッシュにのみペイントできます。

    口の下半分および顎に簡単にペイントできるように、口が開いているフレームを選択する必要があります。

    顎と頭の他の部分とのエッジを滑らかにします。

    顎のボーンで変形される部分をペイントします。

  4. [階層](Hierarchy) [首の親](Neck Parent)ボタンをクリックし、首の周辺の部分をペイントして、首のボーンの子になっているスキンの部分を定義します。首の親マップが作成されます。

    首の親マップを作成しない場合は、首はボーンの親になりません。

    [首の親](Neck Parent)ボタンをクリックすると、ペイント ブラシがアクティブになり、ゲーム メッシュが非表示になるため、オリジナルの高解像度メッシュにのみペイントできます。

    首と頭のエッジを滑らかにします。

    首のボーンの子になる首の部分をペイントします。

エンベロープ オプションを設定する

オリジナルの高解像度メッシュでボーンを選択して顎および首のマップをペイントしたら、Face Robot によって低解像度メッシュに自動的にエンベロープ ウェイトが設定され、アニメーションが高解像度メッシュから転送されます。

  1. [Game Export(ゲームのエクスポート)]プロパティ エディタの[エンベロープ]タブで、[エンベロープの設定](Envelope Settings)グループのオプションを設定します。「エンベロープ」(「プロパティ リファレンス」)を参照してください。

  2. エクスポートする前に、[<駆動>エンベロープスムージング](<Driven> Envelope Smoothing)のオプションを使用して、目や口の周辺の難しい部分にあるエンベロープをスムーズにする必要があることもあります。

    <駆動> オプションは、エンベロープが生成された後に、手動で実行できる手順です。

  3. エンベロープのペイントと設定を終了したら、大きな[生成](Generate)ボタンをクリックしてすべての情報をゲーム メッシュに書き出します。

    エンベロープ ウェイトおよびアニメーションがオリジナルの高解像度メッシュから低解像度ゲーム メッシュに転送されます。

  4. アニメーションが転送されたら、低解像度メッシュ エンベロープのデフォーメーションが適切か確認します。

    タイムラインをスクラブするか、アニメーションのフリップブックを作成して低解像度メッシュにフリッピングの問題がないか確認します。フリッピングがある場合は、ロケータが適切に配置されていなかったということです。ロケータを削除するか、ロケータの新しい位置を選択して再度書き出します。

[エンベロープタイムラインの再サンプリング]オプション

[Game Export(ゲームエクスポート)]プロパティエディタの[エンベロープ]タブで[<生成時>エンベロープタイムラインの再サンプリング](<On Generation> Envelope Timeline Resampling)オプションを選択すると、[エンベロープタイムラインの再サンプリング設定]グループが表示されます。詳細については、「エンベロープ」を参照してください。

エンベロープが特定のアニメーションにフィットしない場合に、リサンプルを使用して品質を向上できます。このオプションは、書き出す対象にアニメーションが関連付けられている場合にのみ使用します。

[エンベロープタイムラインの再サンプリング]オプションは、タイムラインに沿ってフレームごと、ポイントごとに最善のエンベロープのセットを再構築して、結果の組み合わせをフィットすることによって機能します。書き出すゲーム メッシュを、Face Robot メッシュのウェイトの組み合わせに可能な限り近付けることができます。

睫毛リグを転送する

睫毛の作成ツール(「睫毛メッシュを作成する」を参照)を使用して睫毛メッシュ リグを作成した場合は、[Game Export(ゲームのエクスポート)]プロパティ エディタにあるオプションを使用して、書き出し用のゲーム リグに転送することができます。

  1. [メッシュ]タブで、[顔のパーツ](Face Parts)グループの[睫毛](Eyelashes)オプションを選択してから、[顔のパーツのコピー](Copy Face Parts)ボタンをクリックして、睫毛リグをゲーム リグに転送します。

  2. [エンベロープ]タブで、[エンベロープの生成](Envelope Generation)グループの[エンベロープ](Envelope)オプションを選択してすべてのエンベロープ設定を表示します。

  3. [<生成時>エンベロープタイムラインの再サンプリング](<On Generation> Envelope Timeline Resampling)オプションを選択して、[エンベロープタイムラインの再サンプリング設定]グループを表示します。

    • 大きな[生成](Generate)ボタンをクリックすると、睫毛メッシュが見つかった場合は、自動的に頭にエンベロープされ、アニメーションが転送されます。

    • ゲームのエクスポートを実行した後に睫毛をリグに追加した場合は、タブの下部にある[睫毛エンベロープの転送](Transfer Eyelash Envelope)ボタンをクリックして転送できます。

法線マップを生成する

Face Robot では自動的にストレス法線マップおよびストレスのない(静止)法線マップが生成され、ランタイム シェーダに接続します。これらのマップはサーフェイス ディテールをすべてオリジナルの高解像度 Face Robot メッシュから取得し、ゲーム メッシュに転送します。法線マップはエクスポートの外観をよくするために生成する必要があります。

最高の品質を実現するには、ストレスの影響を受けたメッシュも生成してから書き出し、任意のペイント プログラム(Autodesk Mudbox、ZBrush など)の一般的なモデリングおよびディテーリング機能を使用して、しわのビジュアル品質を調整します。その後 Face Robot に戻し、ストレス法線マップとして選択して顔の表情の適切な定義を作成します。

[Game Export(ゲームのエクスポート)]ダイアログボックスの[法線]ページで、生成するマップのオプションを選択します。詳細は「法線」を参照してください。

   

顔の静止法線マップが作成されます。

顔のストレス法線マップが作成されます。

ストレスの影響を受けたメッシュを作成する

最高の品質を実現するには、ストレスの影響を受けたメッシュを生成してから書き出し、Autodesk Mudbox や ZBrush といったペイント プログラムでディテールを加えることでしわのビジュアル品質を向上します。

その後、Face Robot に戻せば、ストレス法線マップとして使用し、顔の表情の適切な定義を作成できます。

  1. ストレスの影響を受けたメッシュを作成する前に、静止法線マップおよびストレス法線マップを生成する必要があります。

  2. [Game Export(ゲームのエクスポート)]ダイアログ ボックスの[法線]ページで、[ストレスの影響を受けたメッシュ](Stressed Mesh)オプションを選択し、ストレス マップを適用したゲーム メッシュを作成します。

  3. 選択したら、大きな[生成](Generate)ボタンをクリックして、ストレスの影響を受けたメッシュを生成します。

  4. ストレスの影響を受けたメッシュをペイント プログラムで開き、必要に応じてディテールを加えます。

  5. [法線]ページに戻って[カスタムストレスメッシュを使用](Use Custom Stress Mesh)を選択し、ストレス マップから生成された特定のメッシュを選択して使用します。選択しない場合は、現在のストレス マップが使用されます。

    (左)オリジナルの高解像度の静止状態の頭。

    (右)ストレス マップの結果を使用して作成された、ストレスの影響を受けたメッシュのバージョンのゲーム メッシュ。この男性の顔はかなり老けて見えます。

マスクを生成する

マスクはストレス法線マップと静止法線マップのブレンドを調整します。マスクは 1~3 セットの頂点カラー マップに自動的に設定され、それぞれのカラー チャンネルに 1 つのマスク(1 つの頂点カラーマップにつき 3 つのマスク)が含まれるため、領域マスクの数は 3、6、9 のいずれかになります。

マスクは顔の領域変形範囲(「領域変形範囲での作業」を参照)を統合して、ゲーム エンジン用の領域のセットを小さくします(最大 9)。マスク 1 つで変形範囲のグループを 1 つに相当するようにします。たとえば、額に 1 つ、左右の頬それぞれに 1 つのようにします。

  1. [マスク]ページで、[マスクを生成](Generate Masks)を選択してマスクを生成します。

  2. [マスクをアニメート](Animate Masks)オプションを選択してマスクにアニメーションを生成します。アニメーションによって、マスクのどの部分が適切なタイミングでオンまたはオフになり、ストレス法線マップを表示するかが決まります。

    [領域マスク]プロパティ セットにあるスライダを使い、領域のアニメーションをコントロールします(下の手順 6 を参照)。

  3. シェーダの[領域マスク](Region Masks)の生成に使用される顔の領域の数を、3、6、9 のいずれかに設定します。どのマスクも 1 度に 3 つの領域をコントロールできます。最高の結果を得るためには、領域数を 9 に設定し、下のように 3 つの領域マスクを作成します。

  4. マスクのオプションをすべて設定したら、大きな[生成](Generate)ボタンをクリックして、選択したマスクを生成します。

    Explorer でゲーム メッシュのクラスタの下にマスクとタンジェント オペレータが生成されていることを確認します。

    • [表示マップの切り替え](Toggle Display Map)ボタンを繰り返しクリックすると、ゲーム メッシュに作成されたマスクが順に表示されます。

    生成されたマスクはシェーダで使用されます。各マスクに、そのマスクによってコントロールされるデフォーメーション領域が 3 つ表示されます。

  5. 頂点カラー ツールを使用してマスクにペイントし、定義を追加または削除します。

    注:頂点カラーについては、「 頂点ペイントのワークフローの概要」(「シーン エレメント」)を参照してください。
  6. シェーダが適用されたら、[領域マスクのプロパティセット](Region Masks Pset)を選択して、スライダで操作します。これにより、アニメーションを誇張して法線マップの影響を調整できます。スライダのウェイトを個別にアニメートすることもできます。

リアルタイム シェーダを作成する

ゲームのリアルタイム シェーダを作成してテクスチャを追加できます。このシェーダはゲーム メッシュの頭のマテリアル ノードに適用されます。

ゲーム メッシュの頭のリアルタイム シェーダを作成するには

  1. [Game Export(ゲームのエクスポート)]プロパティ エディタの[シェーダ]タブで、作成するリアルタイム シェーダの種類(CgFX、HLSL、カスタム OGL)を選択し、[テクスチャスタック]にテクスチャを追加します。各オプションについては「シェーダ」(「プロパティ リファレンス」)を参照してください。

  2. [シェーダ]タブの下部にある[適用](Apply)ボタンをクリックしてゲーム メッシュのマテリアル ノードにリアルタイム シェーダを適用します。指定したテクスチャがシェーダ上の該当するポートに接続されます。

  3. シェーダが適用されたら、[マスク]ページの[領域マスクのプロパティセット](Region Masks Pset)オプションを選択して、スライダで操作します。

    しわの強さが十分ではないか、表情が弱い場合は、シェーダを接続した後でより強力なエフェクトを作成できます。[マスク]ページで[領域マスクのプロパティセット](Region Masks Pset)ボタンをクリックして、設定を開きます。FCurve Editor でスライダの F カーブを編集できます。すべて選択して、エフェクト全体を強力にします。