スケルトン

Unreal Engine でのスケルトン、ボーン、およびアニメーション データの管理について説明します。

スケルトン とは、 スケルトン メッシュボーン (ジョイント も呼ばれる) を定義するために使用される階層構造です。いろいろな意味で、これらのボーンは、ボーンの位置とキャラクターが変形する方法の制御により、実際の生物学的な骨格を模倣しています。

Unreal Engine では、スケルトンを使用して、アニメーション データ、スケルタル階層全体、および アニメーション シーケンス を格納して、関連付けています。スケルトン アセットは、さまざまな方法で共有することができ、異なるスケルトン間で追加のアニメーションやデータを共有することができます。

このドキュメントでは、スケルトンの作成および使用方法の概要について説明します。

前提条件

スケルトンを作成する

スケルトンを作成する主な方法は、スキン キャラクターの FBX を インポート し、Unreal Engine で スケルタル メッシュ に変換する方法です。スケルタル メッシュをインポートするときに、 [FBX Import Options (FBX のインポート オプション)] ウィンドウで [Skeleton (スケルトン)] フィールドを空のままにすると、インポートされたスキン キャラクターに基づいてスケルトン アセットが自動的に作成されます。

import skeletal mesh

キャラクターをインポートすると、他のスケルタル メッシュ アセットとともに スケルトン アセット が作成されます。

skeleton asset

また、任意のスケルタル メッシュからスケルトンのコピーを作成することもできます。これには、コンテンツ ブラウザ でスケルタル メッシュを右クリックし、[Skeleton (スケルトン)] > [Create Skeleton (スケルトンを作成)] を選択します。これにより、既存のメッシュに関連付けられている新しいスケルトンが作成されます。そのメッシュに別のスケルトンが関連付けられている場合は、新しいスケルトンにリンクし直され、アニメーションはすべて新しいスケルトンにリンクされます。

create skeleton copy

スケルトン アセットをダブルクリックして、 スケルトン エディタ を開きます。

skeleton editor

スケルトン ツリー情報

スケルトン ツリー に表示されるボーンやその他のアイテムは、複数の要因によって異なって表示されることがあります。

アイコン

説明

IconBone1.png

スケルタル メッシュの頂点に影響する法線ボーン。

IconBone2.png

スケルタル メッシュの頂点に影響しない現在のスケルトンにあるボーン。これらのボーンは、通常、武器やプロップをアタッチするためなど、補助的に使用されますが、引き続きボーンとしてアニメート可能です。

IconSocket.png

ソケット。ボーン用のオフセット アタッチメント ポイントとして機能するスタティック ポイントです。

IconVirtual.png

仮想ボーン。別のボーンのトランスフォームに追従するものの、別のボーン空間内にあるボーンです。仮想ボーンは、不要なジョイントの動きをロックするうえで役立ち、 IK と組み合わせて使用されます。

IconNoBone.png

スケルトンに存在するものの、現在のスケルタル メッシュで使用されていないボーン。これは、スケルトンを マージ した場合や、特定のボーンを使用していないこのスケルトンで異なる LOD をプレビューしている場合に発生する可能性があります。

アニメーション データ ストレージ

Unreal Engine のスケルトンは、アニメーションを制御するだけでなく、アニメーション固有のデータの格納も行います。アニメーション シーケンスで アニメーション通知 を作成するなど、これらのソースからデータが作成されると、共有データとしてスケルトンに追加されます。

スケルトンは次のタイプのアニメーション データを格納します。

このデータは、スケルトン エディタ メニューの [Window (ウィンドウ)] をクリックし、これらのパネルを 1 つ以上有効にすると、専用のツール パネルで表示することができます。

animation data panels

スケルトンを共有する

スケルトン アセットの重要な機能は、スケルタル メッシュが同一の一般的なリグ階層を使用している限り、単一のスケルトン アセットを複数のスケルタル メッシュで使用できることです。つまり、共有を正しく機能させるためには、ボーンの名前と階層順が一貫している必要があります。

たとえば、スケルタル メッシュに 3 つのボーンを備える手足について考えてみましょう。ボーンには「1」、「2」、「3」という名前が付いています。

sharing skeleton example 1

このスケルトンを別のスケルタル メッシュと共有したい場合、これらのボーンを同じ順序で、同じ名前のまま維持する必要があります。ただし、2 つ目のスケルタル メッシュには、その階層の追加ボーンまたは周辺ボーンを含めることができます。スケルタル メッシュに含まれないボーンに対してアニメーション データを受信した場合、そのアニメーション データは無視されます。

その場合、新しい階層は次の図のようになります。ここでは、2 つ目のスケルタル メッシュに追加のボーンがありますが、1 つ目のスケルタル メッシュの元の階層は保持され、影響はありません。

sharing skeleton example 2

ただし、両方のスケルタル メッシュが同一のスケルトン アセットを使用するためには、階層の順序を変更したり、ボーン名を変更したりすることはできません。2 つ目のスケルタル メッシュが異なるボーン階層と命名構造を使用している場合、新しいスケルトン アセットを作成する必要があります。

sharing skeleton example 3

