このページでは、MetaHuman キャラクター アセットとやり取りするためのスクリプト処理サポートの概要について説明します。
Engine\Plugins\MetaHuman\MetaHumanCharacter\Content\Python\examples には、さまざまなタスクの API の使用方法の参考として使用できるサンプルスクリプトがあります。
スクリプト API は、MetaHuman キャラクター アセットとやり取りする Python コードを記述するときに最も便利に設計されていますが、エディタ ユーティリティ ブループリントからも同じ機能を使用できます。
MetaHuman キャラクター アセット
MetaHuman キャラクター アセットには、MetaHuman キャラクターに関するすべての情報が格納されています。 このアセットには、メイクアップ、目、スキンなど、直接編集できる複数のプロパティがあります。 キャラクターに設定できるすべてのプロパティのリストについては、test_set_character_properties.py を参照してください (編集するために開く必要はありません)。また、新しいキャラクター アセットの作成の例については、examples/example_create_asset.py を参照してください。
MetaHuman キャラクター エディタ サブシステム
MetaHuman キャラクター エディタ サブシステムは、面、本体の編集、テクスチャ ソースのダウンロード、自動リギングの実行に必要なインターフェースを提供します。 このサブシステムは、エディタが開いているキャラクターに対して編集を行うコードを記述する際にも必要です。 キャラクターをインタラクティブに編集でき、すべての変更は自動的にビューポートに反映されます。
次の表は、MetaHumanCharacterEditorSubsystem のキャラクター アセットでほとんどの編集を実行するのに必要な主な関数を示しています。
| 機能 | 説明 |
|---|---|
try_add_object_to_edit(character) | 編集対象の MetaHuman キャラクター アセットをロードしようとします。 このサブシステムは、キャラクターを編集するために必要なすべてのデータを作成し、追跡します。 キャラクターをサブシステムに登録する必要があるため、MetaHuman キャラクター アセット エディタを開くとこの関数も呼び出されることに注意してください。 |
remove_object_from_edit(character) | サブシステムからオブジェクトを削除します。 これは、サブシステムが保持しているキャラクター特有のデータに対して重要です。 MetaHuman キャラクター アセット エディタを閉じると、そのアセット エディタはサブシステムから除去されることに注意してください。 |
is_object_added_for_editing(character) | キャラクターがサブシステムに編集用として登録されているかどうかを確認します。 |
変更のコミット
MetaHuman Character オブジェクトで直接設定できるプロパティについては、キャラクターをサブシステムに登録する必要はありません。ただし、エディタで開いているキャラクターとやり取りする場合、コミット関数を使用しない限り、変更はビューポートに反映されません。
この実例については、examples/example_live_edit.py を参照してください。 このスクリプトを使用するには、コンテンツ ブラウザで MetaHuman キャラクター アセットを選択してから実行します。 このスクリプトはエディタを開き、translate_face_landmarks 関数を使用して面を編集し、その後 commit_face_state を呼び出します。 translate_face_landmarksはキャラクター アセット自体には変更を保存せず、プレビュー データのみを更新するため、これは重要です。 commit_face_state は変更をシリアル化します。
メイクアップや頭部・本体モデルを含むスキンの変更をビューポートに反映させるには、このパターンに従う必要があります。
テクスチャのダウンロードと自動リギング
このサブシステムは request_texture_sources および request_auto_rigging 関数を提供します。これらは、MetaHuman Cloud サービスを呼び出して、テクスチャと自動リギングをそれぞれダウンロードするのに使用できます。 どちらの関数も、構造体パラメータを受け取り、このパラメータによってリクエストをブロッキングにするか、進捗を報告するかどうかを指定できます。
既知の問題: 一度生成されたリグを削除できない。
コスチュームとグルームの設定
グルームおよびクロスは、MetaHumanPipelineSlotSelection オブジェクトを通じて汎用スロット システムを使用します。 プログラムでグルームとコスチュームを選択する方法の例については、examples/example_add_grooms.py または examples/example_add_clothing.py を参照してください。
この API では、キャラクターに適用される各ワードローブ アイテムのパラメータを設定することもできます。 さまざまなグルームとコスチュームのパラメータを編集する例については、test_set_character_instance_params.py を参照してください。 キャラクターのコレクションですべてのインスタンス パラメータを使用可能にする必要があるため、パラメータを編集する前に asset_for_preview を呼び出すことが重要です。
頭部の適合
ヘッドは適合ツールを使用して生成可能です。 ヘッドは DNA からのコンフォーム、テンプレートからのコンフォーム、そして頂点からのフィットをサポートしています。 詳細については、examples/example_conform_head.py を参照してください。
スカルプティング
頭と本体はどちらも API を使用して直接スカルプトできます。 面のスカルプティングは、各ランドマークのベクター位置を操作することで行うことができます。examples/example_sculpt_face.py を参照してください。 パラメトリック本体システムは、非常によく似た方法で操作することができます。UI の各スライダは、本体コンストレイントによって表され、アクティブ化し、ターゲット測定値をそれぞれに設定することができます。Examples/example_sculpt_body.py を参照してください。
アセンブリ
プロセスの最終段階は、キャラクターのアセンブルです。 API は、現在利用可能な各パイプライン (UE Cine、UE Optimized、UEFN、DCC) をサポートしています。 各パイプラインには、アセンブリ プロセスをカスタマイズするための追加パラメータがあります。 その例は examples/example_assembly.py にあります。