STONEのブロマガ

手首などのIKについてざっくり

2016/08/20 08:19 投稿

コメント:2

  • タグ:
  • 登録タグはありません
手首などのIKについて
IKは難しいとよく聞くのでざっくり書いてみます。
あくまで自分が理解してる範囲で初心者に向け
分かりやすく書いているつもりです。
   間違いがあるかも知れませんがご容赦ください。

読むのがめんどくさい人は下記の実用例まで読み飛ばしてください。
------------------------------------------------------------------------------
そもそもIKとはなんぞや?
IKとはinverse kinematics(インバースキネマティクス)の略称です。
キネマティクスとはざっくり運動という意味
インバースは逆の意味
つまり逆に動かす制御法って意味です。

で、ここで疑問なのが何が逆??なのよってことです。
あまり頻繁には使われませんが普通の親子構造の制御方法はFKと言います。
FK(フォワードキネマティクス)
フォワードは前方とか先という意味ですから
単純に言うと先(上)にあるものから処理していくという意味です。
IKはFKの逆って意味ですね。

MMDも当然この制御に則っています。要はBONEの並び順に処理するってことで
単純に言うと子供は親の動きをに引き継ぐということです。
でも、世の中そんなに甘くはありません。
子の動きを親に伝えようとする反抗期の子がいるわけです。
MMDだと脚がそうです。
太もも>ひざ>足首 という流れが親子関係ですが
モーションをつける際には
足首>膝>太ももと連動したほうが圧倒的に制御しやすいです。
これを実現するのがIKです。

しかし問題があります。
親の情報を子に伝える、子の動きを親に伝える。
すると親が動くので子もそれに合わせて動いてしまう。
これでは本来の位置がどんどんずれていきます。
なので親が動いて子が動いてまたそれに合わせて親が動く、何度か繰り返す。
こうやって親子の位置を相談して正しい位置に歩み寄るわけです。
でこの相談を何回やるかで精度が変わります。
それがIKの設定にあるLOOPです。
指定された回数だけ親子会議が行われるってことですね。

前ふり長くなりました…。
------------------------------------------------------------------------------
IKの機能というか効果
IKで得られる効果は以下のものです。
①ターゲットの位置(向き)の追従(ターゲットの回転は引き継がない)
②親の動きはFK同様引き継ぐ

IKとは本来はアニメーションをつけやすくする為の機能ですが
上記の機能は応用範囲が広いです。
ほかの3DツールにあってMMDにない機能はたくさんありますが
その中でも何かに拘束する機能がありません。
これをIKの効果で代用するってことです。


実用例
手首の場合
手首のモーションは手首BONEにつけられています。
ですが実際の人間の手首はX軸の回転はしません
尺骨(しゃっこつ)と橈骨(とうこつ)この2本の骨のねじれ運動です。
実際にはX軸には回転しないはずの手首がX軸回転する為に
MMDの手首はねじキレてしまうような変形をします。
ものすごくイヤーンな状態です。

これを回避する為には肘に手首のX軸回転を伝えてやればいいはずです。
しかし、ひじは親なので子の手首の回転は伝えられません。

ここで重要なのは子には親の動きを伝えられるということです。
肘(親)>手首(子)>肘の付け根(孫)
このような関係を作ってやればいけるんじゃね?っとなるわけです。

ただこうしてしまうと孫の動きは手首の動きを引き継いでるので
手首に合わせて動きまくります。
なので手首の付け根の位置は肘に固定してやろうというわけでIKを使って固定します。

つまり孫の動きはこうなります。
親である手首の回転は引き継ぐ。
位置は親の親である肘の位置に固定される。
こうすることで孫である手首付け根の見た目上の動きは
手首のX軸回転だけ引き継ぐことになります。
概念を図解すると下記のようになります。

①通常の構造
 肘>手首


②階層構造案
肘>手首>肘の付け根


③IK追加後の見た目
肘>(肘の付け根)>手首


こうすることで親子関係は守りつつ擬似的に親に子の動きを伝達し
見た目は手首の動きを肘に伝えたように動くわけです。

