BLOGブログ

2017.02.24UE4UE/ Animation

[UE4] UE 4.15 の新機能!ポーズのスナップショットについて

今回は、UE4.15 の新機能である『ポーズのスナップショット機能』について書いていきたいと思います。

『ポーズのスナップショット機能』は、ランタイムで保存した Skeletal Mesh のポーズを、Animation Blueprint で利用できるというものです。

ノードの説明

ポーズの保存は、Save Pose Snapshot ノードもしくは Snapshot Pose ノードで行います。

どちらも実行時点での Skeletal Mesh のポーズ情報を保存するノードですが、Save Pose Snapshot ノードはポーズ情報に名前をつけて保存する形となるのに対し、Snapshot Pose ノードはポーズ情報を PoseSnapshot 構造体に格納します。

保存したポーズの再生は、Pose Snapshot ノードで行います。このノードは、Snapshot Name 入力ピンのみが表示されている状態で Anim Graph に追加されます。Save Pose Snapshot ノードで保存したポーズを再生するには、この Snapshot Name に名前を入力します。

Snapshot Pose ノードで保存したポーズを再生する場合は、Mode を Snapshot Pin に切り替えた上で、Snapshot 入力ピンを表示させる必要があります。

利用例

『ポーズのスナップショット機能』を利用して、操作キャラクターと同じ位置に同じポーズの Skeletal Mesh を配置する処理を組んでみます。Third Person Template をベースに作っていきます。

まず、CopyCharacter という名前の Actor 継承クラスを作ります。Skeletal Mesh Component と、PoseSnapshot 構造体の変数 (Expose on Spawn のチェックをオン) を持つだけの構成です。

次に、CopyCharacter の Skeletal Mesh で利用する Animation Blueprint を作成します。CopyCharacter の持つ PoseSnapshot 構造体を保持し、Pose Snapshot ノードで再生するだけの構成です。

最後に、ThirdPersonCharacter の Event Graph に CopyCharacter の Spawn 処理を記述し、P キーを押したときに実行できるようにします。直前に保存したポーズ情報と位置情報を渡すことで、ThirdPersonCharacter と同じ位置に同じポーズの CopyCharacter が Spawn されるようにしています。

実行するとこのようになります。一定時間経過で CopyCharacter を Destroy したり、Material を工夫したりすることで、残像の表現ができそうです。

また、ラグドールと組み合わせて使用するとこのようになります。アクションゲームなどで、前回ミスした位置に自分のキャラクターを倒しておいたりできます。

『ポーズのスナップショット機能』は簡単に扱える機能ですので、UE 4.15 を導入したら是非試してみてください。