関連ブログ
- [UE4][UE5]開発環境の容量を少しでも減らす 2024.08.14UE
- [UE5] PushModel型のReplicationを使い、ネットワーク最適化を図る 2024.05.29UE
- [UE5]マテリアルでメッシュをスケールする方法 2024.01.17UE
CATEGORY
2015.09.17UE4UE/ Animation
こんにちは。ほげたつ(@HogeTatu)です。
前回に引き続き、Foot IKについて書いていきます。
今回は 立っている場所よりも高い位置に足を着こうとするとめり込んでしまう 問題に対する対応です。
LineTraceを用いて足と地面のめり込みを検出するため、スケルタルメッシュにソケットを追加します。
アクターのZ値から、両足の内でより低い位置にある足のZ値までトレース処理を実施します。
これにより各足の地面からのオフセット値が取得できます。
この処理はアニメーションBP内からアニメーションを更新する度に呼び出します。
UpdateFootIK … 各足の地面からのオフセットを更新する
TryGetFootOffset … 各足のトレース処理
ボーンを制御する際はアニメーションBP内で TwoBoneIK 等を実行します。
TwoBoneIK ではいくつかのパラメータを指定できます。
ここでは、今回変更したパラメータを説明します。
IKBone | 制御対象のボーン | 左足なら foot_l(足首) |
Effector Location Space | IK制御の座標系 | 今回はオフセット値に従って上下させるので、ボーン座標系(BoneSpace)を指定 |
Effector Space Bone Name | IKの先端 | 左足なら foot_l(足首) |
Joint Target Space Bone Name | IK制御時に曲げる関節 | 左足なら thigh_l(膝) |
Joint Target Location Space | IK制御時に曲げる関節制御の座標系 | 今回は固定値になるように、親ボーン座標系(ParentBoneSpace)を指定 |
これで AnimPreviewEditor 内から EditPreview で LeftFootEffectorLocation や RightFootEffectorLocation のX値を変更してあげると、足が上下に動くことをプレビューできるかと思います。
それが確認できたら、EventGraph内で UpdateFootIK の呼び出しと、各足のオフセットを取得して EffectorLocation に指定してあげればIK制御が完了します。
UE4のアニメーション関連はとても充実しており、使いこなせば色々なことができます。
まだまだ試していない機能も多いので、今後も時間を見つけて試していきたいと思います。