会話型アバターは、稼働中のサービスからではなく、信頼できるキャラクターアセットから始まります。音声と表情アニメーションを接続する前に、完全なキャラクター、正しく再構築されたマテリアル、そしてレンダラーが実際に駆動できる表情モーフターゲットが必要です。 [1] [2]
投稿者:
本ガイドの範囲: Character Creator 5(CC5)アバターの準備、クリーンなFBX/JSONエクスポート、Unreal Engine 5.5.4へのReallusion Auto Setup 2.02のインポート、そしてアセットレベルでの52モーフターゲットの検証。
後続工程に関する注記: Tokkio ACEマイクロサービス、ライブ音声ストリーミング、C++ランタイムレンダラーの実装については、別の続編記事で取り上げます。

1. 開始前に成果物を定義する
準備パイプラインは、アセット作成からランタイムへの引き渡しまで、厳格なチェックポイントに従います。各移行段階は個別に検証する必要があります。
CC5上で見た目の良いキャラクターであっても、エクスポートされたテクスチャが正しく解決されることを証明するものではなく、Unrealのビューポートがきれいに表示されていても、表情アニメーションターゲットが正しくインポートされたことを証明するものではありません。
本記事において「統合準備完了」とは、完全なキャラクターがエクスポート、インポート、保存、再度開かれ、後続のマッピングで期待される表情ターゲットが確認された状態を意味します。Tokkioがデプロイされたことや、音声駆動アニメーションが検証されたことを意味するものではありません。
2. 互換性のあるツールチェーンについて合意する
本実装ワークフローでは、 「Unreal Engine」 をベースラインとして使用し、Unreal Engine 5.5を対象としたACEパッケージに合わせています。これはバージョン固有のベースラインであり、現行のCC5、Unreal、ACEの各リリースを任意に組み合わせることを推奨するものではありません。本番用アセットを作成する前に、統合担当者とエンジンバージョンを確認してください。
アバター制作のためには、CC5、統合担当者と合意したUnreal Engineのインストール、そしてエンジンと互換性のあるReallusion Auto Setupパッケージを準備します。ZIPファイル名を頼りにするのではなく、インストールされたリリースに同梱されているプラグイン記述子とドキュメントを確認してください。異なるUnrealマイナーバージョン向けにビルドされたプラグインバイナリを混在させないでください。 [2] [6]
正確なCC5のバージョン、Unrealのバージョン、Auto Setupのバージョン、エクスポート先ディレクトリ、Unrealプロジェクトのパス、スケルタルメッシュアセットのパス、そして想定する表情プロファイルを記録してください。例えば、本パイプラインではReallusion Auto Setup 2.02を検証済みですが、互換性についてはインストールされている正確なプラグインバージョンを確認してください。ACEレンダラープラグインおよびビルド/デプロイのツールチェーンは次の段階に属しますが、後で別のエンジンバージョンへの再インポートを避けるため、互換性に関する制約は今のうちに合意しておくべきです。
3. CC5で完全なキャラクターを準備する
エクスポート前にキャラクターの外見を確定させ、コンポーネントツリーを確認します。ベースボディのみをエクスポートすると、一見成功したように見えるインポートになりながら、重要なレンダリング対象パーツが欠落することがあります。キャラクターにメッシュとスケルトン、衣装と必要なマテリアル、目、歯、舌、涙腺、まつ毛が含まれていることを確認してください。これらのパーツはニュートラルポーズでまとめて確認します。
表情プロファイルは特に重要です。 拡張/ARKit互換の表情プロファイル を表情付きで使用してください。Character Creatorでは、 「Modify」 パネル > 「Motion」 > 「Facial Profile Editor」 に移動し、Expressionノードが明示的に 「CC4 Extended」と表示されていることを確認してください。次の表情プロファイルは選択しないでください: 「None」 または、ARKitレベルの微細な表情を省略した標準プロファイル。キャラクターは完璧にレンダリングされていても、発話やまばたき、微妙な感情表現に必要な形状変化が欠けている場合があります。 [3]

