iPhone XでFace TrackingしてVRMのモデルを動かす
- 6. UnityでARKitを使う
• Unity ARKit Pluginをインポートする
• Unity ARKit PluginはAssetStoreにて公開されている
• https://assetstore.unity.com/packages/essentials/tutorial-projects/unity-
arkit-plugin-92515
- 7. ARKitによる表情の取得
using UnityEngine.XR.iOS;
var session = UnityARSessionNativeInterface.GetARSessionNativeInterface();
var config = new ARKitFaceTrackingConfiguration();
session.RunWithConfig(config);
UnityARSessionNativeInterface.ARFaceAnchorAddedEvent += FaceAdded;
UnityARSessionNativeInterface.ARFaceAnchorUpdatedEvent += FaceUpdated;
UnityARSessionNativeInterface.ARFaceAnchorRemovedEvent += FaceRemoved;
- 8. ARKitによる表情の取得
void FaceUpdated(ARFaceAnchor anchorData)
{
var faceRotation = UnityARMatrixOps.GetRotation(anchorData.transform);
var cameraPose = UnityARSessionNativeInterface.GetARSessionNativeInterface().GetCameraPose();
var cameraRotation = UnityARMatrixOps.GetRotation(cameraPose);
var faceAngle = (faceRotation.eulerAngles - cameraRotation.eulerAngles);
var blendShapes = anchorData.blendShapes;
var eyeBlinkLeft = blendShapes[ARBlendShapeLocation.EyeBlinkLeft];
var eyeBlinkRight = blendShapes[ARBlendShapeLocation.EyeBlinkRight];
// ....
}
- 12. モデルの表情を動かす
var proxy = this.GetComponent<VRMBlendShapeProxy>();
proxy.SetValue(BlendShapePreset.Blink_L, eyeBlinkLeft);
proxy.SetValue(BlendShapePreset.Blink_R, eyeBlinkRight);
- 14. Links
• Unity ARKit Plugin
• https://assetstore.unity.com/packages/essentials/tutorial-projects/unity-arkit-
plugin-92515
• UniVRM
• https://github.com/dwango/UniVRM/releases
• ニコニ立体ちゃん
• http://3d.nicovideo.jp/works/td32797