すっかり更新頻度も下がってますが生きてます。
そして会社を辞めました。明日からまた別の会社で働きます。
退職エントリとかは書きません。
さて、最近ちょっと僕の中でプロシージャルアニメ周りが流行っており、勉強用に UE4 向けの Fullbody IK プラグインを書いてみました。
Fullbody IK とは
人間やロボットは各関節を曲げることで手先等の末端位置を制御します。
根本の関節角度が変わればその先の関節位置が全て変わるため、通常は根本から順番に関節位置を計算して末端の関節位置を決定します。
これを 順運動学(Forward Kinematics:FK) と呼びます。
しかし、ある特定の位置に末端の関節を移動させたい場合に順運動学のみで考えると、関節が無数にあるためどの関節をどれくらい動かせば良いのかがわかりません。
そこで末端の関節位置を決めた上で、そこから逆算して各関節をどれだけ曲げれば良いのかを求めるのが 逆運動学(Inverse Kinematics:IK) です。
IK に関しては用途別にいくつかの手法がありますが、Fullbody IK はヤコビ行列を用いて IK で制御する関節を全身に広げた手法で、計算負荷は他の IK と比べて高いものの、より自然な姿勢を表現することができます。
Fullbody IK の理論
しっかり噛み砕いて説明しようとすると長くなってしまうので、今回は参考にしたページや書籍の紹介に留めます。
ロボット制御基礎論 - 吉川恒夫
キネマティクスはロボットの分野で発展してきました。
1988年(僕が生まれた年…!)に発行された書籍ですが、運動学から動力学、その他と非常に詳しい解説が載っているため、今でも参考になります。
詳しく学びたい方にはおすすめです。
マニピュレータ - 東北学院大学 機械知能工学科
http://www.mech.tohoku-gakuin.ac.jp/rde/contents/course/robotics/manipulator.html
マニピュレータ(腕ロボット)について噛み砕いた解説が載っています。
ヤコビアンを用いた逆運動学 - 東海大学 情報通信学部 情報メディア学科
http://mukai-lab.org/wp-content/uploads/2014/04/JacobianInverseKinematics.pdf
逆運動学に関する詳細な説明とサンプルプログラムが載っています。
こちらの研究室 には他にも色々と参考になるページがあるので参考にさせてもらってます。
Computer Graphics Gems JP 2012 - 向井 智彦 他
上記の逆運動学に関する記事を書いた向井さんが IK について書かれています。
サンプルコードも載っているため、こちらが一番取っ付きやすいかもしれません。
プラグインの対応状況
現状は下記エフェクタに対応しています。
- 位置固定(KeepLocation)
- 角度固定(KeepRotation)
- 位置・角度固定(KeepLocationAndRotation)
- 元ポーズ位置追従(FollowOriginalLocation)
- 元ポーズ角度追従(FollowOriginalRotation)
- 元ポーズ位置・角度追従(FollowOriginalLocationAndRotation)
もう少し期間があれば CEDEC 2011 でコーエーが発表した重心制御やまで組み込みたかったのですが、とりあえず有給消化が終わるのでベータ版として公開しています。
使い方も正式版として公開することになれば書きますが、とりあえずのベータ公開なのでデモを参考にしてもらえればと。
WIP 動画
WIP。今までは位置指定エフェクタのみの対応だったけど、位置&角度指定エフェクタを追加した。 #UE4 pic.twitter.com/gMvGHv7Srb
— ほげたつ (@HogeTatu) 2017年8月30日
WIP。オフセットエフェクタに対応した。これで単一のアニメーションからインタラクティブな変化を付けられる。左が元アニメーションで、右が Fullbody IK を利用した下段攻撃。 #UE4 pic.twitter.com/jsCpFuPQGi
— ほげたつ (@HogeTatu) 2017年8月30日
UE4 向けの Fullbody IK プラグイン(β版)を公開しました - ほげたつブログ https://t.co/0rDFgvSsau #UE4 pic.twitter.com/pxZ19q6BBP
— ほげたつ (@HogeTatu) 2017年8月31日
もし何かあれば
Twitter で声掛けて下さい。
ほげたつ (@HogeTatu) | Twitter