稀疏空间地图的对应用环境的要求和平面图像识别可以比照理解,周围环境需要足够丰富,不能有大片的单色区域,透明区域。此外,光照,角度都会对建立地图和定位产生影响。官方给出了建立地图和定位地图的建议:
https://help.easyar.cn/EasyAR%20Sense/v4/Guides/EasyAR-Sparse-Spatial-Map.html
总体说明
稀疏空间地图的基础是运动跟踪,所有在场景种首先要有运动跟踪的全套游戏对象包括设置。然后主要的是 SparseSpatialMapWorker 和 SparseSpatialMap 这两个游戏对象。
1、SparseSpatialMapWorker 游戏对象相关
Locailzation Mode 属性在建立地图的时候通常选“UntilSuccess”,在定位的时候,通常选“KeepUpdate”。
Use Global Service Config 选项可以设置是否使用全局定义的稀疏空间地图信息。
BuilderMapController.Host(...)方法是保存地图的方法,需要输入的参数是地图的名称和地图的缩略图,缩略图可以输入“null”。
BuilderMapController.MapHost 事件用于返回地图保存情况的事件。事件有 3 个参数,是地图保存成功后的名称,ID,是否保存成功的状态,还有错误信息。
Localizer.startLocalization()和 Localizer.stopLocalization()方法是用来启动和停止本地稀疏空间定位的方法。如果 SparseSpatialMap 游戏对象设置了地图的 ID 和名称的时候,默认会自动启动地图定位。
2、SparseSpatialMap 游戏对象相关
SparseSpatialMap 游戏对象是稀疏空间地图在 Unity 中的载体,每个稀疏空间地图在定位的时候对应一个 SparseSpatialMap 游戏对象,同一个场景可以同时有多个稀疏空间地图。希望在某个稀疏空间地图中放置的虚拟物体,将其对应的游戏对象放置到对应的 SparseSpatialMap 游戏对象下成为其子游戏对象即可。
Source Type 属性用于设置稀疏空间地图的作用,即是用于建立地图“Map Builder”还是用于定位“Map Manager”。
Map Worker 属性必须关联对应的 SparseSpatialMapWorker 游戏对象。通常不需要设置。
Show Point Cloud 选项可以设置是否点云的效果。在建图的时候,显示点云的效果能帮助使用者更好的建立稀疏空间地图。
MapLoad 事件是指定的稀疏空间地图从服务器端下载到本地触发的事件。
MapLocalized、MapStopLocalize 事件是地图实现定位和停止定位的事件。MapLocalized 可以被触发多次,或者理解为可以不断修正位置。
建立地图