[UE4]Control Rig機能調査:IK制御
ここはControl Rig機能調査の子頁です
IK制御
IKを使って右腕を任意の位置に動かしたい
Control設定
Rig HierarchyからSpaceとControlを作成
詳しくは補助骨制御のページ参照
Spaceを手首位置に持っていくノードを設定
Gizmoをお好みで設定
細かい話
Spaceを挟まずにいきなりControlを置く手法もある
公式のMannequin Rigはそうなっている
Controlを選択してから手首付近で右クリックしてSet Initial Transform from Closest Boneすればよい
どっちにするかはRigの用途による
特定のSkeletal Meshのみを対象にするRigで、Animationと併用しない場合はSpaceなしでも良さそう
本記事では汎用性重視でSpaceを使うことにする
IKノード作成
BasicIKノードを使う
Effector Itemに位置指定したい骨を指定(hand_r)
Item Bに↑の親の骨を指定(lowerarm_r)
Item Aに↑の親の骨を指定(upperarm_r)
Propagate to Chidrenを有効に
EffectorにはControlのTransformを入力
Primary AxisでX=-1.0にする
hand_rのX軸が親の方向を向いているため
同じことをhand_lでやる場合はX=1.0のままでよい
肘の向きも指定できるようにしたい
Basic IKノードにあるPole Vectorを使って指定できる
ここでは簡単に、HandRControlのX軸方向に沿って肘が動くようにしてみる
ControlのTransformでLocation=(100,0,0) を変換すると、hand_rの根本方向100cmの位置が取れる
肘がそこを目指すようにする
Pole Vector SpaceはNoneのままにしておく。これでGlobal Spaceという事になる様だ
Basic IKノード選択中、DetailsタブにDebug Settingsの項目が現れる
有効にしておくとPole Vectorの作用がわかりやすくなる
青色がBone A及びBone B、水色がPole Vector
もっと肘位置を細かく制御したい場合は、Pole Target用のControlを別途用意する
公式のMannequin Rigはそうなっている
Control Rig処理の連結
IK処理に加えて、別頁で紹介したTwist制御を行いたい場合、少なくとも2つ方法がある
どちらを採用すべきかは求める機能による
1つは単純に、このIK処理の後にノードを接続する
もう1つは、ABP側で二段階Control Rigを通す
余談
こういうノードもある
このノードは単にTransformだけでTwoBone IK計算されるようだ
Basic IKノードでは計算結果は自動的に設定対象の骨に反映されるが、そうしたくない時に役立ちそう