Hololens开发(14) Holograms 230:空间地图

到现在为止做的都是通信、数据获取、简单交互的功能,接下来研究Hololens的亮点功能。

空间地图

到现在只有最早的教程中的SpatialMapping.Instance.DrawVisualMeshes用来开启、关闭空间地图。

地址:https://developer.microsoft.com/en-us/windows/mixed-reality/holograms_230

别人的博客:

    http://blog.csdn.net/sun_t89/article/details/52460272 (Hololens入门之空间映射) 对ToolKit的代码注释挺好的。

    http://blog.csdn.net/zhousanxi123/article/details/52607012

下载项目文件HolographicAcademy-1.5.6-230,原本先看看最后的效果的,Completed\Planetarium里面的场景Build,部署后在Hololens中无法找到一个Planetarium程序,在项目中新建一个场景也一样。

在HolographicAcademy-1.5.6-230\Starting中新建一个空项目,也叫Planetarium,打算根据教程一步一步来。

不行,怀疑是Planetarium这个名称的问题,用其他名字创建项目,也不行。

结果发现是因为没有设置为Device,直接没有安装到Hololens中....白痴啊大哭

最终效果是有个固定的太阳系,有几面墙壁,墙上有画。

-------------------------------  Chapter 1 - Scanning ---------------------------

按教程第一部分拖一个SpatialMapping到场景中,打包部署,查看效果。

结果就是一个不断扫描周围环境建立Mesh的过程,在自己桌子附近走了一下

从控制台查看3DView,要点击一下Update,能看出办公司的基本形状,办公桌啊、墙壁啊、地板啊。


保存为文件SRMesh.obj,有65M(128 volumes; 545623 triangles

放到Unity中,设置ObjectSurfaceObserver的RoomModel,效果:



整个房间由9个RoomMesh组成。

发现Hololens是双核GPU的,在默认情况下,只使用了一个GPU,40%左右。

教程中有个修改SpatialMappingManager的TrianglesPerCubicMeter 的参数的(默认是500),然后查看GPU性能变化的。

修改为1200后,理论上应该是会更精细一下,每单位距离绘制的三角形多了嘛。部署,运行,GPU利用率没什么变化。不过教程中是查看每帧绘制的毫秒数,我的开发环境无法调试,VS会死掉,只能只是部署算了。


查看代码,实际上相关的脚本只有三个:SpatialMappingManager,SpatialMappingObserver,SpatialMappingSource

    SpatialMappingManager是设置参数,调用开关。

    SpatialMappingSource是管理物体集合。

    SpatialMappingObserver是核心,而它的核心是对SurfaceObserver的使用:

        observer.RequestMeshAsync(surfaceData, SurfaceObserver_OnDataReady);

        observer.Update(SurfaceObserver_OnSurfaceChanged);

    应该先扫描信息发生变化调用SurfaceObserver_OnSurfaceChanged,创建SurfaceObject,进入创建队列,然后用RequestMeshAsync获取具体数据并显示出来。


疑问:

1.能扫描、保存多大的空间呢?

本来想把办公室旁边的小房间也包括进来,但是进入小房间后再出来,一开始更新出来的房间反而少了。过一段时间就恢复了。

去两个小房间扫了一下,重新Update。结果确实小房间的数据会加进来,但是感觉小房间反方向的墙壁的数据少了。

总的数据量是多了:127 volumes; 652979 triangles,从54.5万到65.3万了,保存好的文件大小变成78M了。

说明还是有效果的。

2.这些空间数据保存在哪里?

3.Unity运行后摄像机的位置正好是我坐的位置,也就是Update时头盔放的位置,有关系吗?

4.能更精细、高效吗?

5.能不能在运行过程中保存这个SRMesh.obj文件呢?

6.如何在眼前显示一个缩小版的房间模型?不用实时,也是点击一个按钮然后更新到缩小版的模型。



------------------------------ Chapter 2 - Visualization -------------------------

设置 Spatial Mapping Manager的Surface Material属性为BlueLinesOnWalls,运行查看效果。



----------------------Chapter 3 - Processing ---------------

处理网格数据,理解出墙壁、地板、桌子、天花板。

蓝色的是地板,绿色的是桌子,黄色的是天花板,蓝色条纹的是墙壁。

具体如何处理如何理解是用一个dll处理的,PlaneFinding.dll。

实际体验中感觉这个处理还太粗糙了,没实际用处。


------------------------------- Chapter 4 - Placement -------------------------

放置物体,通过Placeable.cs脚本,移动箱子,以及产生移动过程中相应的效果


--------------------------------Chapter 5 - Occlusion -------------------

遮挡效果,地球和其他星球的不同遮挡效果。


  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值