Unity中Vuforia的物体坐标分配规则及两追踪物体距离计算
Vuforia目标坐标参考系与物体距离计算问题
一、Vuforia对物体B的坐标分配逻辑
当你将物体A设置为SPECIFIC_TARGET类型的World Center后:
- 只要A处于持续跟踪状态,Vuforia会把A的Transform固定在Unity世界空间的初始位置(你场景中摆放的位置),相机的位置/旋转会相对于A更新——这和你观察到的一致。
- 此时物体B被检测到时,它的坐标会被Vuforia转换到以A为原点的Unity世界空间中,理论上移动相机时B的位置应该保持稳定(只要A和B都被持续跟踪)。
- 你遇到的B位置随相机移动的情况,大概率是A丢失了跟踪:此时Vuforia会自动 fallback 到DEVICE模式(以相机为跟踪中心),B的坐标会切换为相对于相机的跟踪空间,导致移动相机时B的位置跟着变化。
二、两个物体的距离计算方法
只要确保A和B的Transform处于同一个空间坐标系下,计算距离非常直接:
- 如果A作为World Center且持续跟踪,直接调用Unity的API计算世界空间下的距离:
float distance = Vector3.Distance(ATarget.transform.position, BTarget.transform.position); - 如果出现A暂时丢失跟踪的情况,你可以手动将B的坐标转换到A的局部空间(前提是之前保存过A的跟踪状态数据):
// 假设ATransform是A处于跟踪状态时保存的Transform引用 Vector3 bPosInASpace = ATransform.InverseTransformPoint(BTarget.transform.position); float distance = bPosInASpace.magnitude;
额外注意:要确保两个ImageTarget的TrackableBehaviour组件都正确启用,并且在Vuforia Configuration中正确设置World Center Mode为SPECIFIC_TARGET并指定A为目标。
内容的提问来源于stack exchange,提问作者wajid
相关产品推荐
相关产品推荐

