こんにちはっ🌟八ツ橋まろんです。
VR機器や、SONYのmocopiなど、個人でもモーションキャプチャができる時代になり、3Dで映像・アニメを作ろうという人が少しずつ増えてきているんではないかと感じる今日この頃ですが、やはりOptiTrackなどの業務用モーションキャプチャに比べると貧弱なので、モーションデータを修正したほうが綺麗になります。
その中でも、個人環境で撮ったモーションは『アクターは直立しているがキャラクターは膝が曲がっている』ということが起きがちです。
Unityで映像を作る際は、こちらのQiita記事に書いているように、Unity標準のFoot IKによってモーションキャプチャ特有の足すべりを防止してくれる一方で、そのためにより一層膝が曲がりやすくなります。
この膝曲がりを解消するべく、膝を伸ばすためのスクリプトを作りました。
支援者限定で、こちらで配布しています。
動作原理はこちらのFANBOX記事でも解説していますが、キャラクターの足の位置をIK処理によって任意の高さだけ下げ、その分キャラクター全体の位置を上げます。
使い方が少し特殊なので、以下をよく読んでお使いください。
スクリプトの使い方
このスクリプトはモーション修正作業向けのスクリプトで、Unityエディタ上で使用することを想定しています。
①UnityのTimeline機能を使い、キャラクターにモーションを適用します。
この時、Foot IKをONにしておくと、足滑りが小さくなるのでお勧めです。
②キャラクターにMaron Foot IKスクリプトを付けます。そしてキャラクターのAnimatorに、同梱のAnimator Controller(IK Pass)をアタッチします。
IK PassというAnimator Controllerは、IK Passの項目にチェックを入れただけの単純なAnimator Controllerです。(よくわからない人は、わからないままでも大丈夫です)
ここにチェックが入っていると、Unity側でキャラクターにOn Animator IKという処理がされます。Maron Foot IKでは、このOn Animator IKの処理時に膝を伸ばす処理をするようにしています。(わかる人は、IK Passにチェックを入れた別のAnimator ControllerでもOKです)
Maron Foot IKを使うときは、Animatorに特定のAnimator Controller(同梱のIK Pass)をセットすると覚えておいてください。
④Maron Foot IKスクリプトで補正したい高さを指定し、Timelineを再生すると高さ補正が適用されます。
キャラクターの足の位置を補正分だけ下げた後、キャラクター全体のTransformを補正分だけ上げることで、膝を伸ばしています。0~0.2m(20cm)まで補正できます。例えば下の図は、0.03(3cm)の補正をします。軽く曲がった膝はこのくらいで直せます。
膝を伸ばす補正はシーン再生中ならいつでも適用されます。シーン再生中じゃないときは、Timelineを動かした時に適用されます。
(厳密には、キャラクターのアニメーションが更新されたときに適用されます)
膝の補正をした状態で、Final IKやEasy Motion Recorderを使って再度モーション収録を行うと、膝が伸びたモーションが完成です。
ぜひ使ってみたください🌟
それではっ
追記:既知のバグとして、シーン再生中かつ、Timelineが停止した状態またはキャラクターがなんのアニメーションもしていない状態だと、毎フレーム補正がかかって無限に上昇してしまいます。残念ながら私には直せないバグです。シーンを終了すれば元に戻ります。