如何在HoloLens中停止QR码追踪并保留绑定空间的可视化内容
解决方案:保留虚拟房间同时停止QR码追踪
先捕获QR码的世界位姿再处理房间对象
当识别到目标QR码并完成虚拟房间实例化后,立即读取QR码追踪对象的世界空间位置和旋转,不要等到停止追踪后再操作。比如在Unity环境下:// 获取QR码的世界位姿 Vector3 targetPos = qrTrackedObject.transform.position; Quaternion targetRot = qrTrackedObject.transform.rotation;剥离房间与QR码的绑定并固化位姿
将虚拟房间对象的父节点设置为场景根节点,同时把刚才捕获的位姿直接赋值给房间的Transform组件:// 解绑房间与QR码的父子关系 virtualRoom.transform.SetParent(null); // 应用QR码的空间位姿到房间 virtualRoom.transform.position = targetPos; virtualRoom.transform.rotation = targetRot;这一步必须在停止追踪前完成,否则QR码追踪对象销毁后,位姿数据会丢失。
针对单个QR码停止追踪(而非全局停止)
使用Microsoft Mixed Reality QR OpenXR的单码追踪停止API,比如在Unity中调用对应版本的QRCodeTracker.StopTracking(qrCodeId)类方法(核心是停止单个目标QR码的追踪,而非关闭整个追踪服务)。这样既停止了对目标QR码的追踪,又不会影响已独立的虚拟房间对象。排查之前的错误点
你之前的操作可能是先停止追踪再处理房间对象,导致QR码追踪实例被销毁后,房间因依赖父对象位姿而丢失空间位置;或者重新父化时没有显式赋值世界位姿,导致房间回到局部坐标原点。
内容的提问来源于stack exchange,提问作者Greta-A
相关产品推荐
相关产品推荐