変更する別個に検証された理由がない限り、本リファレンスワークフローでは元のトポロジーを維持してください。トポロジーや表情プロファイルの変更は、モーフカバレッジの再チェックを引き起こすべきです。また、エクスポートに現在のポーズを含めるか、ボディアニメーションを別途提供するかを決定してください。この判断を暗黙のままにしないでください。 [4]
4. 完全なFBXバンドルをエクスポートする
CC5で、 「File → Export → FBX → Clothed Character」 と Unreal Engine プリセットを選択します。具体的には、対象ツールのプリセットを 「Unreal (UE5 Skeleton)」に設定してください。ベースの基準ポーズが 「A-Pose」 (またはUE5マネキンに対応するバインドポーズ)に設定されていることを確認してください。完全なキャラクターを含め、必要な表情モーフを有効にし、テクスチャとReallusionのJSONサイドカーの両方をエクスポートします。 「Embed Textures」 を無効のままにし、 「Export JSON for Auto Material Setup」 が詳細設定で有効になっていることを確認してください。 「InstaLOD / Remesher」 は無効のままにしてください。エクスポート時にメッシュトポロジーを変更すると、モーフの頂点IDが乱れ、表情ターゲットが正しく変形しなかったり、インポート時に失敗したりする可能性があります。 [4] [5]

JSONサイドカーはアセットの一部であり、任意の付随ファイルではありません。Reallusion Auto Setupは、付属のメタデータを使用して意図したマテリアル設定を再構築します。対応するFBXと同じ場所に保持し、エクスポート時に生成された相対テクスチャパスを保持してください。 [4] [5]

このレイアウトは、Reallusionの標準的な外部エクスポート構造を反映しています。 「Embed Textures」 が無効の場合、Character Creatorはテクスチャを自動的に2つの場所に分割します。 「CharacterName.fbm/」 フォルダにはベースカラー(ディフューズ)とノーマルマップが格納され、対となる 「textures/」 フォルダにはラフネス、メタリック、オパシティ、アンビエントオクルージョンマップが格納されます。JSONサイドカーは、これらすべての相対パスをUnreal向けにマッピングします。重要な確認事項は、FBXが空でないこと、JSONが一致するベース名を持ち正常にパースできること、そしてJSONが参照するすべてのテクスチャが解決されたパスに存在することです。転送時には、 「.fbm」 and 「textures/」 の両ディレクトリを、FBXおよびJSONと同じ場所に保持してください。 [5]
ファイルパス、バイトサイズ、タイムスタンプ、そして上記のチェック結果を含む簡単なエクスポート記録を残してください。インポート前に、エクスポートバンドル内の欠落ファイルや壊れた参照を修正してください。FBXのみを別のマシンにコピーすることは、完全な引き渡しにはなりません。
5. UnrealとReallusion Auto Setupを準備する
合意したUnrealバージョンを使用して、プロジェクトを新規作成または選択します。完全なリファレンス実装では、後にプロジェクト所有のランタイムアクターのためにC++プロジェクトを使用します。本記事のアセット準備段階では、そのアクターを実装する必要はありませんが、意図したプロジェクトで作業することで、不要な移行を避けられます。安定したコンテンツの配置場所とスケルタルメッシュアセット名について、統合担当者と合意してください。
そのパッケージに同梱されたガイドに従って、Reallusion Auto Setupをインストールします。 Content サブツリーと 「RLPlugin」 のディレクトリ構造を維持し、ベンダーフォルダをフラット化したりリネームしたりしないでください。リファレンスプロジェクトには 「Plugins/RLPlugin/RLPlugin.uplugin」が含まれ、さらに 「Content/CC_Shaders/」 and 「Content/SSSProfile/」が含まれています。これらは参考パスとして扱い、インストールしたパッケージのレイアウトが異なる場合は、そのパッケージの指示に従ってください。 [6]
プラグインを有効化し、関連するプラグインの読み込みエラーや互換性エラーなしでエディタが起動することを確認してください。プラグインがフォルダ内に存在するだけでは不十分です。そのインポート動作を信頼する前に、Unrealが正しいビルドを読み込んでいる必要があります。

