在我的应用程序中,用户将增强的全息图放置在现实世界对象中。一旦完成放置对象,他们应该能够发出语音命令,以关闭房间的空间贴图网格,从而不会遮挡全息图。例如,如果网格是椅子的,则用户将手动将扩增物(这是椅子的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;
}
}
我希望这段代码可以禁用空间映射网格,因此全息图不会被其遮挡。但是,什么都没有改变。
答案 0 :(得分:0)
应停止空间映射。对我来说,这有效:
SpatialMappingManager.Instance.StopObserver();
如果“空间映射”已经在运行,它将什么都不做,除非可能不会绘制新的扫描环境:SpatialMappingManager.Instance.DrawVisualMeshes = false;
因此,如果您不希望全息图被全息图遮挡,则应将DrawVisualMeshes
设置为false,然后开始空间映射。或另一种替代方法是禁用空间贴图的渲染器,因此您只有空间贴图网格的不可见碰撞体。