順序を変更することなく階層にボーンを挿入すると、問題なく共有することができます。ただし、ほとんどの場合、追加のボーンはスケルトンに意図しないトランスフォームのオフセットをもたらす可能性があります。できればこの状態は回避することをお勧めします。

これらの共有ルールを考慮すると、Unreal Engine のスケルタル メッシュ間でスケルトンを共有できる方法がいくつかあります。これらの詳細については、以下で説明します。

インポート時にマージする

スケルトンを共有する最初の方法は、FBX インポート処理時に実行されます。新しいスケルタル メッシュ (上記のルールに準拠した追加ボーンおよび周辺ボーンを含む) をインポートする際に、プロジェクト内にすでに存在するスケルタル メッシュからスケルトンを選択することができます。その後、Unreal Engine ではスケルトンをマージし、新しいボーンを階層に追加します。さらに、スケルトンのプロポーションは、作成元のスケルタル メッシュによって定義されます。

merge sharing

マージしようとしているスケルトンと大きく異なるスケルトンをインポートし、共有ルールが順守されなかった場合は、次のエラー メッセージが表示されます。

failed to merge bones

この場合、既存のスケルトンにマージするのではなく、インポートするスケルタル メッシュ用に新たなスケルトン アセットを作成する必要がある場合があります。

マージされたスケルトンを確認すると、階層にこれらの追加ボーンがリストされますが、追加ボーンは意図されたスケルタル メッシュに対してのみ表示され、アクティブになります。

ShareVar1.png

ShareVar2.png

スケルタル メッシュのバリアント 1

スケルタル メッシュのバリアント 2

互換性のあるスケルトン

また、スケルトンは、他のスケルトンを互換定義することで、非破壊でアニメーション アセットを共有することができます。互換性のあるスケルトンは アニメーション シーケンスモンタージュアニメーション ブループリント などを共有することができます。

キャラクターに互換性のある別のスケルトンを定義するには、キャラクターのスケルトン アセットを スケルトン エディタ で開き、ツールバー でボタンをクリックして リターゲット マネージャ を開きます。

compatible skeletons

Retarget Manager で、[Retarget Sources (リターゲット ソース)] パネルの [Manage Compatible Skeletons] セクションを探し、[Add Skeleton] をクリックして、コンテキスト メニューを使ってプロジェクト内の別のスケルトン アセットを選択することができます。

add compatible skeleton

これで、Manage Compatible Sources に追加されたスケルトンからアニメーションを共有することができます。

compatible skeletons

スケルトンの互換性は双方向ではありません。スケルトン 1スケルトン 2 に対して互換性を持つように設定しても、スケルトン 2 がスケルトン 1 に対する互換性を持っているわけではありません。完全に双方向で共有したい場合は、スケルトン 2スケルトン 1 に対する互換性を持つように設定する必要があります。

複数のキャラクターをアニメーションさせる場合、互換性のあるスケルトン システムを作成・管理することで、プロジェクトに必要なアニメーション アセットの数を最適化することができます。ただし、互換性のある助ストン システムを利用するためには、すべてのキャラクターがほぼ同じスケルトン階層構造および命名規則であることが必要です。さらに、理想的な結果を得るためには、すべてのキャラクターが同じようなメッシュのプロポーションである必要があります。

スケルトン構造が同じで比率が異なるキャラクター間でアニメーションを共有するには、「アニメーション リターゲット」ドキュメントを参照してください。

スケルトン構造が大きく異なるキャラクターで動作するようにアニメーション・シーケンスを再構築するには、「IK リグ リターゲット」を参照してください。

スケルトンの機能

Unreal Engine のスケルトンは、アタッチ、ブレンド、およびその他の設定に関するさまざまな機能をサポートしています。これらの機能の詳細については、以下のページを参照してください。

TopicIcon.png

アニメーション リターゲット

リターゲットしたアニメーションを複数のスケルタルメッシュで使用して、アニメーションを共有できるようにします。

リターゲットしたアニメーションを複数のスケルタルメッシュで使用して、アニメーションを共有できるようにします。

TopicIcon.png

ブレンド マスクとブレンド プロファイル

ブレンド マスクやブレンド プロファイルを使用して、ボーンを除外したり個別のブレンド速度を変更したりします。

ブレンド マスクやブレンド プロファイルを使用して、ボーンを除外したり個別のブレンド速度を変更したりします。

TopicIcon.png

スケルタルメッシュの LOD

スケルタルメッシュ削減ツールを使ってスケルタルメッシュの LOD (詳細度) を生成および変更する

スケルタルメッシュ削減ツールを使ってスケルタルメッシュの LOD (詳細度) を生成および変更する

TopicIcon.png

スケルタル メッシュ ソケット

ソケットを使用して、スケルタル メッシュ内にアタッチメント ポイントを作成します。

ソケットを使用して、スケルタル メッシュ内にアタッチメント ポイントを作成します。

TopicIcon.png

仮想ボーン

IK を備える仮想ボーンを使用して、レイヤー化されたアニメーションの問題を解決します。

IK を備える仮想ボーンを使用して、レイヤー化されたアニメーションの問題を解決します。

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