RealSesne SDKでは表情の検出機能があり、目や口の開閉度を取得できます(Kinect SDK v2でも同様の機能があります)。Unityでは3Dモデルに設定されたブレンドシェイプの操作をサポートしています。ブレンドシェイプについてはぐぐってもらうほうが確実ですが、表情をより簡単に調整できる3Dモデルの機能という認識です。
このパラメータをUnityのスクリプトから制御できるので、RealSesne SDKで取得したパラメーターと対応させることで、動かすことができます。
Unityちゃんの場合、目や眉、口にブレンドシェイプが設定されています。
例えばUnityちゃんの「Character1_Reference」を開いていくと「EYE_DEF」という目の定義があります。
ここにSkinned Mesh Rendererというのが割り当てられており、「BlendShapes(ブレンドシェイプ)」が定義されています。この数字を変えることでUnityちゃんの表情が変化します。
この値をスクリプトから変化させるにはSkinnedMeshRenderer.SetBlendShapeWeight()を呼び出します。
例えばFaceMoveというスクリプトを用意し、次のように記述します。
3つのSkinnedMeshRendererのフィールドを用意し、口と目、眉を設定させます。
Update()ではRealSesne SDKから取得した、口と目の開閉度合いから、それぞれのブレンドシェイプの値を更新します。これによってUnityちゃんの表情が変化します。