RealsenseSDKとWEBカメラでキャラクターになりきる

  • 12
    いいね
  • 0
    コメント

前回(http://qiita.com/akihiro01051/items/3146b9a377bf360f58f5) の続き

前回はRealsenseSDKの顔認識の情報をUnityで取得する方法を説明しました.
今回は実際にキャラクターになりきるために
- ユニティちゃんモデル
- MMD4Mecanimでインポートしたモデル
の設定について説明します.

なお各モデルの頭の移動にはFinalIK($90)を利用しています.
FinalIKがなくても自力で頑張ればなんとかなると思います.

ユニティちゃんになりきる

下準備

  1. ユニティちゃんFinalIKをインポートする.

  2. Realsen SDKとWEBカメラを使うためのunitypackageをインポートする.
    ここに置いておきます.Downloads
    注. sampleが動作するか確認してください.

  3. ユニティちゃんを動かすためのスクリプトをインポートします.FaceUnityChan.cs

  4. UnityChan/Modelsのunitychanを新しいSceneに配置して,先ほどダウンロードしたFaceUnityChan.csをunitychanに配置します.
    unitychan_model_set.png

頭の位置の設定

FinalIKを利用してモデルの頭を移動させます.
しかしFinalIKでは頭だけの移動はできないため,FullBodyBipedIKの肩の移動によって頭を移動させます.
1. Scene上にunitychanの両肩を動かすためのGameObjectを2つ配置します.
 GameObjectはunitychanの両肩付近にそれぞれ配置し,その2つのObjectの親GameObjectをtargetとして配置します.
unitychan_set_head_target.png
*見やすくするために肩のGameObjectにSphereを入れてます.

  1. Scripts/RootMotion.FinalIK/IK/FullBodyBipedIKをunitychanに配置します.
  2. 先ほど配置したFullBodyBipedIKのLeftArmとRightArmのShoulder EffectorのTargetに両肩に配置したGameObjectをそれぞれ割り当てます.
    ついでにPosition Weightも1にしておきます.

  3. 最後に両肩に配置したGameObjectの親ObjectをFaceUnityChanのTargetに配置します.
    unitychan_set_unitychan_target.png
     * RightArmも同様に設定します.

頭の回転の設定

HeadまたはNeckを回転させることで頭を回転させます.
頭の位置とは別の動きになるためFinalIKは使わずに動かします.
1. 顔を向ける方向を指定するためのObjectを顔の正面に配置します.
2. 配置したObjectをunitychanのFaceUnityChanのHeadtargetに配置します.
3. 顔を動かすためにFaceUnityChanのModelheadにunitychan以下のCharacter1_Neckを配置します.
unitychan_set_unitychan_facetarget.png

表情

ユニティちゃんの表情はBlendShapeにて変化させます.
unitychanのFaceUnityChanの
- EyE_skinnedにEYE_DEF
- El_skinnedにEL_DEF
- Mo_skinnedにMTH_DEF
- Br_skinnedにBLW_DEF
を追加します.
unitychan_set_unitychan_morph.png

なりきってください.


MMD4Mecanimを使ってキャラクターになりきる

基本的にはユニティちゃんと同じです.
こちらがMMD4Mecanim用のコードです.FaceMMD.cs

顔の移動と回転のために空のObjectを配置した後,ユニティちゃんと同様にFaceMMDに配置していきます.
FaceMMDのModelheadに関してはjoint_Headで大丈夫だと思います.
表情に関してはFaceMMD.csの中を見て適当なものに変更してください.

unitychan_set_mmd.png

動きが速すぎたりした場合には,各Objectの配置やコードの中を変更したりしていい感じの動きにしてください.

なりきってください.


まとめ

RealsenseSDkとWEBカメラを用いてUnity上でキャラクターになりきれました.
実況動画とかに使えると楽しそうです.
3DのモデルだけでなくLive2Dなどのモデルなどにも応用できそうです.
またハンドトラッキングが行えるLeapMotionを用いることで,さらになりきり度合いが高まります.
参考(http://qiita.com/afjk/items/e2c9617e937528feba6e)

ユニティちゃんライセンス

この作品はユニティちゃんライセンス条項の元に提供されています