スケルトンは、スケルタルメッシュ内のボーン (ジョイントと呼ばれることもある) を定義するために使用される階層です。 いろいろな意味で、これらのボーンは、ボーンの位置とキャラクターが変形する方法の制御により、実際の生物学的な骨格を模倣しています。
Unreal Engine では、スケルトンは、アニメーション データ、全体的なスケルタル階層、アニメーション シーケンスを格納および関連付けるために使用されます。 スケルトン アセットは、さまざまな方法で共有することができ、異なるスケルトン間で追加のアニメーションやデータを共有することができます。
このドキュメントでは、スケルトンの作成および使用方法の概要について説明します。
前提条件
プロジェクトには、スケルタル メッシュ アクタが含まれているか、Unreal Engine にインポートするスキン FBX キャラクターがあります。
スケルトンを作成する
スケルトンを作成する主な方法は、スキン キャラクターの FBX をインポートし、それを Unreal Engine でスケルタル メッシュに変換することです。 スケルタル メッシュをインポートするときに、FBX のインポート オプション] ウィンドウで、[スケルトン] フィールドを空のままにすると、インポートするスキン化キャラクターに基づいてスケルトン アセットが自動的に作成されます。
キャラクターをインポートすると、他のスケルタル メッシュ アセットとともに、このスケルトン アセットが作成されます。
スケルトン アセットをダブルクリックして、スケルトン エディタを開きます。
スケルトン ツリー情報
スケルトン ツリー に表示されるボーンやその他のアイテムは、複数の要因により、異なった表示になることがあります。
| アイコン | 説明 |
|---|---|
スケルタル メッシュの頂点に影響する法線ボーン。 | |
スケルタルメッシュの頂点に影響を与えない、現在のスケルトン内のボーン。 これらのボーンは、通常、武器やプロップをアタッチするためなど、補助的に使用されますが、引き続きボーンとしてアニメート可能です。 | |
ソケットは、ボーン用のオフセット アタッチメント ポイントとして機能するスタティック ポイントです。 | |
仮想ボーンは、別のボーンのトランスフォームに追従するものの、別のボーン空間内にあるボーンです。 これらは、不要な関節の動きをロックするうえで役立ち、IK と組み合わせて使用されます。 | |
スケルトンに存在するものの、現在のスケルタル メッシュで使用されていないボーン。 これは、スケルトンをマージした場合や、特定のボーンを使用していない異なる LOD をこのスケルトンでプレビューしている場合に、発生する可能性があります。 |
アニメーション データ ストレージ
Unreal Engine のスケルトンは、アニメーションを制御するだけでなく、アニメーション固有のデータの格納も行います。 アニメーション シーケンスでアニメーション通知を作成するなど、これらのソースからデータが作成されると、共有データとしてスケルトンに追加されます。
スケルトンは次のタイプのアニメーション データを格納します。
このデータは、スケルトン エディタ メニューの [ウィンドウ] をクリックし、これらのパネルを 1 つ以上有効にすると、専用のツール パネルで表示することができます。
スケルトンを共有する
スケルトン アセットの重要な機能は、スケルタル メッシュが同一の一般的なリグ階層を使用している限り、単一のスケルトン アセットを複数のスケルタル メッシュで使用できることです。 つまり、共有を正しく機能させるためには、ボーンの名前と階層順が一貫している必要があります。
たとえば、スケルタル メッシュに 3 つのボーンを備える手足について考えてみましょう。 ボーンの名前は、1、2、3です。
このスケルトンを別のスケルタル メッシュと共有したい場合、これらのボーンを同じ順序で、同じ名前のまま維持する必要があります。 ただし、2 つ目のスケルタル メッシュには、その階層の追加ボーンまたは周辺ボーンを含めることができます。 スケルタル メッシュに含まれないボーンに対してアニメーション データを受信した場合、そのアニメーション データは無視されます。
その場合、新しい階層は次の図のようになります。 ここでは、2 つ目のスケルタル メッシュに追加のボーンがありますが、1 つ目のスケルタル メッシュの元の階層は保持され、影響はありません。
ただし、両方のスケルタル メッシュが同一のスケルトン アセットを使用するためには、階層の順序を変更したり、ボーン名を変更したりすることはできません。 2 つ目のスケルタル メッシュが異なるボーン階層と命名構造を使用している場合、新しいスケルトン アセットを作成する必要があります。
順序を変更することなく階層にボーンを挿入すると、問題なく共有することができます。 ただし、ほとんどの場合、追加のボーンはスケルトンに意図しないトランスフォームのオフセットをもたらす可能性があります。 できればこの状態は回避することをお勧めします。
これらの共有ルールを考慮すると、Unreal Engine のスケルタル メッシュ間でスケルトンを共有できる方法がいくつかあります。 これらの詳細については、以下で説明します。
インポート時にマージする
スケルトンを共有する最初の方法は、FBX インポート処理時に実行されます。 新しいスケルタル メッシュ (上記のルールに準拠した追加ボーンおよび周辺ボーンを含む) をインポートする際に、プロジェクト内にすでに存在するスケルタル メッシュからスケルトンを選択することができます。 その後、Unreal Engine ではスケルトンをマージし、新しいボーンを階層に追加します。 さらに、スケルトンのプロポーションは、作成元のスケルタル メッシュによって定義されます。
マージされたスケルトンを確認すると、階層にこれらの追加ボーンがリストされますが、追加ボーンは意図されたスケルタル メッシュに対してのみ表示され、アクティブになります。
互換スケルトン
さらに、互換性のあるスケルトンとして他のスケルトンを定義することで、スケルトン間でアニメーション アセットを非破壊的に共有できます。 互換性のあるスケルトンは、アニメーション シーケンス、モンタージュ、アニメーション ブループリントなどを共有できます。
キャラクターに対して互換性のあるスケルトンを定義するには、キャラクターのスケルトン アセットをスケルトン エディタで開き、ツールバーのボタンをクリックしてリターゲット マネージャーを開きます。
リターゲット マネージャーで、[リターゲット ソース] パネルの [互換スケルトンを管理] セクションを見つけ、[スケルトンを追加] をクリックし、コンテキスト メニューを使用してプロジェクト内の別のスケルトン アセットを選択します。
これで、[互換性のあるソースを管理] リストに追加されたスケルトンから、アニメーションを共有することができます。
スケルトンの互換性は双方向です。 スケルトン 1 をスケルトン 2 と互換性があるように設定すると、スケルトン 2 もスケルトン 1 と互換性があるようになります。
互換性のあるスケルトンのシステムを作成および管理することは、プロジェクトで複数のキャラクターをアニメーション化するのに必要な、アニメーション アセットの数を最適化する効果的な方法です。 ただし、互換性のあるスケルトン システムを活用するには、すべてのキャラクターのスケルトン階層構造と命名規則がほぼ同じである必要があります。 さらに、理想的な結果を得るために、すべてのキャラクターのメッシュ比率が同じである必要があります。
スケルトン構造体が同じで比率が異なるキャラクター間でアニメーションを共有するには、アニメーションのリターゲットに関するドキュメントを参照してください。
アニメーション シーケンスを再ビルドしてスケルトン構造体がまったく異なる複数のキャラクター間で機能するようにするには、「IK リグのリターゲット」のドキュメントを参照してください。
スケルトンの機能
Unreal Engine のスケルトンは、アタッチ、ブレンド、およびその他の設定に関するさまざまな機能をサポートしています。 これらの機能の詳細については、以下のページを参照してください。
アニメーション リターゲット
リターゲットしたアニメーションを複数のスケルタルメッシュで使用して、アニメーションを共有できるようにします。
ブレンド マスクとブレンド プロファイル
ブレンド マスクやブレンド プロファイルを使用して、ボーンを除外したり個別のブレンド速度を変更したりします。
スケルタルメッシュの LOD
スケルタルメッシュ削減ツールを使ってスケルタルメッシュの LOD (詳細度) を生成および変更する
スケルトンの編集
スケルトン編集ツールを使用してスケルトン アセットを作成および編集します。
スケルタル メッシュ ソケット
ソケットを使用して、スケルタル メッシュ内にアタッチメント ポイントを作成します。
仮想ボーン
IK を備える仮想ボーンを使用して、レイヤー化されたアニメーションの問題を解決します。