UnityARKitPlugin FaceTracking FaceBlendshapeで取得できるパラメーター

FaceBlendshape とは

顔の各部位の状態を取得できるAPIのこと。
取得した各部位の値を元にして顔の位置に配置した3Dモデルの表情を動かしたり、
コントローラーの代わりにすることができる。

Note. 顔の各部位の状態は取得できるが、各部位の位置の取得はできない?

iOS ARKitのリファレンス

https://developer.apple.com/documentation/arkit/arfaceanchor.blendshapelocation

Unity ARKitPlugin Blog

https://blogs.unity3d.com/jp/2017/11/03/arkit-face-tracking-on-iphone-x/

Unity ARKitPlugin でのBlendshapeの取得方法

Start() で UnityARSessionNativeInterface.ARFaceAnchorUpdatedEvent にメソッドを登録

void Start() {
    ()
    UnityARSessionNativeInterface.ARFaceAnchorUpdatedEvent += FaceUpdated;
}

登録したメソッドでFaceトラッキングの変更通知を受け取り、ARFaceAnchorからblendShapeを取得

void FaceUpdated(ARFaceAnchor anchorData) {
   Dictionary<string, float> currentBlendShapes = anchorData.blendShapes;
}

取得したDictionaryに下記のパラメータキーでそれぞれの値がとれる。

パラメータについての注

L,Rはカメラに写った像の右左に対するパラメーター。
ARKitでディスプレイに表示される映像は鏡に写ったように表示されるので、実際の右左とは逆のパラメーターになる

In the naming of blend shape coefficients, the left and right directions are relative to the face. That is, the eyeBlinkRight coefficient refers to the face's right eye. ARKit views running a face-tracking session mirror the camera image, so the face's right eye appears on the right side in the view.

パラメーターキー 顔の部位 ARKit 備考
browInnerUp 両眉の内側部分の上方向への動き 詳細
browOuterUp_L 左眉の外側の上方向への動き 詳細
browOuterUp_R 右眉の外側の上方向への動き 詳細
browDown_L 左眉の外側の下方向への動き 詳細
browDown_R 右眉の外側の下方向への動き 詳細

パラメーターキー 顔の部位 ARKit 備考
eyeBlink_L 左目瞬き 詳細 開いていると0(に近づき),閉じていると1(に近づく)
eyeBlink_R 右目瞬き 詳細 開いていると0(に近づき),閉じていると1(に近づく)
eyeWide_L 左の瞼の広がり→左眼の開き具合 詳細
eyeWide_R 右の瞼の広がり→右目の開き具合 詳細
eyeLookDown_L 左目の下方向への視線 詳細
eyeLookDown_R 右目の下方向への視線 詳細
eyeLookIn_L 左目の右方向への視線 詳細
eyeLookIn_R 右目の左方向への視線 詳細
eyeLookOut_L 左目の左方向への視線 詳細
eyeLookOut_R 右目の右方向への視線 詳細
eyeSquint_L 左目周辺の顔の収縮具合 詳細
eyeSquint_R 右目周辺の顔の収縮具合 詳細
eyeLookUp_L 左目の上方向への視線 詳細
eyeLookUp_R 右目の上方向への視線 詳細

パラメーターキー 顔の部位 ARKit 備考
noseSneer_L 左の鼻孔周辺の上方向への移動 詳細
noseSneer_R 右の鼻孔周辺の上方向への移動 詳細

パラメーターキー 顔の部位 ARKit 備考
cheekPuff 両頬の外側への動き 詳細
cheekSquint_L 左頬の周辺の上方向への移動 詳細
cheekSquint_R 右頬の周辺の上方向への移動 詳細

パラメーターキー 顔の部位 ARKit 備考
mouthRollLower 下唇の口内への動き 詳細
mouthRollUpper 上唇の口内への動き 詳細
mouthPucker 唇の収縮 詳細
mouthShrugLower 下唇の外側への動き 詳細
mouthShrugUpper 上唇の外側への動き 詳細
mouthClose 唇の開閉(顎の位置に依存しない) 詳細
mouthFunnel 開いた口の収縮 詳細
mouthLowerDown_L 左側の下唇の下方向への動き 詳細
mouthLowerDown_R 左側の下唇の下方向への動き 詳細
mouthUpperUp_L 左側の上唇の上方向への動き 詳細
mouthUpperUp_R 左側の上唇の上方向への動き 詳細
mouthDimple_L 口の最左端の後方への移動 詳細
mouthDimple_R 口の最右端の後方への移動 詳細
mouthPress_L 左側の下唇の上方向への収縮(移動) 詳細
mouthPress_R 右側の下唇の上方向への収縮(移動) 詳細
mouthStretch_L 口の最左端の左方向への動き 詳細
mouthStretch_R 口の最右端の右方向への動き 詳細
mouthLeft 唇の左方向への動き 詳細
mouthRight 唇の右方向への動き 詳細
mouthSmile_L 口の最左端の上方向への動き 詳細
mouthSmile_R 口の最右端の上方向への動き 詳細
mouthFrown_L 口の最左端の下方向への動き 詳細
mouthFrown_R 口の最右端の下方向への動き 詳細

パラメーターキー 顔の部位 ARKit 備考
jawOpen 下顎の開閉 詳細
jawForward 下顎の前方向への動き 詳細
jawLeft 下顎の左方向への動き 詳細
jawRight 下顎の右方向への動き 詳細

メモ

ARKitのリファレンスでは

ranging from 0.0 (neutral) to 1.0 (maximum movement).

とあるが、どう頑張っても1にならないパラメータがある。
顔の作りによって取得できやすいパラメータがあるのかもしれない。

Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account log in.