アニメーション リターゲット とは、同じ スケルトン アセットを共有するが比率が非常に異なる可能性があるキャラクター間でアニメーションを再利用する機能です。リターゲットを行うと、形の異なるキャラクターからアニメーションを使用した時、アニメートされたスケルトンがそれぞれの比率を失ったり、無用に変形されることを防ぐことができます。 アニメーション リターゲットを使うと、異なる スケルトン アセット を使用するキャラクター間でも、類似のボーン階層を共有し、リグ と呼ばれる共有アセットを使用していればアニメーションを共有することもできます。リグは、あるスケルトンから別のスケルトンにアニメーション データを渡すためのものです。
リターゲットを使用する理由
ベース キャラクター、背が低く太ったキャラクター、背が高くやせているキャラクターという複数のキャラクター間でアニメーションを共有する必要があるとします。
ベース キャラクター | 背が低く太ったキャラクター | 背が高くやせているキャラクター |
リターゲット適用前の結果
リターゲットを適用する前でも、同じスケルトン アセットを共有するスケルタル メッシュ間でアニメーションを使用することができます。ただし、上記のように比率が異なる場合、結果は見苦しくなります。背の低いキャラクターは不必要に引き延ばされ、背の高いキャラクターは圧縮されますが、両方ともベース キャラクターのスケルタル比率に一致するようになっています。
ベース キャラクター | 背が低く太ったキャラクター | 背が高くやせているキャラクター |
リターゲット後の結果
リターゲットが各キャラクターに適用されると、式から比率の違いをはじきだし、アニメーションがキャラクター上で適切に再生されます。 ビューポート のオプションの [Show] > [Non-Retargeted Animation] からも、元のスケルトン (ベージュ) と現在のスケルトン (白) の違いを見ることができます。リターゲットされていないベージュのボーンが、ベース キャラクター上のスケルトンに完全に一致しています。
ベース キャラクター | 背が低く太ったキャラクター | 背が高くやせているキャラクター |
リターゲットの仕組み
アニメーションは Skeleton アセットに結合しています。Skeleton アセットはボーン名と階層データをリスト化したものですが、Skeleton アセットの定義に使用された元のスケルタル メッシュの最初の比率も格納しています。このデータはボーンの移動データとして格納されます。リターゲット システムは、ボーンの移動コンポーネントのリターゲットのみ行います。注目すべき重要な点です。ボーンの回転はアニメーション データから行います。
元となるスケルタルメッシュは Skeleton アセットの比率を定義するために使用されるので、異なる比率をもつ Skeleton アセットを使ったその他のスケルタルメッシュ (元となるメッシュよりはるかに短いメッシュなど) は正確に動作するためにリターゲットが必要となります。リターゲットをしないと、比率が変更されたスケルタルメッシュは元となるメッシュの移動データを使おうとし、このページの冒頭で見られるようなエラーが生じてしまいます。
この問題を解決するために、スケルトン エディタ 内のスケルトン ツリーには、ボーン間の移動リターゲットの変更設定があります。ボーンの移動のリターゲットには以下の 3 種類があります。
- Animation - ボーンの移動は、変更されていないアニメーション データに基づきます。
- Skeleton - ボーンの移動はターゲット スケルトンのバインド ポーズに基づきます。
- AnimationScaled - ボーンの移動はアニメーション データに基づきますが、スケルトンの比率でスケーリングされます。これはターゲット スケルトンのボーンの長さ (アニメーションが再生中のスケルトン) とソース スケルトン (アニメーションが作成されたスケルトン) との間の比率です。
アニメーション リターゲットでは、リターゲットされたアニメーションとリターゲットされないアニメーションの使用で目立ったパフォーマンスの違いはありません。アニメーションのリターゲットを使用するメリットは、全く新しい同等のアニメーション一式を作成する必要なしに、ユニークなキャラクター数を増やすことであり、アニメーションのメモリ負荷が大幅に削減されます。
異なるスケルトンに対してアニメーションをリターゲットする
同じ Skeleton アセットを共有しないキャラクターに対してアニメーション リターゲットを処理するプロセスでは、リグ と呼ばれる特殊なアセットを割り当てます。リグは、あるスケルトンから別のスケルトンへのアニメーション データを処理します。 各キャラクターに関連付けられている Skeleton アセットは共有の リグ アセットとやりとりして、ソースからターゲットにトランスフォーム データを適切に渡します。
スケルトン エディタ 内の リターゲット マネージャ で リグ を割り当てることができます。同じリグを両方の Skeleton アセットに割り当てる必要があります。
操作ガイドについては、「リターゲットされたアニメーションを使用する」を参照してください。
リターゲットでエンド エフェクタをどのように扱うか
背の高いキャラクタはより速く走るのだろうか、同じプロップをまだ保持することができるのだろうか。リターゲットで作業する場合にこうした疑問が生じるかもしれません。簡単にいうと、自動的に行われる作業はなく、何を行いたいかを決めるのはユーザー次第です。
プロップ保持に関して行う1つの方法としては、"Hand IK Bones" と呼ばれるオリジナルのアニメーションの手に従う、個別のボーンのチェーンの作成があります。次に、ボディとアームをリターゲットしますが、"Hand IK Bones" はしません。そのため、リターゲット後も全く同じままの状態を保ちます。これにより、異なるプロポーションを持つキャラクターに同じプロップを操作させることができます(例、ライフルを再充填)。
個別のボーンのチェーンを持つと、必要に応じて FK と IK との間で簡単にスムーズに切り替えることができます (例えば、武器を再充填する場合に、Hand IK をオンにし、ポケットの弾倉に手を伸ばすときにオフにするなど)。
このシステムは非常にフレキシブルでニーズに合わせてカスタマイズできます。左側の手だけを IK にし、右側の手は FK ポジションを使用するが、IK 回転にする場合があるかもしれません。足はこのように処理されたり、処理されないこともあります。プロップのすぐ上を踏んだ場合、IK をオンにし、その周囲を走っているだけの場合は、FK を使用して、キャラクタが、がに股 (またはその逆) にならないようにします。
リターゲットの設定
上記のリターゲットの仕組みで説明したように、最初に行うのはスケルトン内のボーンに対して [Bone Translation Retargeting (ボーン移動のリターゲット)] モードを設定することです。
これらの設定は通常、二足動物に使用することになるでしょう。
- Root ボーン、 IK ボーン、武器のボーン、あらゆる種類のマーカーは Animation モードを使います。
- Pelvis は AnimationScaled を使用するので、正しい高さに座り、アニメートもされます。
- 移動をアニメートし、リターゲットしたいその他のボーンがあれば、それらについても AnimationScaled を使用します。
- その他すべてのボーンはスケルトンを使用します。ターゲット スケルトンから静的移動を使用します。
つまり、リターゲットを使用したい場合、迅速に使用できるワークフローがこちらです。
- ルート ボーンを 右クリック し、すべてのボーンを再帰的に Skelton に設定するように、Recursively Set Translation Retargeting Skeleton (移動のリターゲット スケルトンを再帰的に設定) します。
- Pelvis または同等のボーンを見つけて、それを AnimationScaled に設定します。
- Root ボーン、 IK ボーン、武器のボーン、その他のマーカーを見つけて、それらが Animation を使用するように設定します。
同じ Skeleton アセットを共有するキャラクターのアニメーションのリターゲットをしている場合、こうしたアニメーションはアニメーションのリターゲットの影響を受けます。 同じ Skeleton アセットを共有しないキャラクターにアニメーションをリターゲットする場合、アニメーションが適切にリターゲットされるように行う必要があるいくつかの追加の手順があります。 詳しい情報については リターゲットされたアニメーションを使用する をご覧ください。
リターゲット マネージャを使用する
アニメーション リターゲットの一部として使用可能なもうひとつのツールとして、 リターゲット マネージャ があります。これを使うと以下のことができます。
- リターゲットのソース アセットの管理 - スケルトン毎に異なる比率のメッシュがある場合に役立ちます。この設定を使って特定のアニメーションが異なるソースからのものであるかを示すことができます。
- リグの設定 - 同じリグを使う別のスケルトンにアニメーションをリターゲットすることができます。
- リターゲットのベース ポーズの管理 - アセットを別のスケルトンにリターゲットする場合に使用します。ターゲットのベース ポーズを変更して、ソースのベース ポーズと一致するようにして、リターゲットされたアニメーションが一段と正確なものになるようにします。
詳細は リターゲット マネージャー のページをご覧ください。