如何在运行时禁用空间贴图网格,或阻止其遮挡扩展? HoloToolKit 2017.4.3.0

时间:2019-06-21 20:17:23

标签: unity3d augmented-reality hololens

在我的应用程序中,用户将增强的全息图放置在现实世界对象中。一旦完成放置对象,他们应该能够发出语音命令,以关闭房间的空间贴图网格,从而不会遮挡全息图。例如,如果网格是椅子的,则用户将手动将扩增物(这是椅子的3D网格)直接定位在现实生活中的椅子上。由于具有空间映射网格,全息图现在不可见并且被空间映射网格遮挡。我希望能够禁用此功能,以便用户可以直接在现实世界的对象上看到增强。

我已经尝试了Hololens开发者论坛的以下主题中提到的解决方案。

https://forums.hololens.com/discussion/1339/how-do-you-disable-the-spatial-mesh https://forums.hololens.com/discussion/7483/how-to-start-and-stop-spatial-mapping https://forums.hololens.com/discussion/9463/disable-spatial-mapping

public void FinishedPlacement()
{
    SpatialMapping.Instance.MappingEnabled = false;
    SpatialMappingManager.Instance.DrawVisualMeshes = false;
    SpatialMappingManager.Instance.gameObject.SetActive(false);
    SpatialMappingManager.Instance.StopObserver();
    SpatialMappingManager.Instance.CastShadows = false;
}
}

我希望这段代码可以禁用空间映射网格,因此全息图不会被其遮挡。但是,什么都没有改变。

1 个答案:

答案 0 :(得分:0)

应停止空间映射。对我来说,这有效: SpatialMappingManager.Instance.StopObserver();

如果“空间映射”已经在运行,它将什么都不做,除非可能不会绘制新的扫描环境:SpatialMappingManager.Instance.DrawVisualMeshes = false;

因此,如果您不希望全息图被全息图遮挡,则应将DrawVisualMeshes设置为false,然后开始空间映射。或另一种替代方法是禁用空间贴图的渲染器,因此您只有空间贴图网格的不可见碰撞体。