SparseSpatialMap Class¶
这个类型是C#语言的 EasyAR Sense API: SparseSpatialMap 。页面中部分描述可能与Unity环境无关。
这个类型已经部分封装进Unity组件: SparseSpatialMapWorkerFrameFilter 。在大部分情况下不需要直接使用这个类型的成员和实例。如果要使用一些没有被封装的接口,需要使用 SparseSpatialMapWorkerFrameFilter.Builder SparseSpatialMapWorkerFrameFilter.Localizer ,而非创建新的实例。
Description¶
提供SparseSpatialMap系统主要的功能,地图生成和存储、地图加载和定位,同时可以获取点云,平面等环境信息并进行hit Test。
SparseSpatialMap占用2个camera的buffer。应使用camera的setBufferCapacity设置不少于所有组件占用的camera的buffer数量。参考 概览 。
Methods¶
isAvailable¶
- C#
public static bool isAvailable()
检查SparseSpatialMap是否可用。总是返回true。
inputFrameSink¶
- C#
public virtual InputFrameSink inputFrameSink()
输入帧输入端口。SparseSpatialMap输入帧必须包含camera参数、时间戳信息和空间信息(cameraTransform和trackingStatus)。参考 InputFrameSink 。
注意:camera支持针孔和鱼眼相机模型,使用鱼眼相机性能会受影响。
bufferRequirement¶
- C#
public virtual int bufferRequirement()
当前组件占用camera buffer的数量。
outputFrameSource¶
- C#
public virtual OutputFrameSource outputFrameSource()
输出帧输出端口。参考 OutputFrameSource 。
create¶
- C#
public static SparseSpatialMap create()
构造SparseSpatialMap。
setResultPoseType¶
- C#
public virtual void setResultPoseType(bool enableStabilization)
设置结果姿态类型。默认enableStabilization为false。只有 InputFrame 中包含空间信息时才有效。
setResultAsyncMode¶
- C#
public virtual bool setResultAsyncMode(bool enableAsync)
设置结果异步模式。如果结果通过outputFrameSource输出,则应设置位true,如果结果通过getSyncResult获取,则应设置为false。默认enableAsync为true。同步模式仅在输入帧包含空间信息且使用XR License时可生效。
start¶
- C#
public virtual bool start()
开始SparseSpatialMap算法。
stop¶
- C#
public virtual void stop()
停止SparseSpatialMap算法。调用start重新运行。
close¶
- C#
public virtual void close()
关闭SparseSpatialMap。close之后不应继续使用。
getPointCloudBuffer¶
- C#
public virtual Buffer getPointCloudBuffer()
获取当前点云数据位置信息。其中点云位置为世界坐标系中的位置,buffer每一个点由三个连续的值表示,分别代表X,Y,Z轴上的坐标值,每一个值占用4字节。
getMapPlanes¶
- C#
public virtual List< PlaneData > getMapPlanes()
获取检测到的平面,类型为 PlaneType 。
hitTestAgainstPointCloud¶
在当前点云中进行Hit Test,得到距离相机从近到远一条射线上的n(n>=0)个位置坐标。
hitTestAgainstPlanes¶
在当前检测到的平面上进行Hit Test,得到距离相机从近到远一条射线上的n(n>=0)个位置坐标。
输入图像坐标系([0, 1]^2)的x朝右、y朝下,原点在左上角。可以使用 CameraParameters.imageCoordinatesFromScreenCoordinates 来从屏幕坐标转换为图像坐标。
输出为点云在世界坐标系中的坐标。
getMapVersion¶
- C#
public static string getMapVersion()
获取当前SparseSpatialMap的地图版本。
unloadMap¶
- C#
public virtual void unloadMap(string mapID, CallbackScheduler callbackScheduler, Optional<Action<bool>> resultCallBack)
通过回调,卸载指定的SparseSpatialMap地图数据。可以通过回调的返回值判断卸载是否成功,成功返回true,否则返回false。
setConfig¶
- C#
public virtual void setConfig( SparseSpatialMapConfig config)
设置SparseSpatialMap相关的配置。参考 SparseSpatialMapConfig 。
getConfig¶
- C#
public virtual SparseSpatialMapConfig getConfig()
获取SparseSpatialMap相关的配置。参考 SparseSpatialMapConfig 。
startLocalization¶
- C#
public virtual bool startLocalization()
开始在已加载地图中尝试定位。在此之前,需要设定所需的配置参数。参考 LocalizationMode 。
stopLocalization¶
- C#
public virtual void stopLocalization()
停当前定位过程。
getSyncResult¶
- C#
public virtual Optional< SparseSpatialMapResult > getSyncResult(double timestamp, Matrix44F cameraTransform, MotionTrackingStatus trackingStatus)
获得同步输出结果。如果SparseSpatialMap已暂停,或者未通过setResultAsyncMode将结果异步模式设为false,则返回值为空。