ざっくり書きましたがなんだかわかりにくいですね。。。
具体的な設定はサンプルをパクってしまえばOKで
まずは何をしたいのかだけ理解すればいいと思います。

あくまで初心者向けのつもりで書きましたので問題あればご指摘ください。

IKについて
IKは難しいとよく聞くので使い方をまとめます。
あくまで自分が理解してる範囲で分かりやすく書いているだけなので間違いがあるかも知れませんが
ご容赦ください。
その1そもそもIKとはなんぞや?
IKとはinverse kinematics(インバースキネマティクス)の略称です。
キネマティクスとはざっくり運動という意味
インバースは逆の意味
つまり逆に動かす制御法って意味です。
で、ここで疑問なのが何が逆なのよってことです。
あまり頻繁には使われませんが普通の親子構造の制御方法はFKと言います。
FK(フォワードキネマティクス)
フォワードは前方とか先という意味ですから
単純に言うと先(上)にあるものから処理していくという意味です。
IKはFKの逆って意味ですね。
MMDも当然この制御に則っています。
要はBONEの並び順に処理するってことで
単純に言うと子供は親の動きを完全に引き継ぐということです。
でも、世の中そんなに甘くはありません。
反抗期の子供がいるわけです。
MMDだと脚がそうです。
太もも>ひざ>足首 という流れが親子関係ですが
モーションをつける際には
足首>膝>太ももと連動したほうが圧倒的に制御しやすいです。
これを実現するのがIKです。
しかし問題があります。
親の情報を子に伝える、子の動きを親に伝える。
すると親が動くので子もそれに合わせて動いてしまう。
これでは本来の位置がどんどんずれていきます。
なので親が動いて子が動いてまたそれに合わせて親が動く、何度か繰り返す。
こうやって親子の位置を相談して正しい位置に歩み寄るわけです。
でこの相談を何回やるかで精度が変わります。
それがIKの設定にあるLOOPです。指定された回数だけ親子会議が行われるってことですね。
前ふり長くなりました。
その2IKの機能というか効果
IKで得られる効果は以下のものです。
①ターゲットの位置(向き)の追従(ターゲットの回転は引き継がない)
②親の動きはFK同様引き継ぐ
IKとは本来はアニメーションをつけやすくする為の機能ですが
上記の機能は応用範囲が広いです。
ほかの3DツールにあってMMDにない機能はたくさんありますが
その中でも何かに拘束する機能がありません。
これをIKの効果で代用するってことです。
その3実用例
手首の場合
手首のモーションは手首BONEにつけられています。
ですが人間の手首はX軸の回転はしません。
実際は尺骨(しゃっこつ)と橈骨(とうこつ)この2本の骨のねじれ運動です。
実際にはX軸には回転しないはずの手首がX軸回転するために
MMDの手首はねじキレてしまうような変形をします。
これを回避する為には肘に手首のX軸回転を伝えてやればいいはずです。
しかし、ひじは親なので子の手首の回転は伝えられません。
ここで重要なのは子には親の動きを伝えられるということです。
肘(親)>手首(子)>肘の付け根(孫)
このような関係を作ってやればいけるんじゃね?っと気づくわけです。
ただこうしてしまうと孫の動きは手首の動きを引き継いでるので手首に合わせて動きまくります。
なので手首の付け根の位置は肘に固定してやろうというわけでIKを使って固定します。
つまり孫の動きはこうなります。
親である手首の回転は引き継ぐ。
位置は肘の位置に固定される。
こうすることで孫である手首付け根の動きは手首のX軸回転だけ引き継ぐことになります。
概念を図解すると下記のようになります。
こうすることで親子関係は守りつつ擬似的に親に子の動きを伝達します

コメント

姫慈凪颯Ⅱ
No.1 (2016/08/20 10:06)
ブログ更新お疲れ様ですぅヾ(´ー` )ノ
なんか、わかった気になりました…ヾ(;´ω`A了 セ 了 セ
モデルさん弄って遊んでみますぅo(^-^o)(o^-^)o
STONE (著者)
No.2 (2016/08/20 11:11)
もう少しわかりやすく書けそうな気はしますが
それはまたいずれ。
コメントを書き込むにはログインしてください。

いまブロマガで人気の記事