UE4のアニメーションブループリント内で使用できる、"Look At"ノードは簡単にキャラクターたちを振り向かせることが可能です。
UE4.16では"Look At"ノードが強化され、さらに使いやすいものとなっています。
今回はこの"Look At"ノードを使ってGrayちゃんに見つめてもらうようにしてみました。
"Look At"ノードに関するドキュメントは以下にありますが、4.16には対応していないため、一部古い情報があります。
2017/06/10追記 "Look At"ノードのドキュメントが4.16に対応したものになりました。
Grayちゃんに関しては別途配布サイトからDLしてあげてください。
それでは早速やってみましょう。
Look Atノードを設定する
まずはアニメーションブループリントを用意しておきましょう。今回はGrayちゃんのスケルタルメッシュをベースに新規のアニメーションブループリントを作成しています。
そしてLook Atノードを検索して配置します。
LookAtノードは複数でてきますが、あくまでも"Skeletal Control(スケルタル制御)"のLookAtノードを使用してください。
普通に繋いでいくとこのように、ローカルからコンポーネント、コンポーネントからローカルへと変換するノードが自動的に差し込まれます。
この状態でLook Atノードを選択して、"詳細"パネルを確認しましょう。Skeleletal Controlのカテゴリー内に"Bone to Modify"という設定があるので、ここに動かしたいボーン名を設定します。
今回は"Neck_01"を指定します。これで首が自由に動かせるようになります。次に動かしたい軸を設定します。ここでは正面にいる自分を見つめてもらいたいので、正面の軸を選びます。
ここでひとつ注意しなければなりません。どの軸が正面になるかはボーンが個々に持つ、ローカルの回転軸を利用します。"In Local Space"のチェックを外すとワールド軸を利用できますが、やり方がかなり複雑になってしまうのでそれは避けます。
Grayちゃんの"Neck_01"のボーンはZ軸が正面を向いています。もしここの軸がZ以外の場合には変更する必要があります。もし、正面を向いている軸がない場合は3DCGツール上で修正した方がいいでしょう。
これで基本的なLookAtノードの設定が完了しました。
Look at Locationの設定
次にLookAtノード上で"Look at Location"の設定をします。デフォルトでは"Look at Location"はピン上に表示されていません。
詳細から"(As pin) Look at Location"を選択し、Look Atノード上でVector型ピンを出現させます。あとはこのLook at Locationに値を渡せるようなVector変数を作って繋いでおきます。
Look at Location変数はYに"1000.0"という値を入力しておくとちょうどいいくらいのデフォルト値になります。
この時にLook Atノードを選択していると、左のビューポート上に実際に見ている視線が表示されます。ここで大体どの位置を向いているのか把握しておきます。
Look at Locationの設定が完了しました。
Look at Clampの設定
Look Atは当然ながら限界を越えて首が振り向くと人間では考えられないような角度になってしまいます。そうならないようにClamp(値を限界値で丸める)させるようにします。
Look Atノードを選択して、詳細内の"Look at Clamp"の値を0から"45.0"に設定します。これで首の振り向き角度に限界が生まれます。
ビューポート上にデバッグビューの表示がでているので、どの角度で振り向けるのかを確認します。今回は上下45度内という角度で設定しています。
これで振り向きの限界値ができました。
目のLook At設定
更に目で見つめてもらうために、追加のLook Atノードを追加しましょう。
Grayちゃんには"Eyeball_L"と"Eyeball_R"というふたつの目のボーンが存在しているので、これを使います。
Eyeball_LのLook Atノードの設定です。Eyeball_Rも全く同じ設定です。
Neck_01と違うのはLook at AxisがZではなく、Xが"1.0"になっている事と、Look at Clampが"30.0"になっている事です。
GrayちゃんのEyeballボーンはローカル回転軸がどちらともX軸が正面になっているからです。更にClampは目が動きすぎると少し怖いので、首よりも制限角度を強くしています。
これで全てのLook Atノードの設定が完了しました。
GrayちゃんのブループリントでLook at Locationを設定
GrayマンのThirdPersonCharacterブループリントを複製したものを少しだけ改変します。
"Mesh"をGrayちゃんに変更し、少々強引ですが、Event Tickから直接GrayちゃんのアニメーションBPのLocation at Location変数にカメラの座標を渡します。
ここでは"Follow Camera"の位置を取得し、"Camera Boom"の設定を少し変更しています。
これで全ての設定が完了です!!
操作キャラクターをGrayちゃんにする
あとはどのような方法でもいいので、操作キャラクターをGrayちゃんにしてみます。例 : Auto Possess Playerを"Player 0"に設定するなど
Grayちゃんにじーっと、見つめてもらう。癒される。#UE4Study pic.twitter.com/RznDtgdSng
— alwei@C92 1日目 東こ34b (@aizen76) 2017年6月5日
プレイしてみて、カメラを回して存分に楽しみましょう!
VRでは特にこのようなキャラクターのインタラクションは重要ですので、Look Atノードが大活躍するはずです。
追記 寄り目を解決する
眼球のボーンが正面軸を向いていなかったため、そのままでは少し寄り目気味になってしまっています。
寄り目になってしまっているのは眼球のボーンが正面を向いていないため、X軸正面の状態で調整しているからですね。本来ならツール上で修正すべきところ。でも個人的に寄り目も好きだったりする… pic.twitter.com/9Ri3EPY7f7
— alwei@C92 1日目 東こ34b (@aizen76) 2017年6月5日
これを修正するために、Eyeball_LとEyeball_RのLoot at Axisを微妙に調整しました。
違いはY軸とZ軸に少しだけ値のオフセットを入れてみました。これでも完璧な数値ではないと思います。
寄り目を無理矢理修正した。#UE4Study pic.twitter.com/KHJQpgfhf3
— alwei@C92 1日目 東こ34b (@aizen76) 2017年6月5日
こんな感じに。
お楽しみください!!