前回(http://qiita.com/akihiro01051/items/3146b9a377bf360f58f5) の続き
前回はRealsenseSDKの顔認識の情報をUnityで取得する方法を説明しました.
今回は実際にキャラクターになりきるために
- ユニティちゃんモデル
- MMD4Mecanimでインポートしたモデル
の設定について説明します.
なお各モデルの頭の移動にはFinalIK($90)を利用しています.
FinalIKがなくても自力で頑張ればなんとかなると思います.
ユニティちゃんになりきる
下準備
-
Realsen SDKとWEBカメラを使うためのunitypackageをインポートする.
ここに置いておきます.Downloads
注. sampleが動作するか確認してください. -
ユニティちゃんを動かすためのスクリプトをインポートします.FaceUnityChan.cs
-
UnityChan/Modelsのunitychanを新しいSceneに配置して,先ほどダウンロードしたFaceUnityChan.csをunitychanに配置します.
頭の位置の設定
FinalIKを利用してモデルの頭を移動させます.
しかしFinalIKでは頭だけの移動はできないため,FullBodyBipedIKの肩の移動によって頭を移動させます.
-
Scene上にunitychanの両肩を動かすためのGameObjectを2つ配置します.
GameObjectはunitychanの両肩付近にそれぞれ配置し,その2つのObjectの親GameObjectをtargetとして配置します.
*見やすくするために肩のGameObjectにSphereを入れてます. -
Scripts/RootMotion.FinalIK/IK/FullBodyBipedIKをunitychanに配置します.
-
先ほど配置したFullBodyBipedIKのLeftArmとRightArmのShoulder EffectorのTargetに両肩に配置したGameObjectをそれぞれ割り当てます.
ついでにPosition Weightも1にしておきます. -
最後に両肩に配置したGameObjectの親ObjectをFaceUnityChanのTargetに配置します.
* RightArmも同様に設定します.
頭の回転の設定
HeadまたはNeckを回転させることで頭を回転させます.
頭の位置とは別の動きになるためFinalIKは使わずに動かします.
- 顔を向ける方向を指定するためのObjectを顔の正面に配置します.
- 配置したObjectをunitychanのFaceUnityChanのHeadtargetに配置します.
- 顔を動かすためにFaceUnityChanのModelheadにunitychan以下のCharacter1_Neckを配置します.
表情
ユニティちゃんの表情はBlendShapeにて変化させます.
unitychanのFaceUnityChanの
なりきってください.
ユニティちゃんにもなれた pic.twitter.com/zPyX6MwK82
— アキヒロ (@akihiro01051) 2016年3月1日
MMD4Mecanimを使ってキャラクターになりきる
基本的にはユニティちゃんと同じです.
こちらがMMD4Mecanim用のコードです.FaceMMD.cs
顔の移動と回転のために空のObjectを配置した後,ユニティちゃんと同様にFaceMMDに配置していきます.
FaceMMDのModelheadに関してはjoint_Headで大丈夫だと思います.
表情に関してはFaceMMD.csの中を見て適当なものに変更してください.
動きが速すぎたりした場合には,各Objectの配置やコードの中を変更したりしていい感じの動きにしてください.
なりきってください.
— アキヒロ (@akihiro01051) 2016年2月28日
まとめ
RealsenseSDkとWEBカメラを用いてUnity上でキャラクターになりきれました.
実況動画とかに使えると楽しそうです.
3DのモデルだけでなくLive2Dなどのモデルなどにも応用できそうです.
またハンドトラッキングが行えるLeapMotionを用いることで,さらになりきり度合いが高まります.
参考(http://qiita.com/afjk/items/e2c9617e937528feba6e)
この作品はユニティちゃんライセンス条項の元に提供されています