今日はInverse Kinematics (IK)を使って、ユニティちゃんを上からぶら下げてみたいと思います。
Inverse Kinematics (IK)とは
引用元:Unityユーザーズガイドジョインのポージングを行うタスクを別の視点からとらえることが重要です。空間で特定の点を決めて、そこから逆算してジョイントの向きを、終了点がその位置に到着するような、有効な方法を見つけることです。オブジェクトをユーザにより選択された点をタッチさせる、または平らでない地面に足をつける、といったことをキャラクターにしてほしいときに、これは便利です。このアプローチは Inverse Kinematics (IK)と呼ばれ、メカニムで 正しく設定されたアバターのある ヒューマノイド キャラクターにおいてサポートされます。
Unity Proではスクリプトを使いIKを実現することができます。
インバースキネマティクス (Unity Proのみ) / Inverse Kinematics (Pro only)
今回はFinal IKアセットを使って遊んでみましょう。
Final IKでどういったことができるかはこちらのデモビデオを見てみましょう。ワクワクします。
Final IKを利用して実に様々なことを簡単に実現することができるのですが、今回はDemoシーンを改造して、Unityちゃんを上から吊るすことを実現してみたいと思います。
_DEMOS – FBBIKフォルダ内のPendulumシーンを開いて実行してみましょう。お人形さんがぶら下がっている動きを確認できると思います。
このサンプルは面白い実装をしていて、モデル本体の動きをぶら下げたラグドールの動きに追従させることで、ボクシングしながらぶら下がるアニメーションなどを実現しています。
(ラグドールの一部をIs Kinematicで固定するという実装も試してみたのですが、力を加えると体が伸びたりしてしまいます。なにか解決方法あるのだろうか。。。)
今回は本体のモデルをUnityちゃんに置き換える方法でUnityちゃんを吊るしてみましょう。
Dummyモデルを削除し、unitychan_dynamicをインポートし、下記の画像のように設定を変更します。
実行するとユニティーちゃんがぶら下がるのが確認できると思います。
半透明のDummyを消すにはDummyRagdoll以下のDummyオブジェクトのSkinned Mesh Rendererのチェックを外しましょう。
Leap motionを使って触ってみましょう。