Language:
Page Info
Skill Level:
Engine Version:

スケルトン アセット

デジタル コンテンツ制作に慣れている場合は、既に「スケルトン」について理解しているかもしれません。 ほとんどの 3D アプリケーションでは、スケルトンはキャラクターのボーンやジョイントの定義に使用するデジタル階層フレームワークであり、いろんな意味で実際の生物学的骨格を模倣します。 UE4 では重要な違いは、Skeleton アセットはスケルタル メッシュ内部のボーン階層だけではなく、アニメーション データを関連付ける ためのものです。 Skeleton アセットはボーン (ジョイント) データをアニメーション トラックに関連付けることでアニメーションを操作します。

MayaSkeleton.png

SkeletonTree.png

Maya のスケルトンのサンプル

UE4 のスケルトン ツリーのサンプル

Skeleton アセットは主にスケルタルメッシュではなくアニメーション データを処理するためのものです。

Skeleton アセットでもうひとつ重要な面は、スケルタルメッシュが同じ Skeleton アセットを共有している場合 (とりあえず基本ルールを満たしている)、階層が厳密に一致しなくてもアニメーション データを共有できるということです。 スケルタルメッシュ間でひとつの Skeleton アセットをシェアすると、キャラクター間でアニメーションをアニメーションを共有したり、 Animation ブループリント 全体を、キャラクターのアニメーション ロジックを定義するために使用することができます。

アニメーションを操作する以外に、Skeleton アセットは以下を行います。

  • アニメーション リターゲット - 様々な比率でキャラクターのアニメーションを調整することができます。

  • ソケット の作成と保存 - キャラクターに物をアタッチすることができます。

  • AnimNotifies の保存 - 足音のサウンド、パーティクル システムのようなエフェクトをアニメーションに追加することができます。あるいは、他のコードをトリガーするカスタム イベントも追加することができます。

  • アニメーションのカーブ (マテリアル パラメータやモーフターゲットを操作するために使用可能) と スロット名 (キャラクターの Anim Montages を再生するために使用可能) を保存します。

UE4 のアニメーションの操作にまだ慣れておらず、Skeleton アセットについて深く理解するには、以下の Working with Skeletons のチュートリアル シリーズをご覧になることをお勧めします。

Skeleton アセットを作成する

Skeleton アセットの作成は主にスケルタルメッシュの インポート 中に行われます。 スケルタルメッシュをインポートする場合、FBX インポート オプション ウィンドウ内で、Skeleton フィールドを空にすると、インポート中のスケルタルメッシュに基づき Skeleton アセットが自動的に作成されます。

FBXImportOptionsWindow.png

スケルタルメッシュをインポート後、Skeleton アセットが作成されます。

ImportedSkeletalMesh.png

Skeleton アセットをダブルクリックすると スケルトン エディタ が開きます。

SkeletonEditor.png

アンリアル エンジンにスケルタルメッシュやアニメーションをインポートする度に、関連する Skeleton アセットが必要になります。 FBX インポート プロセス中に、スケルトンを作成する代わりに、既存の Skeleton アセットを使用することができます (とりあえず Skeleton アセットを共有するルールが満たされている)。 スケルトンの最初の比率は、スケルトンの作成元のスケルタルメッシュによって定義されています。アニメーションの リターゲット 時にこれを考慮することが重要です。

スケルトンを作成する - コンテキストメニュー

スケルタルメッシュのインポート プロセス中に Skeleton アセットを作成することが多い場合、右クリックのコンテキスト メニューを使って内部のメッシュからスケルトンを作成することもできます。 これにより、エンジン内の既存のメッシュを使って新規スケルトンを作成することができます。メッシュに別のスケルトンが関連付いていたら、それが新しいスケルトンに再リンクされ、アニメーションがあれば新しいスケルトンにリンクします。

contextmenu.png

Skeleton アセットを使用する

スケルタルメッシュの FBX インポート プロセス中に、Skeleton のドロップダウン メニューで Skeleton アセットを選択して、インポートしているメッシュに関連付けることができます。

FBXImportSelectSkeleton.png

Skeleton アセットを共有するルールに従っていれば、スケルタルメッシュがインポートされて、選択した Skeleton アセットが割り当てられます。

インポート中に選択した Skeleton アセットがインポートしているメッシュに比べて大幅に異なり、共有ルールに違反する場合は、エラー メッセージが表示されます。

FailedSkeleton.png

こうした場合、インポート中のスケルタルメッシュに対して新規 Skeleton アセットを作成する必要が生じます。

Skeleton アセットを共有するためのルール

Skeleton アセットの重要な機能は、単一の Skeleton アセットを複数のスケルタル メッシュで使用できることです。 特に良い点は、それぞれのボーン階層が同一である必要はないことです。ただし、それらは同じ一般構造を持つ必要があります。 最も重要なのは、あるスケルタルメッシュから別のスケルタルメッシュへのボーン階層は違反することはできません。 つまり、ボーンの名前と順序は一致しなければなりません。

123 という名前の 3 ボーンのリムを考えて見ましょう。

ExampleBoneHierarchy.png

同じ Skeleton アセットを使用するつもりの 2 つ目のスケルタル メッシュがあれば、これらのボーンは同じ名前を持ち、同じ順番に保つ必要がありますが、 階層の周辺にボーンを追加することができます (こうした追加のボーンを持たないキャラクターはこのデータを使用しません)。例えば、新規階層はこのように見えます。

PeripheralBones.png

両方のスケルタルメッシュが同じ Skeleton を使用するためには、階層の順序を変えたり、ボーンの名前を変えることはできません。例えば、これは有効ではありません。

ReorderedBones.png

この場合、2 つめのスケルタルメッシュは別のボーン階層を使用し、新しい Skeleton アセットを必要とします。

追加のリム

階層の周辺にあるボーンの追加は有効なので、追加部分のあるスケルタル メッシュ間で Skeleton アセットを簡単に再利用できます。例えば、異なるけれどもよく似ている 3 種類のキャラクター間でアニメーションを共有したいとします。基本的には全て同じボーン構造 (および同じボーン名) を持っています。ただし、以下のような重要な違いがあります。

  • 人間の男性 (この例では、これが基本のキャラクターとなります)

  • ポニーテール用のボーンをもつ人間の女性

  • 4 本の腕を持つ人型キャラクター

同じ Skeleton アセットをこれら全てのキャラクターに使用することができます。その結果、Skeleton アセットは 3 種類全てのタイプのジョイント階層情報を含むことになります。アニメーションは Skeleton アセットを使って、各ボーンに適用する回転を決定します。スケルタルメッシュは基本となるボーン階層が同じになるように作成されるので、 3 種類の間でアニメーションは完全に機能します。唯一の違いは、これらのキャラクターについている余分な腕やポニーテールを操作する特別なアニメーションが必要になるということです。

スケルタルメッシュに含まれないボーンのアニメーション データを受け取ると (例えば、ポニーテール アニメーションが同じスケルトン アセットを使用しているが、ポニーテールのないキャラクターに使用された場合)、そのアニメーション データは無視されます。