[UE4]Control Rig機能調査:LookAt(Aim)を作る
ここはControl Rig機能調査の子頁です
Look At(Aim)制御
任意の座標に対して指定した骨の指定軸を向ける制御
Epic Skeletonで言えばhead骨のY軸を任意の座標に向ける
この記事では胴と首の2段階でLook AtするRigを作成する
準備
Controlを作成
Controlの位置が実行中は特定の骨座標に依存しないので、今回はSpaceなしにしてみる
顔の正面をControlの初期位置にする
Setup Eventノードからheadの正面にControlを動かす
この時に回転も取得しておく
いきなりheadに依存しとるやん
Setup EventはRigが有効になった時に1回だけ走る処理なので許して
公式Doc参照
Gizmoはお好みで
今回はGizmoがZ軸を向いた矢印になるように、Gizmo Transformで回転しておく
X軸
顔向け
Forwards Solveの先にAimノード作成
Itemが動かす対象
Primary
要するにFront Vector
Itemに指定したBoneのどの軸をTargetに向けるか指定
head骨ならY軸をControlに向けたいのでAxis=(0,1,0)
TargetにはControlの座標を指定
SecondaryはItemに指定したBoneのどの軸をPrimary
要するにUp Vector
Primaryだけだと姿勢が定まらないので補助
head骨はX軸方向が頭上なのでAxis=(1,0,0)
TargetにはControlのZ軸方向を指定
いずれもTarget SpaceはGlobalにしたいので、None指定にしておく
ついでにDetails欄からDebug Settingsを設定
Enabledを有効にしてLine表示
水色がPrimary、青色がSecondaryのTargetとして可視化
Scaleを50にして見やすくする
首向け
head制御だけだと、実は首元が回ってない
neck_01の方を回してみよう
Controlはheadと同じものを使う
「neck_01の回転によって、headがControlの方を向いている」という挙動を目指す
Debug Lineは、neckを制御することでHeadノードがちゃんとControlを見ているのかの確認用
neck_01としている所をspine_02にすれば胴向け処理となる
Aim骨の子からheadまでの骨にAnimationが付いている場合ずれる
その場合は一旦初期姿勢に固定しちゃえばよい
やっちゃったらまずい場合もあるので仕様と要相談
例えばAnimStarterPackに入っているAim_Space_Hipは以下のような動きになる
Preview Scene SettingsタブからAnimationを指定できる
For Eachで段階的にAim
胴から首にかけて、段階的にLook Atさせたい
Item Chain + For Each Itemのコンボを使う
For EachノードのratioピンをEvaluate Curveノードに入力することで徐々にAimの効きを強めていく
余談
ABPで使えるLookAtには角度をClampする機能がある
参考:UE4 LookAt機能を使ってGrayちゃんに見つめてもらってみる - Let’s Enjoy Unreal Engine
注目先をClampする仕組みのようだ(AnimationCoreLibrary.cppのSolveAim関数を参照)
Control Rigには今のところ無いっぽい
Rig内でやるか、Aim座標を渡してもらう時にClampしてもらう約束にするかは要件次第かな…