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