2016年10月13日木曜日

dlibで顔認識して、leap motionで手の動きとって、unityの人体モデルを動かしたよ!

ひみつのクエリちゃん


前回までのあらすじ


美少女の中の人になる、全人類の夢ですよね?<一部男子の間違いw

以前 @goroman さんが紹介していたのfacerig、凄かったです。
https://twitter.com/GOROman/status/686408594674159616

全身モーションキャプチャなんて、凄いですよね、Perception Neuron一度試してみたい!
https://kila.amebaownd.com/

その後に utibenkei さんがunityでFaceRig使って、先こされました!
http://qiita.com/utibenkei/items/15925db826721f6bb00c

先日のcedecでは @warapuri さんが作っていたKinect使ったpepper君の制御、感動しました!
https://twitter.com/warapuri/status/768611348062277632

で、自分もクエリちゃんで色々動かせるようになってきたので、ブログにまとめる事にしました。
(このタイミングで、マスコットアプリ文化祭にも提出予定です。)

動画はその内ちゃんとしますが、以前撮ったtwitterのやつ付けておきます。
(今見ると動きがキモイです…面目ない)

12/31 本日アップデートしました、ノーマルバージョン、ハロウィンバージョンに続き、クリスマスバージョンも追加しました。

技術情報

  1. 手の動きの取得 leap motion
    • leap motion orion ってすっごい認識精度ですよね。
      あれ使って手の動きと、手のモデル表示しています。
      今回は、VRではないので頭の前にleap motionをマウントできません。
      なので、胸に付けて使っています、ネックマウントleap motion!
    • https://www.leapmotion.com/?lang=jp
  2. 人体モデルの制御 SAFullBodyIK
    • leap motionから拾った座標を、手首から上の腕のモデルの制御で使っています。
      あ、unity asset の FinalIK でもいいかもです、いつか買って試したい。
    • http://stereoarts.jp/
  3. 顔の位置の取得 dlib
    • ノートパソコンなどのwebカメラで自分の表情が映るようした時に、
      上記SAFullBodyIKに、首の座標をunityのassetのdlibで解析した値で制御しています。
      微妙に反応悪いのは、フルタイムで反映すると誤差でブルブル震えてたからです…。
    • https://www.assetstore.unity3d.com/jp/#!/content/64314

  4. 顔の表情の取得 OpenCV dlib
  5. 顔の表情の変更 Query-chan
    • こちらはクエリちゃん使った事ある方ならもう説明不要ですよねw
      残念ながら顔の表情のモーフとか無いので、目パチと口パクだけテクスチャ制御で対応しています。
    • https://www.assetstore.unity3d.com/jp/#!/content/20031
  6. ボイス追加
    • 本当ならマイク+ボイスチェンジャーで中の人になるべきだったのですが、
      クエリちゃん付属のボイスを鳴るようにしておきました、声に合わせて演技するカンジで
    • http://query-chan.com/
  7. ローパスフィルタ追加(12/31)
    • 本日差し替えた実行ファイルでは、顔の座標にローパスフィルタを追加しました。
      移動時のブルブルが減っています。<カメラから拾った輪郭が安定しない為?
    • 以下、goroman氏のtwitterより

ダウンロード


とりあえずgoogle driveに置きました。
「ひみつのクエリちゃん」
「ひみつのクエリちゃん」<12/31更新しました。
(unityから出力した、windowsのx86_64x86のexeファイルです)

試す際は、一応実行前にウィルスチェックお願いします。
leap motionの実行時に最新のドライバが必要です。

某くまのぬいぐるみに話しかけるやつをまねて名前付けてみたのですが、わかりずらかったかも?
遠隔地から映像だけ送れば、子供とか騙せないかな~<まだ不自然すぎて無理だろw

webカメラがあれば、頭の位置と表情だけは反応すると思います。

ネックマウントleapmotionですが、unity上で以下のようにおいてあります。

この写真の様に、首から下の胸あたりから正面向いて配置されると正しく認識します。

その際、leap motionを胸に置かないといけないので、ヤケドしないように気を付けてください。
(テーブルの上に設置するやり方、leapmotion orionでもできるならいつか試してみたい。)



使用した unity asset







謝辞


クエリちゃんのモデル、いつもデータ使用させていただいています、ありがとうございます。
"Query-Chan model" by Pocket Queries, Inc. is licensed under a Creative Commons Attribution 4.0 International License(CC-BY).


0 件のコメント:

コメントを投稿