2014年05月12日

UnityでIKを知る

私はこれまでいわゆる人物をUnityで使用することは無かったのですが、今後必要になってくると思うので色々と勉強することにしました。

人物の制御をUnityで行う場合、Mecanimと言う仕組みがありますがその中にIKと言う機能があります。

IKとは何なのか?
IKはインバースキネマティクスの略でそれだけだと何のことやらさっぱりという方が多いと思います。私もそうでした。
通常キャラクターを動かす場合、関節をそれぞれ曲げたりねじったりして動きを出すわけです。例えば肘を90°曲げるとか、手首を30°回転させるとかそんな感じですね。これをFK(フォワードキネマティクス)といいます。
IKと言うのは例えば、手のひらの位置を顔の正面から30cmの位置に持ってきたいとか、足を前方50cm高さ15cmの位置に持って行きたいというような目的のある動作を自動的に計算して関節の動きを計算してくれる機能です。

さて、Mecanimとは言うもののUnity上にMecanimと言う名前で機能が登場してきません。これは良くないことだと思うのですが、Unity上ではAnimatorと言う名前で登場します。初心者の人はここで躓くこともありそうです。

インバースキネマティクス (Unity Proのみ)
このオフィシャルの説明で理解できる人はかなりハイパーな人だと思います。
まずIKを使える条件ですが、「メカニムで正しく設定されたアバターのある【ヒューマノイド キャラクター】においてサポートされます。」と書かれています。
つまり、MecanimでHumanoidに正しく設定されたモデルでないとIKそのものが使えないということになります。これは重要です。今はユニティちゃんのような使いやすいモデルがあるので、まずはそれらを使って学習するのが良さそうです。

以下の動画ですが、これはFinalIKと言ってAssetStoreで販売されているものです。
MecanimのIKはここまで高機能ではありませんが、IK動作のイメージが最もよく分かる動画だと思います。


AnimatorでIKを動かす手順ですが、以下の通りです。
基本的なスクリプトは理解している前提で書いてます。

1.Mecanim(Animator)でHumanoidが正しく設定されたモデルデータを用意する。Unityちゃんでいいと思います。

2.サンプルシーンのモデルのAnimatorの中にControllerと言う項目があるので、ダブルクリックしてAnimatorを開きます。
WS000000.JPG

3.BaseLayerにIK Passの項目があるのでチェックを入れます。
WS000001.JPG

4.スクリプトのOnAnimatorIKでIK処理を呼び出します。

OnAnimatorIKの中で何が出来るのか。簡単に説明します。
基本はanimator.の後に続くメソッドで処理を行います。

【SetIKRotationとSetIKPosition】
この2つのメソッドで出来るのは、LeftFoot.LeftHand,RightFoot、RightHandの制御のみです。つまり両手両足の制御を行うためだけのメソッドです。これに合わせてSetIKPositionWeightと言うメソッドを組み合わせてIKの適用度を指定します(0適用なし→1MAXのように使います)

それ以外はどうすんの?それ以外はSetLookAtPositionと言うメソッドがあります。
SetLookAtPositionはVector3を引数に持ちますので、単純にその方向を向くということになります。
こちらも同じく、SetLookAtWeightという適用度を指定するメソッドと合わせて使用します。

【引数】
SetLookAtWeight(全体の適用度、体の適用度、頭の適用度、目の適用度、クランプ値)
0だと適用度0で1だと100%になります。
クランプ値で行き過ぎたりしないように途中で停止させる事ができます。


続きます(未定)


posted by iworks2013 at 11:55| Comment(0) | Unity

2014年04月01日

秋葉原のG-Tune:Garageで公開中

IMG_8618.JPG

2014/4/1現在、秋葉原の「G-Tune:Garage」にてUnityCoasterのG-Tuneバージョンを体験できます。
Ocufesとしてソフトを提供いたしました。これで私も立派なOcufesメンバーに!?

気になったのはなんとなくフレームレートが低いような気がしたことです。
Unityの特性なのかバグなのか分かりませんが、ウィンドウモードだと高速なのに全画面にすると遅くなる現象が見受けられます。(WinMac共に)
このへんは今後の課題になりそうな予感。
posted by iworks2013 at 00:00| Comment(0) | oculus

2014年03月09日

近況

年明けに1エントリ書いたきり書くの忘れてました。

1月に秋葉原で第9回Ocufesに参加させていただきました。
そちらではUnityCoasterを出展させていただきましたが、100名をはるかに超える方に体感頂きました。
ありがとうございます。

昨日はお台場のヴィーナスフォートで開催された第10回Ocufesに半ば手伝い的な感じで参加いたしました。
だいぶ関係者が多い気がしましたがw、けっこう盛況だったと思います。

また、今月末はVR開発者の会合、裏Ocufesにも参加致します。交通費ががが。

ついでですが、昨日最新アプリのブレインウォールズが配信開始となりました。
見たまんまですが、とんねるずのみなさんのおかげでしたの中のコーナーをそのままゲーム化したような内容です。
アイデアまでは良かったのですが、どのような操作系等にするかで相当難航しました。結局操作性は良くないわけですが(死)
https://itunes.apple.com/jp/app/id820329534

こちらもよろしくお願いいたします。
posted by iworks2013 at 13:36| Comment(0) | 雑談