FBX アセット メタデータ パイプライン

カスタム ユーザ定義属性について、 FBX を介して Unreal に取得する方法と、ブループリントと Python を使用して、Unreal Editor でカスタム ユーザ定義属性を操作する方法について説明します。

リアルタイムな 3D プロダクションのサイズと複雑さは増大しており、また、現代のプロダクション パイプラインを成すツールの数も増え続けています。そのため、インテリジェントな自動化を導入しユーザーの効率性を向上することは、ますます重要となっています。そして、パイプライン インテリジェンスに基づくワークフローの構築は、通常、メタデータに大きく依存します。メタデータには、プロジェクト内で意味を持つアセットに関するカスタム定義のプロパティといったようなものが挙げられます。

アーティストあるいはクリエーターはアセットが最初に作成される 1 つのアプリケーションにメタデータ プロパティを追加します。そのとき、メタデータはそのアセットに関連付けられたままです。そして、パイプラインのもっと下にあるアプリケーションは、そのメタデータを読み取って、その関連付けられたアセットをどう処理するか、またはどう扱うかについての意思決定のために使用することができます。

Unreal Editor では、アセット メタデータ のページで説明されているように、ブループリントまたは Python のスクリプトを使用して、アセットのメタデータ キーと値を設定したり取得することができます。これは、Unreal Project のコンテキスト内でのみ実行されるアセット管理操作で役に立ちます。

しかし、アセットに関するメタデータを持つことの本当の価値は、通常、外部アプリケーションとの相互運用性と、複数のアプリケーションにまたがった、より大きなアセット管理パイプラインを作成ができることにあります。このために、Unreal FBX インポーターは、FBX ファイルから特定の種類のアセット メタデータを取得し、そのメタデータをUnreal Editor 内で使用します。

このメタデータはプロジェクトのアセットに割り当てられているため、ランタイムのゲームプレイ コードで直接アクセスすることはできません。これは、主にUnreal Editor でのアセット管理操作のスクリプティングを目的として使用されます。

メタデータ ソース

FBX ファイルを Unreal にインポートすると、インポーターはそのファイル内のオブジェクトにアタッチされた「FbxProperty」値を読み込み、辞書またはタグ値のペアのマップとして、作成した Unreal アセットにアタッチします。

以下のアプリケーションは、この FbxProperty システムを使用し、カスタム ユーザ定義メタデータを持つ FBX ファイルをエクスポートをサポートすることが知られています。

Autodesk Maya

Maya でアセットのメタデータを作成するには、オブジェクトにカスタムの追加アトリビュートを追加します。その方法の詳細については、Maya ヘルプを参照してください。

カスタムアトリビュートは Maya の Attribute Editor のオブジェクトの、Extra Attributes リストに表示されます。たとえば、このオブジェクトでは、2 つのカスタムアトリビュートが 1 つの文字列プロパティと、1 つの数値プロパティとして次のように作成されています。

Maya カスタムアトリビュートのメタデータ

Autodesk 3ds Max

3ds Max でアセットのメタデータを作成するには、メタデータを [Object Properties] ダイアログの [User Defined (ユーザー定義)] タブに追加します。

3ds Max のメタデータ ユーザー定義プロパティ

現在、3ds Max のメタデータは、「FBX.UDP3DSMAX」メタデータ タグでアクセスできる [User Defined] テキストボックスの内にある全ての内容を含む、単一の文字列としてインポートされます。そのため、Unreal Editor の Python またはブループリント スクリプトでこの文字列の値を読む際は、この文字列を自分で分割する必要があります。

3ds Max metadata in Unreal

ンポート後のメタデータ

アセット メタデータが、Unrealにどのように表示されるかについて、知っておくべきことがいくつかあります。

  • すべてのメタデータのキーと値は、外部アプリケーションで設定された元のタイプに関係なく、Unreal エンジンでは文字列として保存されます。たとえば、Maya のメタデータ値を「22」のような「数値」として設定した場合でも、Unreal 内のスクリプトでその値を読み取ると、「22」という文字列になります。値を数値として扱いたい場合は、 [Utilities> String > String to String][String to Float] などブループリントの変換ノードを使用するか、「int()」 や「 float()」など、文字列をパースする Python のビルトイン関数を使用します。

  • ソース アプリケーションでスペースを含むタグ名を作成すると、そのスペースは FBX によって削除されます。

  • 通常、タグ名には、値のソースを示すプレフィックスが付いています。FBX 経由でインポートされたアセットの場合、このプレフィックスは FBX. です。他のアプリケーションやプラグインは、異なるプレフィックスを使用することがあります。たとえば、Unreal エンジン Shotgun 統合では、プレフィックス SG. が使用されます。

  • スケルタルメッシュを使う場合、スケルトンのそれぞれ別のボーンに異なるメタデータ値を割り当てることができる場合があります。この場合、FBX インポート プロセスは引き続きすべてのメタデータ値を Skeltal Mesh アセットに割り当てますが、メタデータ タグ名のプレフィックスにはボーン名が含まれるのでそれぞれのボーンに適用する値を区別することができます。たとえば、スケルタルメッシュ上に FBX.Right_Arm.tag_nameFBX.Right_Hand.tag_name と似たタグが表示される場合があります。

たとえば、Maya で「Created By」という名前で作成されたタグは Unreal では  「FBX.CreatedBy」という名前で使用します。

Unreal Editor にインポートされたメタデータを使用する方法については、「アセット メタデータ」を参照してください。

Unreal Engine のドキュメントを改善するために協力をお願いします!どのような改善を望んでいるかご意見をお聞かせください。
調査に参加する
キャンセル