カスタム ノード属性を FBX アニメーション シーケンス にインポートして、アニメーション データ駆動のさまざまな設定を作成できます。カーブ などの他のアニメーション データとは異なり、属性はシーケンスごとに格納されて、さまざまなプロパティ タイプをサポートします。
このドキュメントでは、Unreal Engine でアニメーション属性をインポートして参照する方法の概要を説明します。
前提条件
- Autodesk Maya のノードでの カスタム属性の作成 について慣れている。
- プロジェクトに スケルタル メッシュ が含まれている。
- アニメーション シーケンス のインポートに慣れている。
属性をインポートする
アニメーション属性のインポートをアニメーション シーケンスで始めるには、アニメーションを含む属性がボーンに含まれることを確認する必要があります。通常、これは Autodesk Maya などの DCC ソフトウェアで行われます。この例では、root Bone にカスタム浮動小数属性が含まれています。

現在、インポートがサポートされている属性データ タイプは、浮動小数 (Float)、整数 (Integer)、文字列 (String)、そして トランスフォーム (Transform) です。
[Project Settings (プロジェクト設定)] の設定
属性を正しくインポートするには、それらが [Project Settings (プロジェクト設定)] で定義されていることを確認する必要があります。Unreal Engine のメイン メニューから [Edit (編集)] > [Project Settings (プロジェクト設定)] に行き、[Engine (エンジン)] > [Animation (アニメーション)] セクションに含まれる [Custom Attributes (カスタム属性)] 設定を見つけます。以下の設定を使用できます。

名称 | 説明 |
---|---|
Bone Timecode Custom Attribute Name Settings (ボーン タイムコード カスタム属性名の設定) | タイムコード関連の一連のプロパティと、それらのカスタム属性へのデフォルト マッピングです。プロジェクトで異なる属性名を使用している場合は、これらの設定を変更して、異なるタイムコード属性にマッピングできます。
![]() これらはインポートする属性名のリストに含まれて、[Bone Custom Attributes Names (ボーン カスタム属性名)] 配列に追加されたかのように動作します。 |
Bone Custom Attributes Names (ボーン カスタム属性名) | アニメーションのインポート時に検索するカスタム属性名を定義する配列です。このリストで属性名を定義すると、スケルトンに含まれるすべてボーンでその属性が検索されます。 + (追加) アイコン をクリックして属性をリストに追加し、次のプロパティを設定します。
![]() |
Bone Names with Custom Attributes (カスタム属性を持つボーン名) | アニメーションのインポート時にカスタム属性をフィルタリングするボーンのリストを定義できる配列です。このリストでボーンを定義すると、アニメーションのインポート時に、そのボーンからのすべてのカスタム属性がインポートされます。 + (追加) アイコン をクリックしてアイテムをリストに追加し、ボーン名を定義します。 ![]() |
Attribute Blend Modes (属性ブレンド モード) | ブレンド時における特定の属性の動作を定義する配列です。この設定は、グローバルな [Default Attribute Blend Mode (デフォルトの属性ブレンド モード)] の設定を属性ごとに上書きするものです。 + (追加) アイコン をクリックしてアイテムをリストに追加し、属性名を定義してブレンド モードを設定します。
![]() |
Default Attribute Blend Mode (デフォルトの属性ブレンド モード) | すべてのカスタム属性に使用するデフォルトのブレンド モードです。[Attribute Blend Modes (属性ブレンド モード)] に似ており、[Override (オーバーライド)] または [Blend (ブレンド)] を選択できます。 |
Transform Attribute Names (トランスフォーム属性名) | トランスフォーム属性 のインポート時に検索するトランスフォーム ノードの名前です。 |
カスタム属性のインポート方法に応じて、[Bone Custom Attribute Names] または [Bone Names with Custom Attributes] のいずれかで値を設定します。例えば、root Bone で作成した 2 つのカスタム属性をインポートしたい場合は、次のいずれかを行います。
-
[Bone Custom Attributes Names] で 2 つの配列エントリを作成し、それらの名前を目的の属性と一致させます。
-
[Bone Names with Custom Attributes] で 1 つのエントリを作成し、その名前を「root」に設定します。
[Project Settings] でカスタム属性を設定したら、カスタム属性を含む アニメーション シーケンスをインポートできます。FBX をインポートする際は、[Import Custom Attribute (カスタム属性をインポート)] が有効になっていることを確認してください。

アニメーション シーケンス
カスタム属性を含むアニメーション シーケンスをインポートすると、その属性を アニメーション シーケンス エディタ で表示できるようになります。属性は、タイムライン の [Attributes (属性)] > ボーン名 > 属性名 にトラックとして表示されます。

マウス カーソルを属性名に合わせると、タイプやキーフレーム数など、その属性の詳細が表示されます。

トランスフォーム属性
カスタム トランスフォーム属性 もインポートすることができますが、インポートには異なるワークフローが必要になります。トランスフォーム属性は、追加の ソケット やボーンを加えることなく、アニメーション シーケンス内に補助的なトランスフォーム情報を提供する際に便利です。

FBX 設定
ボーンにはすでに基本的なトランスフォーム属性が含まれているため、代わりに、カスタム属性の適用先となるボーンの子ノードを作成する必要があります。これは、ロケーター または空白の ノード になります。
この例では、「MyTransformAttribute」という名前の ロケーター が hand ボーン の子に設定されています。これは、他のノードや属性と同様に、任意の方法でキーフレーム化することができます。

設定とインポート
次に、[Project Settings] の [Custom Attributes] でトランスフォーム属性の名前を定義する必要があります。[Transform Attribute Names] を見つけて + (追加) アイコン をクリックし、アイテムを作成して、トランスフォーム属性ノードの名前を追加します。

これで、カスタム トランスフォーム属性を含む アニメーション シーケンスをインポートできます。インポートが完了すると、トランスフォーム属性が タイムライン の [Attributes] > ボーン名 > 属性名 にトラックとして表示されます。

ビューポート メニューの [Character (キャラクター)] > [Bones (ボーン)] をクリックして [Attributes (属性)] を有効にすることで、アニメーション シーケンス ビューポートでカスタム トランスフォーム属性を視覚化することができます。

属性を参照する
属性は、スケルタル メッシュ コンポーネント をターゲットとする Get Attribute 関数を使用することで、ブループリント で参照して読み取ることができます。次の関数を使用できます。
- Get Float Attribute
- Get String Attribute
- Get Integer Attribute
- Get Transform Attribute

これらの関数には、次の共通ピン情報が含まれます。
名称 | 説明 |
---|---|
Target | ターゲットとする スケルタル メッシュ コンポーネント。 |
Bone Name | カスタム属性を含むボーンの名前。 |
Attribute Name | 検索するカスタム属性の名前。 |
Default Value | 属性が見つからない場合は、この値が Out Value (値を出力) に送信されます。 |
Lookup Type | スケルトンでの属性の検索方法を指定します。次のオプションがあります。以下の選択肢があります。
|
Out Value | 属性の値を渡すか、属性が見つからない場合は Default Value (デフォルト値) を渡します。 |
Return Value | この関数の実行時に属性が見つかった場合は true を出力し、それ以外の場合は false を出力します。 |
Get Attribute Ref
Get Attribute Ref 関数を使用することもできます。これらの関数は、Out Value に接続された 変数 を必要とします。これにより、このピンにリンクした変数に値が書き込まれます。Get Attribute 関数とは異なり、属性が見つからなかった場合、Get Attribute Ref では属性の最後の値を維持します。
