Hololens 空间映射问题

Hololens Spatial mapping issue

使用空间映射时,出现错误:

void Update()
{
    if (mappingEnabled)
    {
        foreach (GameObject surface in surfaces.Values)
        {
            surface.GetComponent<MeshRenderer>().enabled = DrawVisualMeshes;
        }

        if (surfaceWorkOutstanding == false && surfaceDataQueue.Count > 0)
        {
            SurfaceData smsd = surfaceDataQueue.Dequeue();
            surfaceWorkOutstanding = Observer.RequestMeshAsync(smsd, Observer_OnDataReady);
        }
    }
}

最后一行出现 ArgumentNullException。该代码是 hololens 教程的一部分,因此其中没有任何内容是我的。

即使我没有做任何动作,只是四处张望,也会发生崩溃。

空参数在 smsd 结构中;

-       $exception  {"Value cannot be null.\r\nParameter name: dataRequest.outputMesh"} System.ArgumentNullException

有什么想法吗?

引自MS site

Render the spatial surface with the latest mesh and (optionally) use it for physics collisions and raycasts. It's important to confirm that the contents of the SurfaceData are not null.

这只是意味着您必须在调用 smsd 并将其传递给 Observer.RequestMeshAsync 函数之前检查 smsd 是否为 null

if (mappingEnabled)
    {
        foreach (GameObject surface in surfaces.Values)
        {
            surface.GetComponent<MeshRenderer>().enabled = DrawVisualMeshes;
        }

        if (surfaceWorkOutstanding == false && surfaceDataQueue.Count > 0)
        {
            SurfaceData smsd = surfaceDataQueue.Dequeue();
            if (smsd.outputMesh == null || smsd.outputCollider == null || smsd.outputAnchor == null) { return; }
            {
                surfaceWorkOutstanding = Observer.RequestMeshAsync(smsd, Observer_OnDataReady);
            }
        }
    }