摄像头被遮挡一段时间后再放开,输出的位姿有跳变
现象描述
使用运动跟踪能力时,摄像头被遮挡一段时间后再放开遮挡,调用HMS_AREngine_ARPose_GetPoseRaw函数获取的平移分量或旋转分量存在较大跳变。
可能原因
AR Engine通过摄像头采集数据感知当前设备在现实世界中的位姿,摄像头被遮挡后,AR Engine无法准确感知设备在现实世界的位姿变化,放开遮挡后,如果继续调用HMS_AREngine_ARSession_Update,AR Engine会尝试基于遮挡前识别到的数据进行恢复,如果当前摄像头采集数据和遮挡前类似,就可能会导致错误匹配到旧的结果,从而产生数据跳变。
处理步骤
如果开发者通过HMS_AREngine_ARCamera_GetTrackingState函数获取的状态为ARENGINE_TRACKING_STATE_PAUSED,可以通过函数HMS_AREngine_ARCamera_GetTrackingStateReason进一步获取暂停原因,如暂停原因是ARENGINE_TRACKING_STATE_REASON_INSUFFICIENT_FEATURES或ARENGINE_TRACKING_STATE_REASON_EXCESSIVE_MOTION,建议在您的应用中提示用户,并在恢复后(HMS_AREngine_ARCamera_GetTrackingState获取的状态为:ARENGINE_TRACKING_STATE_TRACKING时)重新做session初始化,见:创建AR会话。