我想知道HoloLens区分表面的能力。更具体地说,我想知道用户正在凝视的是哪种表面,是水平表面(即桌面、地板、天花板)还是垂直表面(即墙壁)。我想知道是否有任何内置的函数来检测这一点,或者我如何去实现一个-which,我不太确定从哪里开始。(我已经在谷歌上搜索了很长一段时间,但都没有结果。)
发布于 2017-04-02 06:39:14
其他的想法是可行的,但缺少了微软所提供的要点。您应该使用HoloToolkit (Direct3d / C++)或统一的HoloToolkit (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
平面查找将完成您正在寻找的任务,但空间理解可能会提供一定程度的复杂程度,帮助您更好地实现目标。无论哪种方式,都要聪明地工作,并使用微软提供的SDK。
发布于 2017-04-01 17:03:56
使用光线投射到贴图上,然后使用RaycastHit对象中的法线。
https://docs.unity3d.com/ScriptReference/RaycastHit-normal.html
然后将法线与点积与向上向量进行比较。如果接近1,则为水平曲面;如果接近0,则为垂直曲面。
https://stackoverflow.com/questions/43153261
复制相似问题