RealsenseSDKとWEBカメラの顔認識結果をUnityで利用する

  • 19
    いいね
  • 6
    コメント

はじめに

LeapMotionを買ってキャラクターの腕を動かせた

顔もFaceRigみたいにキャラクターに反映させたい


普通のWEBカメラを用いてUnity上のキャラクターに顔の動きを反映させます.
Unityでは一部有料のアセット(FinalIK)を利用していますが,顔を認識させるだけなら必要ありません.
今回はRealsenseSDKからの顔認識情報をUnityにもってくるまでの紹介をします.

準備

使用ツール

RealsenseSDK

Intelによる音声認識,顔認識,3Dスキャンなどを提供しているSDKです.
Realsenseカメラを接続しないと利用できない機能もあるが一部機能は通常のカメラで動作します.
今回は顔認識機能を利用.

プラグインの作成

SampleにあるC#のFaceTrackingでは通常のWEBカメラは利用できませんでした.
C++のデモでは利用可能だったので,C++のdllプラグインを作成してUnityと連携させます.
通常のカメラでは顔の位置と大きさ(Detection),顔の特徴点(Landmark),表情の一部(Expression)を取得可能.
今回はキャラクターに反映させる情報として,顔の位置と回転と表情を取得.
顔の位置はDetectionから取得し,顔の回転に関してはLandmarkから自力で計算させています.

ソースGitHub

Unityとの連携

作成したdllをUnityの/Plugins/x86 or x86_64フォルダにそれぞれ移動し,dllの情報を取得するコードを作成します.

プラグインとサンプルのコードを同梱したファイルを以下に置いておきます.
unitypackage

動作デモ

とりあえず箱になりきる.
unity_demo.png

unitypackageをUnityにインポートしたらFaceTrackingフォルダにsampleがあります.
実行前にカメラデバイスの下図の赤ラインのデバイス番号を設定しておく必要があります.
Realsense R200,F200などdepthセンサを内蔵している場合にはデバイス名がcolorのものを選択してください.
unity_demo2.png

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