Unreal Engine でのスケルトン、ボーン、およびアニメーション データの管理について説明します。
概要
アニメーション シーケンスとは、キャラクターをアニメートするための、スケルタル メッシュ 上で再生可能なアニメーション データを含むアニメーション アセットです。アニメーション シーケンスには、特定の時点においてスケルタル メッシュの スケルトン の位置、回転、スケールを指定するキーフレームが含まれています。連続再生時にキーフレーム間でブレンドすることで、スケルトンの動きによってメッシュがアニメートされます。
アニメーション シーケンスは特定のスケルトンに紐付けられているため、同じスケルトンを使用するスケルタル メッシュ間でアニメーションを共有することができます。
アニメーションを作成する
多くの場合、アニメーション シーケンスは外部のアニメーションおよびモデリング ソフトウェアで作成され、FBX ファイル内に保存されます。アニメーション シーケンスは、プロジェクトで使用するために FBX インポート プロセス時に Unreal Engine にインポートできます。
アニメーションをインポートする
アニメーションをインポートするには、コンテンツ ブラウザ の [Import (インポート)] を選択します。
コンピュータのファイル エクスプローラーの画面から、インポートするアニメーションを含む FBX ファイルを選択します。
[FBX Import Options (FBX インポート オプション)] ウィンドウが表示されます。このウィンドウで、アニメーションのインポート プロセスを微調整できます。
[FBX Import Options] ウィンドウには、次の設定可能なプロパティが含まれています。
プロパティ |
説明 |
---|---|
Import Animation |
このプロパティが有効な場合は、アニメーションを含む FBX ファイルのインポート時に、アニメーションがアニメーション シーケンス アセットとしてインポートされます。 |
Animation Length |
Exported Time:時間に基づき、エクスポートされた長さでアニメーションがインポートされます。 Advanced Time:アニメーション データが存在する長さでアニメーションがインポートされます。 Set Range:Frame Import Range プロパティで定義されたフレームの設定範囲でアニメーションがインポートされます。 |
Override Animation Name |
これを使用した場合、インポートされるアニメーションの名前が指定した名前でオーバーライドされます。アニメーションは、デフォルトでは FBX ファイルの名前でインポートされます。 |
Import Meshes in Bone Hierarchy |
有効な場合、ボーン階層にネスト化されているメッシュはボーンに変換されるのではなく、別にインポートされます。 |
Frame Import Range |
アニメーションのインポート時に使用されるフレーム範囲を定義します。[Animation Length (アニメーションの長さ)] が [Set Range (範囲の設定)] に設定されている場合にのみ使用します。 |
Default Sample Rate |
有効な場合は、現在のアニメーション カーブがすべて 30fps でサンプリングされます。 |
Custom Sample Rate |
アニメーション データをインポートするためのカスタム サンプル レートを定義します。「0」に設定すると、Unreal Engine によって最適なサンプル レートが自動的に決定されます。 |
Import Custom Attribute |
有効な場合は、現在のあらゆるカスタム属性がカーブとしてインポートされます。 |
Delete Existing Custom Attribute Curves |
再インポート時に有効な場合は、現在のあらゆるカスタム属性カーブが削除されます。 |
Delete Existing Non Curve Custom Attributes |
再インポート時に有効な場合は、以前の非カーブ属性がすべて削除されます。 |
Import Bone Tracks |
有効な場合は、ボーン トランスフォーム トラックがインポートされます。無効な場合は、ボーン トランスフォーム トラックがすべて破棄されます。カーブのみのアニメーションで作業している場合は、ボーン トランスフォーム トラックの破棄が有用です。 |
Set Material Curve Type |
有効な場合は、このプロパティによってすべてのカスタム属性向けにマテリアル カーブ タイプが設定されます。 |
Material Curve Suffixes |
ここで、カスタム属性向けのマテリアル カーブ タイプを手動で設定できます。[Set Material Curve Type] が有効な場合は、このプロパティの効果がなくなります。 |
Remove Redundant Keys |
有効な場合は、カスタム属性をカーブとしてインポートする際に不要なキーが削除されます。 |
Delete Existing Morph Target Curves |
|
Do not Import Curve with Zero |
有効な場合は、評価対象に追加のカーブが加わることを回避するために、「0」の値を含む現在のあらゆるカーブが削除されます。 |
Preserve Local Transform |
有効な場合は、アニメーションに含まれる現在のカーブがすべてインポートされます。 |
[Import Settings (インポート設定)] ウィンドウの Skeleton プロパティを使用して、インポートしたアニメーションを駆動するスケルトンを選択できます。このプロパティを空白にすると、FBX ファイルで検出されたすべてのスケルタル構造が新しいスケルトンとしてインポートされます。
インポートしたアニメーションを既存のスケルトンを使って駆動するには、アニメーションで似たようなスケルトンが使用されている必要があります。Unreal Engine では、スケルトン ツリー のボーンの 名前 と 階層 を使用して、既存のスケルトンのボーンを一致させるために、アニメーションからのボーンを自動的にマッチングします。
[Import Animation] オプションが有効になっていることを確認して、[Import] を選択します。
複数の FBX ファイルを一度にインポートする場合は、[Import All (すべてインポート)] を使用して、同じ FBX インポート オプション が設定されている選択したすべての FBX ファイルをインポートできます。
インポート プロセスが完了すると、アニメーションがコンテンツ ブラウザ内でアニメーション シーケンス アセットとして表示されます。
全体ではない終了フレーム値を持つアニメーションは、Unreal Engine に正しくインポートされません。
この問題は、アニメーション シーケンスを外部 DCC にインポートして最終フレームをフレーム全体の値に編集するか、[FBX Import Options] の Animation Length プロパティを Frame Range に設定し、[Advanced (詳細設定)] セクションの Frame Import Range プロパティを手動で設定すると、修正することができます。
Unreal Engine へのアニメーションのインポートの詳細については、「FBX アニメーション パイプライン」と「FBX を使用してアニメーションをインポートする」を参照してください。
シーケンサー
シーケンサー を使用すると、Unreal Engine でアニメーションをスケルタル メッシュのみで作成できます。これは、アニメーション トラック を使用する際、または コントロール リグ を使ってアニメートする際に、アニメーションを新しいアニメーション シーケンスとして保存したい場合に便利です。
シーケンサーを使用して作成したアニメーションから新しいアニメーション シーケンスを作成するには、スケルタル メッシュ アクタのトラックを 右クリック し、コンテキスト メニューから [Bake Animation Sequence (アニメーション シーケンスをベイク)] を選択します。
また、FK コントロール リグを使用して既存のアニメーションを編集することで、一意のバリアントやシーケンスの改訂バージョンを作成することもできます。
コントロール リグの詳細と、コントロール リグを使用して Unreal Engine でキャラクターをアニメートする方法については、「コントロール リグ」ドキュメントを参照してください。
アニメーション シーケンスを編集する
アニメーション シーケンスで作業する場合は、アニメーション シーケンス エディタ を使用して、既存のアニメーションに対して付加的な編集を行い、調整を加えることができます。アニメーション シーケンス エディタでは、再生をプレビューしたり、加算レイヤーを使ってアニメーションを調整したり、通知やカーブを追加したりできます。
以下のセクションでは、プロジェクト内で既存のアニメーションの編集や変更に使用できるいくつかの方法を紹介します。
加算アニメーション トラック
ボーン操作 ツールを使って、アニメーション シーケンスに含まれるキャラクターのボーンの位置を調整できます。ビューポートまたはスケルトン ツリー パネルでボーンを選択し、移動ツールを使ってボーンの位置と回転を操作します。
ボーンの操作が完了したら、ツールバー の [+ Key (キーを追加)] を使ってキーを追加し、シーケンス タイムラインに表示される 加算アニメーション トラック に動きのデータを保存します。
加算トラックでは、追加されたキーフレームにおける操作済みの位置と一致するようにボーンの位置がブレンドされます。
ボーン操作の詳細については、スケルトン エディタのドキュメントに含まれる「ボーンの操作」セクションを参照してください。
レコーディング機能
アニメーション シーケンスの編集時には、**録画ボタン**を使って設定した動きをリアルタイムでレコーディングし、そのアニメーションを新しいシーケンスとして保存できます。
保存したアニメーションは、一意のアニメーション シーケンス アセットとして使用できます。
レコーディング機能は、ブレンドされたアニメーションからアセットを作成する目的でも使用できます。
アニメーションを共有する
プロジェクトでさまざまなスケルトンとスケルタル メッシュの組み合わせを使用している場合は、これらのアセット間でアニメーション シーケンスを共有できます。アニメーションの共有、またはスケルトンのリターゲティングを行う方法は複数あり、プロジェクトのニーズに合わせて最適なものを選択できます。
同じスケルトンは使用しないものの、同じようなスケルタル構造 を持つスケルタル メッシュについては、それらのスケルトンを 互換性のあるもの として定義してアニメーション シーケンスを共有できます。詳細については、「スケルトン」ドキュメントの「互換スケルトン」セクションを参照してください。
同じスケルトンを使用するものの、異なるメッシュ比率 を持つスケルタル メッシュ間でアニメーション シーケンスを共有するには、アニメーションのリターゲティングを行います。詳細については、「アニメーションのリターゲティング」ドキュメントを参照してください。
あるスケルタル メッシュからのアニメーション シーケンスを使用して、IK リグ リターゲティングを含む異なるスケルトンを使って別のスケルタル メッシュ用の 新しいアニメーション シーケンス を作成できます。詳細については、「IK リグのリターゲティング」ドキュメントを参照してください。
アニメーションの圧縮
圧縮設定は定義可能なデータ アセットで、アニメーション アセットに圧縮を適用します。圧縮によってアニメーション データが取り除かれ、アニメーションのメモリ コストが下がることで、プロジェクトのパフォーマンスが向上します。圧縮の影響は、最小限の動きのみを含むアニメーションではあまり見られませんが、複雑な動きを含むアニメーションでは圧縮の影響がより大きく反映されます。
圧縮設定アセットを作成するには、コンテンツ ブラウザ内の [+ Add (追加)] をクリックし、コンテキスト メニューから [Animation (アニメーション)] > [Bone Compression Settings (ボーン圧縮設定)] または [Curve Compression Settings (カーブ圧縮設定)] を選択します。
圧縮アセットの作成後は、コンテンツ ブラウザ 内で ダブルクリック すると [Details (詳細)] パネルを開くことができます。
ボーン圧縮設定
ボーン圧縮設定アセットは、圧縮方法の定義とアニメーション シーケンスのボーン データへの適用に使用されます。ボーン圧縮により、ボーン圧縮設定のプロパティで定義したコーデック方法に応じて、不要または無作為なボーン モーション データが削除されます。
ボーン圧縮設定アセットには、次の設定可能なプロパティが含まれます。
プロパティ |
説明 |
---|---|
Codecs |
ボーン データをアニメーション シーケンスに圧縮する際に、試すことのできるアニメーション ボーン圧縮コーデックのリストを定義できます。利用可能なコーデックは次のとおりです。 Anim Compress Bitwise Compress Only:ビット単位の圧縮に焦点を当てて、すべてのキーを維持します。 Anim Compress Least Destructive:現在のあらゆるアニメーション圧縮を生データに復元します。 Anim Compress Per Track Compression:トラックごとの圧縮に焦点を当てて、各トラックを個別に圧縮します。 Anim Compress Removes Every Second Key:アニメーションに含まれる 2 番目のキーをすべて削除します。 Anim Compress Revolve Linear Keys:周囲のキーと変わらないキーをすべて削除します。 Anim Compress Removes Trivial Keys:アセットの位置と向きが周囲のキーと変わらないキーをすべて削除します。 リスト内にある空白のエントリは、ボーン圧縮をアニメーション シーケンスで実行する際に無視されます。ただし、ボーン データを圧縮するには、リストに少なくとも 1 つのコーデックが含まれている必要があります。 |
Error Threshold |
有効になっており、圧縮時にトリガーされた場合は、このエラーしきい値を下回る最適なコーデックが使用されます。デフォルトのエラーしきい値は「0.1」です。 |
Force Below Threshold |
有効な場合は、エラーしきい値のより低いコーデックが、そのしきい値を下回るまで使用されます。 |
ボーン圧縮設定アセットは、アニメーション シーケンスの [Asset Details (アセット詳細)] パネルにある Bone Compression Settings プロパティで適用できます。
Curve Compression Settings (カーブ圧縮設定)
カーブを使ってアニメーション シーケンスのプロパティを駆動する場合は、カーブ圧縮により、プロジェクトのパフォーマンスを維持するための有用なリソースが提供されます。
カーブ圧縮設定アセットには、次の設定可能なプロパティが含まれます。
プロパティ |
説明 |
---|---|
Codec |
アニメーション カーブ圧縮コーデックを定義します。選択可能なコーデック タイプは次のとおりです。 Compressed Rich Curves:リッチ カーブのみをターゲットとして圧縮します。 Uniform Indexable:カーブのポイントがインデックス可能になり、他の機能でアクセスできるようにカーブを圧縮します。 Uniformly Sampled:圧縮後は、あらゆるカーブが均一のレートでサンプリングされます。 |
Max Curve Error |
リッチ カーブの圧縮時に許可される最大エラーしきい値です。デフォルト値は「0」です。 |
Use Anim Sequence Sample Rate |
アニメーション シーケンスのサンプル レートに明示的な値を使用する場合に、このプロパティを有効にします。 |
Error sample rate |
Use Anim Sequence Sample Rate が有効な場合、アニメーション シーケンスでは、カーブ エラーの測定時に使用するサンプル レートとして定義した値を使用します。デフォルト値は「60」です。 |
カーブ圧縮設定アセットは、アニメーション シーケンスの [Asset Details] パネルにある Curve Compression Settings プロパティで適用できます。
アニメーション シーケンス機能
次は、プロジェクトのアニメーション シーケンスでの作業時に利用可能なアニメーション シーケンス関連機能です。
アニメートされたカスタム FBX 属性をアニメーション シーケンスにインポートして使用します。
アニメートされたカスタム FBX 属性をアニメーション シーケンスにインポートして使用します。
アニメーション カーブを使って、マテリアル パラメータ、モーフ ターゲット、およびアニメーションに同期された他のプロパティをアニメートします。
アニメーション カーブを使って、マテリアル パラメータ、モーフ ターゲット、およびアニメーションに同期された他のプロパティをアニメートします。
スケルトン エディタ内のリターゲット マネージャーで使用できるオプションについて説明します。
スケルトン エディタ内のリターゲット マネージャーで使用できるオプションについて説明します。
アニメーション通知を使用して、アニメーション シーケンスに同期されたイベントを送受信します。
アニメーション通知を使用して、アニメーション シーケンスに同期されたイベントを送受信します。