Let's Enjoy Unreal Engine

Unreal Engineを使って遊んでみましょう

UE4 LookAt機能を使ってGrayちゃんに見つめてもらってみる

UE4のアニメーションブループリント内で使用できる、"Look At"ノードは簡単にキャラクターたちを振り向かせることが可能です。
UE4.16では"Look At"ノードが強化され、さらに使いやすいものとなっています。

今回はこの"Look At"ノードを使ってGrayちゃんに見つめてもらうようにしてみました。

"Look At"ノードに関するドキュメントは以下にありますが、4.16には対応していないため、一部古い情報があります。
2017/06/10追記 "Look At"ノードのドキュメントが4.16に対応したものになりました。

docs.unrealengine.com


Grayちゃんに関しては別途配布サイトからDLしてあげてください。

Grayちゃんモデルデータ | rarilog


それでは早速やってみましょう。

Look Atノードを設定する

まずはアニメーションブループリントを用意しておきましょう。今回はGrayちゃんのスケルタルメッシュをベースに新規のアニメーションブループリントを作成しています。

そしてLook Atノードを検索して配置します。


f:id:alwei:20170605165547p:plain

LookAtノードは複数でてきますが、あくまでも"Skeletal Control(スケルタル制御)"のLookAtノードを使用してください。


f:id:alwei:20170605165742p:plain

普通に繋いでいくとこのように、ローカルからコンポーネントコンポーネントからローカルへと変換するノードが自動的に差し込まれます。

この状態でLook Atノードを選択して、"詳細"パネルを確認しましょう。Skeleletal Controlのカテゴリー内に"Bone to Modify"という設定があるので、ここに動かしたいボーン名を設定します。

今回は"Neck_01"を指定します。これで首が自由に動かせるようになります。次に動かしたい軸を設定します。ここでは正面にいる自分を見つめてもらいたいので、正面の軸を選びます。

ここでひとつ注意しなければなりません。どの軸が正面になるかはボーンが個々に持つ、ローカルの回転軸を利用します。"In Local Space"のチェックを外すとワールド軸を利用できますが、やり方がかなり複雑になってしまうのでそれは避けます。


f:id:alwei:20170605170729p:plain

Grayちゃんの"Neck_01"のボーンはZ軸が正面を向いています。もしここの軸がZ以外の場合には変更する必要があります。もし、正面を向いている軸がない場合は3DCGツール上で修正した方がいいでしょう。


f:id:alwei:20170605171100p:plain

これで基本的なLookAtノードの設定が完了しました。

Look at Locationの設定

次にLookAtノード上で"Look at Location"の設定をします。デフォルトでは"Look at Location"はピン上に表示されていません。


f:id:alwei:20170605171443p:plain

詳細から"(As pin) Look at Location"を選択し、Look Atノード上でVector型ピンを出現させます。あとはこのLook at Locationに値を渡せるようなVector変数を作って繋いでおきます。


f:id:alwei:20170605172212p:plain

Look at Location変数はYに"1000.0"という値を入力しておくとちょうどいいくらいのデフォルト値になります。

この時にLook Atノードを選択していると、左のビューポート上に実際に見ている視線が表示されます。ここで大体どの位置を向いているのか把握しておきます。

Look at Locationの設定が完了しました。

Look at Clampの設定

Look Atは当然ながら限界を越えて首が振り向くと人間では考えられないような角度になってしまいます。そうならないようにClamp(値を限界値で丸める)させるようにします。


f:id:alwei:20170605172806p:plain

Look Atノードを選択して、詳細内の"Look at Clamp"の値を0から"45.0"に設定します。これで首の振り向き角度に限界が生まれます。


f:id:alwei:20170605172909p:plain

ビューポート上にデバッグビューの表示がでているので、どの角度で振り向けるのかを確認します。今回は上下45度内という角度で設定しています。

これで振り向きの限界値ができました。

目のLook At設定

更に目で見つめてもらうために、追加のLook Atノードを追加しましょう。

Grayちゃんには"Eyeball_L"と"Eyeball_R"というふたつの目のボーンが存在しているので、これを使います。


f:id:alwei:20170605173219p:plain

Eyeball_LのLook Atノードの設定です。Eyeball_Rも全く同じ設定です。

Neck_01と違うのはLook at AxisがZではなく、Xが"1.0"になっている事と、Look at Clampが"30.0"になっている事です。

GrayちゃんのEyeballボーンはローカル回転軸がどちらともX軸が正面になっているからです。更にClampは目が動きすぎると少し怖いので、首よりも制限角度を強くしています。


f:id:alwei:20170605173611p:plain

これで全てのLook Atノードの設定が完了しました。

GrayちゃんのブループリントでLook at Locationを設定

GrayマンのThirdPersonCharacterブループリントを複製したものを少しだけ改変します。


f:id:alwei:20170605173824p:plain

"Mesh"をGrayちゃんに変更し、少々強引ですが、Event Tickから直接GrayちゃんのアニメーションBPのLocation at Location変数にカメラの座標を渡します。

ここでは"Follow Camera"の位置を取得し、"Camera Boom"の設定を少し変更しています。


f:id:alwei:20170605174115p:plain

これで全ての設定が完了です!!

操作キャラクターをGrayちゃんにする

あとはどのような方法でもいいので、操作キャラクターをGrayちゃんにしてみます。例 : Auto Possess Playerを"Player 0"に設定するなど

プレイしてみて、カメラを回して存分に楽しみましょう!


f:id:alwei:20170605174339p:plain

VRでは特にこのようなキャラクターのインタラクションは重要ですので、Look Atノードが大活躍するはずです。

追記 寄り目を解決する

眼球のボーンが正面軸を向いていなかったため、そのままでは少し寄り目気味になってしまっています。

これを修正するために、Eyeball_LとEyeball_RのLoot at Axisを微妙に調整しました。


f:id:alwei:20170605222003p:plain

違いはY軸とZ軸に少しだけ値のオフセットを入れてみました。これでも完璧な数値ではないと思います。


こんな感じに。

お楽しみください!!