ここはControl Rig機能調査の子頁です
IKを使って右腕を任意の位置に動かしたい
Rig HierarchyからSpaceとControlを作成
詳しくは補助骨制御のページ参照
Spaceを手首位置に持っていくノードを設定
Gizmoをお好みで設定
Spaceを挟まずにいきなりControlを置く手法もある
公式のMannequin Rigはそうなっている
Controlを選択してから手首付近で右クリックしてSet Initial Transform from Closest Boneすればよい
どっちにするかはRigの用途による
特定のSkeletal Meshのみを対象にするRigで、Animationと併用しない場合はSpaceなしでも良さそう
本記事では汎用性重視でSpaceを使うことにする
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はそうなっている
IK処理に加えて、別頁で紹介したTwist制御を行いたい場合、少なくとも2つ方法がある
どちらを採用すべきかは求める機能による
1つは単純に、このIK処理の後にノードを接続する
もう1つは、ABP側で二段階Control Rigを通す
こういうノードもある
このノードは単にTransformだけでTwoBone IK計算されるようだ
Basic IKノードでは計算結果は自動的に設定対象の骨に反映されるが、そうしたくない時に役立ちそう