表情のアニメーションの共有

Pose アセット、Animation ブループリント、アニメーション カーブを使用して表情のアニメーションを共有する方法を説明します。

Windows
MacOS
Linux

FacialAnimationSharing.png

プロジェクト内の複数のキャラクターが似ていて、同じ Skeleton アセットを共有している場合、表情のためにカーブで操作するアニメーションを使用することを検討するといいかもしれません。そうすると、アニメーション カーブを共有して Pose アセットと合わせて利用することで、望むような表情を制作して複数のスケルタル メッシュで共有できます。

ただし、重要な注意点が 1 つあります。アニメーション内にボーン トランスフォーム データが含まれていてはいけません。ボーン トランスフォーム データは、メッシュの参照ポーズのものであっても、ほかのメッシュでは動作しません。異なるメッシュ間でカーブを共有する場合、ボーン トランスフォームを削除して (カーブのみを残して)、各メッシュの参照ポーズから始めることが重要です。そうすれば、複数の顔で表情のカーブを共有できます。

以降に挙げるのはワークフローの例です。アセットと期待する結果によっては、ワークフローは異なったものになる可能性があります。

マスター Skeleton の作成と使用

まず、ベースとなるスケルタル メッシュをインポートして、(表情のアニメーションを共有させたいほかのすべてのスケルタル メッシュが使用する) マスター Skeleton とする Skeleton アセットを作成します。Skeleton アセットを共有するために、インポートする追加のメッシュはボーン階層と命名規則が同じである必要があります。

MasterSkeleton_01.png

Skeleton の詳細については、Skeleton Assets のドキュメント ページを参照してください。

Pose アセットの作成

次に、DCC アプリケーション内でポーズを FBX シーケンスにベイクして、その FBX を UE4 にインポートします。こうすると、アニメーション シーケンスに最小および最大のブレンドの値の各カーブが含まれるようになります。

画像をクリックしてフルサイズで表示

上の画像では、インポートしたアニメーション シーケンスに、あるフレームでのすべてのカーブとその最大値が含まれています。

すべてのカーブ データを含むシーケンスをインポートしたら、そのアニメーション シーケンスから Pose Asset を作成できます。Pose アセットは、アニメーション カーブのデータをキャラクターで実際の表情のアニメーションに変換するために使用できます。

AnimationSequence_02.png

アニメーション シーケンスを右クリックして、コンテキスト メニューから Pose アセットを作成できます。

Pose アセット内ではポーズ名を定義する必要があります。そのために、それぞれの名前を手入力するか、クリップボード経由でデータをコピー アンド ペーストします。

次に、インポートしたポーズを含む 58 フレームのアニメーション シーケンスで特定されたすべてのポーズの一覧を示します。

Facial_Poses.png

これらを Pose アセットのポーズの名前として適用できます。

PoseAssetBlank.png

すると、Skeleton アセットと合わせて保存されたカーブが [Anim Curves] ウィンドウに表示されます。

画像をクリックしてフルサイズで表示

マスター Skeleton を使うすべてのキャラクターがこれらのカーブにアクセスできるようになり、各カーブが表すそれぞれの値によって表情をアニメーションさせることができます。一方で、Pose アセットがすべてのカーブ データを変換して、キャラクターがとる実際のアニメーション ポーズにします。

AnimationSequence_03.png

上の例では、jaw_open_pose の値をデフォルトの 0 から 1 に変更した結果、キャラクターが口を開いています。

Pose アセット内でポーズ名を入力する場合、使用されていないカーブを [Anim Curves] ウィンドウから削除して、表示される件数を減らすことをお勧めします。

下の例では、Pose アセットのポーズ名がすべて表示されています。また、[Anim Curves] ウィンドウにもポーズ名が表示されています。

PoseRename1-1.png

Pose_0l_eye に変えても、[Pose_0] は [Anim Curves] に表示されたままになります。[Pose_0] を右クリックして [Delete Curve] を選択すると削除できます。

PoseRename2.png

親 Animation ブループリントと子 Animation ブループリントの設定

Pose アセットの準備ができたら、カーブで操作するアニメーションを利用するキャラクターの Animation ブループリント**を作成します。そして最後に、Pose アセット** ノード (作成した Pose アセットを割り当て) がカーブ データをキャラクターが使用できるポーズへと正確に変換します。