6. マテリアルとモーフを含めてキャラクターをインポートする
エクスポートしたFBXと、その隣に対応するJSONを置いた状態で、Reallusion Auto Setupのインポートワークフローを使用します。対応するJSONはFBXと並んで自動検出されます。Auto Setupは有効のままにし、インストール済みのリリースに適したキャラクターとシェーダーオプションを選択してください。本ガイドのリファレンスUIではHQ Shaderを使用しています。単純なFBXのみのインポートを、メタデータ駆動のワークフローと同等に扱わないでください。 [7]

ここで説明している表情アセットの準備には、Control Rigは不要です。プロジェクトがそのボディ制作ワークフローも必要としない限り、無効のままにしてください。UnrealのFBXインポートオプションが表示されたら、スケルタルメッシュとメッシュインポートの設定を確認し、適切なスケルトンコンテキストを選択し、明示的に 「Import Morph Targets」 を有効にしてから、 「Import All」. [7] [8]

マテリアルを判断する前に、アセット処理とシェーダーコンパイルが完了するのを待ってください。その後、スケルタルメッシュ、スケルトン、フィジックスアセット、マテリアルとマテリアルインスタンス、テクスチャ、サブサーフェススキャタリングプロファイル、そしてインストール済みのAuto Setupバージョンが生成した表情/プロファイル関連アセットを確認してください。インポートしたすべてのパッケージを保存してください。 [7]

スケルタルメッシュを再度開き、モーフターゲットのリストを確認してください。リストに項目があることは有用な最初の確認になりますが、総数が多いことは互換性の証明にはなりません。例えば、テストしたキャラクターリグでは249個のモーフが生成されましたが、他のキャラクターでは総数が異なる場合があります。重要なのは、統合に必要な特定のターゲットが存在するかどうかです。

