从BlendShape字典创建ARFaceGeometry

时间:2018-06-12 18:37:36

标签: c# ios unity3d arkit iphone-x

我正在尝试根据我创建的blendShape字典创建一个ARKit Mesh(在Unity脚本中)。基本上,我想获得一个网格并修改字典中的一个值,然后使用这个新字典创建几何体。

我在ARFaceGeometry文档中找到了方法init,但我不明白究竟如何调用它。

借助Unity blog上的面部跟踪示例,我提出了类似的代码:

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()
    {

    }
}

我收到错误ARFaceGeometry does not contain a definition of init,我也收到一个错误,我无法指定blendShapes,因为它是只读的(我只想到尝试直接分配,但没有工作)。

我很感激使用此init方法或任何其他方式在iPhone上使用Unity自定义blendShape字典在iPhone上创建ARKit网格时的任何帮助。

谢谢!

0 个答案:

没有答案