Я пытаюсь создать сетку ARKit на основе созданного мной словаря blendShape (в сценарии Unity).По сути, я хочу получить сетку и изменить одно значение в словаре и создать геометрию обратно, используя этот новый словарь.
Я нашел метод init в документации ARFaceGeometry, но я не делаюпонять, как именно это назвать.
С помощью примеров отслеживания лиц в блоге Unity я придумал код, который выглядит следующим образом:
using UnityEngine;
using System.Collections;
using UnityEngine.XR.iOS;
using System.Collections.Generic;
public class RetrieveBlendShapesARKit : MonoBehaviour
{
private UnityARSessionNativeInterface m_session;
Dictionary<string, float> currentBlendShapes;
// Use this for initialization
void Start()
{
currentBlendShapes["eyeBlink_L"] = 1.0f;
Debug.Log("---------------Get ARKit Mesh Start-------------------");
m_session = UnityARSessionNativeInterface.GetARSessionNativeInterface();
ARKitFaceTrackingConfiguration config = new ARKitFaceTrackingConfiguration();
config.alignment = UnityARAlignment.UnityARAlignmentGravity;
config.enableLightEstimation = true;
if (config.IsSupported)
{
m_session.RunWithConfig(config);
UnityARSessionNativeInterface.ARFaceAnchorAddedEvent += FaceAdded;
UnityARSessionNativeInterface.ARFaceAnchorUpdatedEvent += FaceUpdated;
}
}
void FaceAdded(ARFaceAnchor anchorData)
{
anchorData.faceGeometry.init(currentBlendShapes);
}
void FaceUpdated(ARFaceAnchor anchorData)
{
anchorData.blendShapes = currentBlendShapes;
}
// Update is called once per frame
void Update()
{
}
}
Iполучаю сообщение об ошибке ARFaceGeometry does not contain a definition of init
, и я также получаю сообщение об ошибке, что я не могу назначить blendShapes, поскольку он доступен только для чтения (я просто думал о попытке прямого назначения, которое не сработало).
Буду признателен за любую помощь виспользуя этот метод init
или любой другой способ создания сетки ARKit на iPhone с помощью пользовательского словаря blendShape через Unity.
Спасибо!