店舗接客などに使える仮想のキャラクターが扱えるアプリ開発をしました。そちらの説明はこちらになります。
https://qiita.com/NestVisual/items/fe4dd168178e27156682
環境:
Windows 10
Unity 2018.4.1
RealSense D435i
フェイストラッキングで顔を操る:
フェイシャルトラッキングをキャラに反映するときには、顔のデバッグデータの表示と同じ方法で行いました。Nuitrackの「FaceInfo」クラスは顔の表情データも含まれています。最初にテストしてみましたが、ニュートラル、怒り、驚き、幸せの表情に限定されています。さらに、自分の顔から「ニュートラル」と「怒り」以外の表情データの取得精度が低いと思いました。
Nuitrackの表情の代わりに顔の目印データから自分の顔の表情を計算してみました。例えば、目が閉じているかどうかを確認するために、目の上と下のような特定の点間の距離を測定しました。距離が一定の閾値以下であれば目は閉じているとみなされ、そうでなければ開いているとみなされます。
キャラモデルには「Face」というチャイルドオブジェクトがあり、「Skinned Mesh Renderer」コンポーネントが接続されています。このコンポーネントには、ブレンドシェイプの配列が含まれています。それぞれが個別の表情を操作します。顔の表情は、インスペクタのスライダーを使ってスムーズにブレンドできます。表情の優劣に応じて、0~100の値を設定できます。また、コードを使ってこれらの値を操作することもできます。このようにして、利用者の表情を動的にキャラに反映させています。VRoidモデルを使うと、モデルに付随するブレンドシェープしか使いません。