Edited at

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

More than 1 year has passed since last update.


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にならないパラメータがある。

顔の作りによって取得できやすいパラメータがあるのかもしれない。