[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の効きを強めていく

余談