Microsoft Hololens空间映射表面差异化

时间:2017-04-01 05:40:04

标签: unity3d spatial augmented-reality hololens

我想知道HoloLens区分表面的能力。更具体地说,我想知道用户注视的是什么类型的表面,无论是水平表面(即桌面,地板,天花板)还是垂直表面(即墙壁)。我想知道是否有任何内置函数来检测这个或如何我可以去实现一个 - 我不太确定从哪里开始。 (我一直在谷歌上搜索一段时间无济于事。)

2 个答案:

答案 0 :(得分:2)

其他想法会起作用,但却忽略了微软提供的观点。您应该使用HoloToolkit(Direct3d / C ++)或HoloToolkit for Unity(Unity3d / C#)。

https://github.com/microsoft/HoloToolkit

https://github.com/microsoft/HoloToolkit-Unity

每个都有

的概念

SpatialMapping + PlaneFinding:

https://github.com/Microsoft/HoloToolkit-Unity/tree/master/Assets/HoloToolkit/SpatialMapping

https://github.com/Microsoft/HoloToolkit/tree/master/SpatialMapping/PlaneFinding

SpatialMapping + SpatialUnderstanding:

https://github.com/Microsoft/HoloToolkit-Unity/tree/master/Assets/HoloToolkit/SpatialUnderstanding

https://github.com/Microsoft/HoloToolkit/tree/master/SpatialUnderstanding/Src

Plane Finding将满足您的需求,但Spatial Understanding可以提供一定程度的复杂性,帮助您更好地实现目标。无论哪种方式,都要聪明地工作并使用微软提供的SDK。

答案 1 :(得分:0)

在映射上使用光线投射,然后使用RaycastHit对象中的法线。

https://docs.unity3d.com/ScriptReference/RaycastHit-normal.html

然后将法线与Dot产品与Up向量进行比较。如果接近1,那么你有一个水平面,如果接近0,你有一个垂直面。