画像をクリックしてフルサイズで表示

カーブで操作するアニメーションを [Final Animation Pose] に直接つなげると、カーブをポーズのデータに変換する方法がアニメーション ポーズにはわからなくなります。そこで [Pose Asset] ノードを使用できます。アニメーションをインターセプトして、カーブを実際のポーズ データへと適切に変換し、キャラクターが使えるようにします。

追加のキャラクターがいる場合、このマスター Animation ブループリントから子 Animation ブループリントを作成してキャラクターに割り当てます。Pose アセットは各キャラクター独自の Pose アセット データでオーバーライドできます。こうすると、キャラクター固有の差分を得ることができ、たとえば悲鳴を上げる様子が体格に応じた見た目になります。

画像をクリックしてフルサイズで表示

上の例では、追加のキャラクターがマスター Animation ブループリントに基づく子 Animation ブループリントを使用しています。

子 Animation ブループリント内では Pose アセットをオーバーライドして、このキャラクターに固有のものを使うようにしています。こうすると、差分を使ってこのキャラクターに固有の表情のポーズを動かすことができ、再生されるアニメーションは親からのものになります。

アニメーションの取り込み

キャラクターの表情のアニメーションを取り込むには、通常は、カーブで操作する表情のアニメーションに加えて、キャラクターのボーンで動かされるボディのアニメーションをある程度使います。ボディのアニメーションを共有して、表情はカーブで操作するために、表情のアニメーションから、あらゆるボーン トラックを削除して、カーブのみを残す必要があります。あるいは、Animation Modifier を使って、特定のボーン トラックを削除して、顔にはカーブを利用します。

その仕組みについて、下のアニメーション シーケンスを例に説明します。

BringInAnimation_01.png

アニメーション シーケンスには、すべてのカーブと、さまざまな表情を表すそれらのカーブについてキーを指定した値が含まれます。ただし、カーブはボーンで操作するアニメーションの上で再生されることになり、トランスフォームが二重になって結果が不正確になるという問題があります。この場合、ボーンのトランスフォームを削除して、カーブのみを残すようにします。

[Asset] メニューの Animation セクションにある [Remove All Bone Tracks] を使用して削除できます。

BringInAnimation_04.png

また、ボディのアニメーションは共有するが表情はカーブで操作したいという場合、Animation Modifier を使って特定のボーンのみを削除することもできます。通常、ボディのアニメーションはボーンで操作して、表情のアニメーションはカーブで操作するという場合には、Animation Modifier を使用します。

BringInAnimation_02.png

ここでは、アニメーション シーケンスと、削除する特定のボーン トラック (子を含む) は Modifier が適用された時点で [Finalize] されます。

Animation Modifier を作成するには、Parent Class を Animation Modifier に設定してブループリントを作成します。

インポートしたアニメーションで Animation Modifier セクションに移動して、作成した Animation Modifier を適用すると、ボーンのトランスフォームを削除できます。

BringInAnimation_03.png

Animation Modifier を追加したら、ボタンをクリックして適用できます。

カーブだけが残った状態で、Animation ブループリント内で Pose アセットを通じてアニメーションを実行すると、カーブで操作するポーズが得られて、共有できます。下の例では、カーブで操作するアニメーションを [Final Animation Pose] に直接つなげていますが、カーブを処理する方法がわからないので、そのポーズは使用されません。そこで、アニメーションを Pose アセットにつなげてカーブを操作すると、キャラクターが表情を演じるようになりました。

各キャラクターが子 Animation ブループリントを使用し、割り当てられた Pose アセットが差分を使って表情を共有できるようになりました。ボーンのトランスフォームはなく、アニメーションはカーブによってのみ操作されているので、トランスフォームが二重になることはなく、ボーンで操作する追加のアニメーション データ (ボディ全体のアニメーションなど) とこのアニメーションをブレンドできます。

Select Skin
Light
Dark

Welcome to the new Unreal Engine 4 Documentation site!

We're working on lots of new features including a feedback system so you can tell us how we are doing. It's not quite ready for use in the wild yet, so head over to the Documentation Feedback forum to tell us about this page or call out any issues you are encountering in the meantime.

We'll be sure to let you know when the new system is up and running.

Post Feedback