7. 表情アニメーションの契約を検証する
ランタイムコードは本記事の範囲外ですが、アセットは後続の表情マッピングを満たす必要があります。本記事のダイレクトモーフマッピングパイプラインでは、 52個のACE表情入力が54個のCC5ターゲット書き込みにマッピングされます50個の入力はそれぞれ1つのターゲットにマッピングされ、2つの入力(眉頭上げと頬膨らまし)は左右一対のバイラテラルターゲットを駆動します。
2つの異なる統合アプローチ: NVIDIAが公開しているUnreal Renderer 0.1ガイドでは、52フレームのARKitアニメーション、Pose Asset、Animation Blueprintを使用する方法が説明されています。本パイプラインでは、プロジェクト所有のC++コードを使用して、CC5のモーフターゲットを毎フレーム直接適用します。以下の52入力/54書き込みの表は、このダイレクトモーフマッピングを反映したものです。追加のアニメーションアセットを準備する前に、統合担当者と想定するアプローチについて合意してください。ランタイムの実装は本記事の範囲外です。 [2]
| ACE入力とインデックス | 必要なCC5ターゲット | マッピングタイプ |
|---|---|---|
EyeBlinkLeft / 0 |
Eye_Blink_L |
1対1直接 |
EyeBlinkRight / 7 |
Eye_Blink_R |
1対1直接 |
JawOpen / 17 |
Jaw_Open |
1対1直接 |
MouthSmileLeft / 23 |
Mouth_Smile_L |
1対1直接 |
MouthSmileRight / 24 |
Mouth_Smile_R |
1対1直接 |
BrowInnerUp / 43 |
Brow_Raise_Inner_L + Brow_Raise_Inner_R |
バイラテラルペア(1対2) |
CheekPuff / 46 |
Cheek_Puff_L + Cheek_Puff_R |
バイラテラルペア(1対2) |
TongueOut / 51 |
Tongue_Out |
1対1直接 |
この表はレビュー用のサンプルであり、完全なマッピングではありません。インポートしたメッシュに対して、完全な52入力マッピングのすべての項目を検証してください。引き渡しでは、文書化された表記、大文字小文字、入力の順序を保持してください。特に、目の内側/外側の視線方向は各目に対して相対的です。リファレンスでは EyeLookInLeft to Eye_L_Look_R, また EyeLookInRight to Eye_R_Look_Lにマッピングします。これらの名称を、画面上の見た目の方向に基づいて「修正」しないでください。
アセットレベルの視覚チェックを行うには、Unreal EngineでインポートしたスケルタルメッシュをダブルクリックしてPersonaメッシュエディタを開き、 「Morph Target Previewer」 タブを見つけます(非表示の場合は 「Window → Morph Target Previewer」 からアクセス可能)。ウェイトスライダーを 0.0 to 1.0 から、代表的なモーフ(左右のまばたき、顎の開き、笑顔、眉頭の対、頬膨らまし、舌の動き)についてドラッグします。ジオメトリがきれいに変形すること、正しい解剖学的側が反転せずに反応すること、歯、舌、涙腺が視覚的に損なわれていないことを確認してください。保存前に、すべてのスライダーを 0.0 に戻し、ニュートラルな安静時の表情に戻してください。この手動プレビューは変形の確認であり、ACEやTokkioのストリームが正常に動作する証拠ではありません。 [8]
完全なリファレンスマッピングについて、必要なターゲットの欠落がないことを示す、ターゲットごとのカバレッジレポートを作成してください。ターゲットが存在しない場合は、まずCC5の表情プロファイル、表情のエクスポート、UnrealのImport Morph Targets設定を再確認してください。レポートを通すために、ターゲットを黙ってリネームしたりスキップしたりしないでください。
8. インポートダイアログだけでなく、保存されたアバターをレビューする
適切なライティングと正面からのビューで、Unreal内のニュートラルなキャラクターを確認してください。肌、目、まつ毛、衣装、髪(存在する場合)を確認し、テクスチャの欠落や意図しないマテリアルの割り当てがないか確認します。プロジェクトアセットを保存し、再度開いてインポート状態が保持されていることを確認してください。実際にインポートされたキャラクターのスクリーンショットを保存し、そのアセットパスを記録してください。
このキャラクターに影響するエラーと、無関係なプロジェクトの警告を区別してください。CC5マテリアルが参照する欠落テクスチャや、必要なモーフの欠落はブロッキングな問題です。未使用のサンプルアセットに関する警告は無関係な場合がありますが、無差別に無視するのではなく、分類すべきです。
9. よくある問題とその修正箇所
| 症状 | 確認と修正の手順 |
|---|---|
| エクスポートが空、または0バイトに見える | エクスポートフォルダのファイルサイズを確認し、隣接する 「.fbm」 ディレクトリを確認してください。主要なFBXや必要なマテリアル定義が欠落している場合は再エクスポートしてください。 |
| 転送後にテクスチャが欠落している | 対応するJSONと付随するテクスチャフォルダ構造の両方を復元してください(「CharacterName.fbm/」 + 「textures/」)。参照されているすべてのパスが解決することを確認してください。 |
| マテリアルが意図した設定と一致しない | Unreal Engineに互換性のあるAuto Setupがインストールされていることを確認し、 「RLPlugin」 が読み込まれていることを確認した上で、単純なFBXインポートではなくJSON補助付きのインポートダイアログを使用してください。 |
| キャラクターは表示されるが表情ターゲットが欠落している | CC5の 「CC4 Extended」 プロファイルを再確認し、表情モーフのエクスポートが選択されていたことを確認し、 「Import Morph Targets」 がUnrealのインポートオプションで有効になっていることを確認してください。 |
| モーフは多数存在するがカバレッジが失敗する | Persona内の実際のモーフターゲット名を、完全な52入力マッピング仕様と比較してください。総数だけでは合格の判定基準として有効ではありません。 |
| 表情が誤った側に影響する | 左右の解剖学的な命名と、目に対する相対的な視線方向を確認してください(例: EyeLookInLeft は Eye_L_Look_Rにマッピングされます)。影響を受けるターゲットを個別にプレビューしてください。 |
10. 再現可能なアバターパッケージを引き渡す
完全なFBX/JSON/テクスチャバンドルを、保存されたUnrealプロジェクトアセットおよびその依存関係とともに納品してください。ツールバージョン、プラグインの互換性、表情プロファイル、エクスポート設定、インポート設定、スケルタルメッシュのパス、そして完全なモーフカバレッジの結果を記載した簡単なマニフェストを含めてください。ニュートラルなUnrealのスクリーンショットを追加し、残存する制限事項があれば明示的に列挙してください。
この段階で、後続システムが利用可能なアバターアセットの定義と検証が完了しました。続編記事では、この保存されたUnrealアセットを使用して、完全なランタイム統合を実装します。

