UE4 のアニメーション システムは、いくつかのアニメーション ツールとエディタで構成され、スケルタルベースのメッシュの変形をモーフベースの頂点変形と混ぜて複雑なアニメーションを実現します。 準備した アニメーション シーケンス 間をプレイおよびブレンドする、Anim Montages を使ってレッジや壁などをスケーリングしカスタマイズした特殊な動きを作成する、 モーフ ターゲット を使ってダメージ エフェクトや顔の表情を適用する、スケルタル制御 を使ってボーンのトランスフォームを直接制御する、任意の状況でキャラクターが使用するアニメーションを判断するロジック ベースの ステートマシン を作成するなどの方法によって、基本的なプレイヤーの動きをよりリアルな表現にします。
このページでは UE4 のアニメーション システムの概要を説明します。対象は、UE4 でのアニメーション操作が初めてのユーザーです。ただし、このページは UE4 でスケルタル アセットをアニメートする方法の総合マニュアルではありません。様々なアニメーション システムに慣れ親しむために、システムがどのように組み合わされるか、 UE4 のアニメーションがいかにパワフルで柔軟性があるかについて説明する入門書として考えてください。
用語と概念
まず、 UE4 のアニメーション システムの主な用語と概念について説明します (ヘッダーをクリックすると、詳しい情報が開きます)。
(#Skeleton)
%AnimatingObjects/SkeletalMeshAnimation/Persona/Modes:title%
UE4 でアニメートされたキャラクターを作成する場合、様々なアニメーション ツール (エディタ) を使用することになります。それぞれがアニメーションの異なる側面に重点を置いています。
例えば、スケルトン エディタ からすべてのものが始まります。スケルタルメッシュやそのアニメーションを操作するボーン (またはジョイントの階層) を管理するために使われるからです。 スケルタルメッシュ エディタ はスケルトンにリンクし、キャラクターの外観であるスケルタルメッシュを修正するために使用します。 アニメーション エディタ は Animation アセットを作成し、修正し、チューニング / 微調整する場所です。 アニメーション ブループリント エディタ を使って、キャラクターがどのアニメーションをいつ使うか、アニメーションをいつどのようにブレンドするかを操作するロジックを作成することができます。 最後に Physics Asset Editor (物理アセット エディタ) を使用すると、スケルタルメッシュのコリジョンで使用する物理ボディを作成し、編集することができます。
%AnimatingObjects/SkeletalMeshAnimation/Skeleton:title%
スケルトン は、スケルタルメッシュを変形するために使用するボーンの位置と回転の階層です。UE4 では、スケルトンはその独自のアセットにあるスケルタルメッシュから抽出されます。つまり、アニメーションは、スケルタルメッシュではなくスケルトンに適用されます。同じスケルトンを使用することで、複数のスケルタルメッシュがアニメーションを共有できます。
%AnimatingObjects/SkeletalMeshAnimation/Sequences:title%
アニメーション シーケンス はスケルタルメッシュ上で再生可能な単一のアニメーション アセットです。ボーンの位置、回転、スケーリングを特定の時点で指定するキーフレームを含みます。こうしたキーフレーム間でブレンドしながら順番にキーフレームを再生することで、スケルタルメッシュのボーンをスムーズにアニメートすることができます。
%AnimatingObjects/SkeletalMeshAnimation/Sequences/Notifies:title%
アニメーション通知 (AnimNotifies または単に Notifies) は、アニメーション シーケンス の特定ポイントでイベント発生をアニメーション プログラマーが設定できるようにします。通知は、一般的に歩行時や走行時の足音エフェクトの追加、アニメーションの実行、アニメーション中のパーティクル システムのスポーンなどに使用されます。しかし、その他にも使用法がたくさんあります。ゲームの種類に応じたカスタム通知でシステムを拡張することができるからです。
%AnimatingObjects/SkeletalMeshAnimation/AnimBlueprints:title%
Animation ブループリント は、特殊な ブループリント であり、そのグラフでは、 スケルタルメッシュ のアニメーションを制御します。 グラフは Animation ブループリント エディタ 内で編集されます。ここでは、アニメーションのブレンド、スケルトンのボーンの直接制御、各フレームで使用するスケルタルメッシュの最終的なアニメーション ポーズを定義するロジックのセットアップをすることができます。
%AnimatingObjects/SkeletalMeshAnimation/Blendspaces:title%
ブレンドスペース は 2 つの入力値に基づいたアニメーションのブレンドを可能にする AnimGraphs でサンプリングできる特別なアセットです。単一入力に基づいた 2 つのアニメーション間の簡単なブレンドは、 Animation ブループリントで利用可能な標準の Blend ノード のひとつを使用して 行うことができます。ブレンドスペースは多値 (現時点では 2 値に制限) に基づいた複数アニメーションの 複雑なブレンドを可能にします。
ブレンドスペースの目的は、特定のプロパティや条件に基づいたブレンディングの実行に、 個別にハードコード化したノードを作成する必要性を減らすことです。アニメーターやプログラマーが入力、アニメーション、およびアニメーションのブレンドに使用する入力値の使用法を指定できるようにすることで、 事実上、いかなるタイプのブレンドも 汎用ブレンドスペースを使用して実行することができます。
%AnimatingObjects/SkeletalMeshAnimation/AnimMontage:title%
アニメーション モンタージュ (または略してモンタージュ) は、幅広いアニメーション エフェクトを有効にします。主に ブループリント ビジュアル スクリプティング またはコードを通したアニメーション制御の公開に関わっています。インテリジェントなアニメーションのループ、ロジックベースのアニメーションの切り替えなど、多岐に渡るアニメーション エフェクトも作成することができます。
%AnimatingObjects/SkeletalMeshAnimation/NodeReference/SkeletalControls:title%
SkeletalControls (スケルタル制御) (SkelControls とも呼ばれます) を使用すると、Skeleton アセット内のボーンを直接制御することができます。Animation ブループリント 内でスケルタル制御を使って、個々のボーンの制御、IK チェーンの作成などを行うことができます。基本となるスケルトンを直接制御することで、プロシージャルな動的に動くアニメーションを作成することができます。あるボーンの トランスフォーム を使って、他のボーンを操作したり、歩行アニメーションの再生中に、キャラクターの足と地面を 同調させることができます。何らかの変更を加えて アニメーション シーケンス で適用したボーンのトランスフォームを微調整したり、完全にオーバーライドすることができます。
%AnimatingObjects/SkeletalMeshAnimation/StateMachines:title%
ステートマシン は、スケルタルメッシュのアニメーションを一連のステートへ分割するグラフィカルな手法です。こうしたステートは、あるステートから別のステートにブレンドする方法を制御する 遷移ルールによって管理されます。ひとつのツールとして、ステートマシンはスケルタルメッシュのアニメーションのデザイン プロセスを非常に単純化します。すなわち、複雑なブループリント ネットワークを作成する必要なく、アニメーションのタイプによってキャラクターがどのように動くかを簡単に制御するグラフを作成できます。
また、アニメーション グラフの概念化も単純にします。アニメーションのデザインに必要なステートと、あるステートから別のステートへキャラクターがどのように動くかを考えるところからスタートします。キャラクターに起こりうる全てのアニメーションを読みやすいフローチャートへ分割する手段と考えるとよいでしょう。このチャートを見ると、スケルタルメッシュのステートの動きが分かります。
例えば、キャラクターが動いていない時はステートが「待機状態」になります。キャラクターの移動速度が一定の速度を超えると、キャラクターは別の「動き」のステートへブレンドします。落下、ジャンプ、かがみ込み、ダッシュなど、その他のステートがいくらでも考えられます。アニメーターやアーティストは、ステートマシンを利用することによりデータがアニメーション ネットワークへ流れ込んでいく様子を素早く視覚化することが出来ます。
Epic Games Launcher の [Learn (ラーニング)] タブ の 機能別サンプル プロジェクトで無料で利用することができるアニメーション機能もあります。
システムの詳細
以下は、アニメーション システムを部分的に作成し、編集する場所を示したものです。

この図は、Unreal Engine でアニメートされた典型的なキャラクターに対するデータのフローとオーナーシップを示したものです。

アニメーション デバッグ機能
デバッグ機能は、プレイモード中にコンソールを呼び出す ` キーを押すことで使用できるようになります。
スケルタルメッシュ ボーンのレンダリング

スケルタルメッシュのボーンを表示するには、コンソール内で ShowDebug Bones
コマンドを入力します。上図のように、ボーンは個別の白い線で表されます。
ShowDebug Bones
コマンドは、プレイ セッション中にプレイ可能なキャラクターに対する情報を表示します。別のキャラクター (プレイヤー キャラクター以外) のデバッグ アニメーションを表示するには、viewactor ExampleCharacterID
コマンドを使用します。この場合の ExampleCharacterID は、表示したいキャラクターに割り当てられた Character ID を意味します。この ID は、ID 名を表示する ワールド アウトライナー でキャラクター上にマウスをかざすと見つけることができます。
この時点では、viewactor
コマンドを使用すると、カメラは現在見ているアクタに移動し、ロックされます。デバッグ中であってもカメラを操作する必要がある場合にこれを回避するには、ひとつのウィンドウをデバッグ用に使用し、もうひとつのウィンドウをプレイヤー キャラクターを制御するために使用して、ドロップダウン メニューから複数のプレイヤーで プレイ イン エディタ セッションを作成します。
ボーンの白い線を表示する代わりに、コンソール内で ShowDebugToggleSubCategory 3DBones
コマンドを使って 3D ボーンを有効にすることができます。
アニメーション デバッグ出力

アニメーション デバッグ出力 情報は、コンソール内で ShowDebug Animation
コマンドを使用すれば有効にすることができます。
表示情報は 5 つのセクションに分けられます。以下のリストのカテゴリ名の前に ShowDebugToggleSubCategory コマンドを使ってオンオフを切り替えます (例えば、 ShowDebugToggleSubCategory SyncGroups
)。
ボタン | 説明 |
---|---|
SyncGroups | 最終ポーズに現在寄与しているアニメーション アセットを sync グループごとに (グループに属さない場合は Ungrouped) 表示します。このセクションにリスト化されているブレンド スペースは、デフォルトで寄与しているアニメーション / ウェイトをすべて示します。 ShowDebugToggleSubCategory FullBlendspaceDisplay でオフに切り替えて、出力で使用するスクリーン スペースを減らすことができます。 |
Montages | キャラクターが使用中のモンタージュをリスト表示します。アクティブなモンタージュは緑でハイライトされます。 |
Curves | アニメーションの再生でアクティブになったカーブ値 (名前:値の組み合わせで) をリスト表示します。 |
Notifies | 現在有効になっている通知ステートを表示します。 |
Graph | アクティブなポーズ グラフを表示します。最終ポーズを表す最終ノード (ルートノード) から表示が始まり、最終ポーズを構成するすべてのノードがリスト化されていきます。ノードは階層が保たれるように表されるので、元のブループリント アセットを参照しなくてもノードの接続関係を理解することができます。アクティブなノードは緑に、(ShowDebugToggleSubCategory FullGraph を使って表示するよう切り替えられている場合) アクティブでないノードはグレー表示されます。 |