如何在 Unity 中使用 Vuforia 图像目标记录跟踪位置

How to record tracked position with Vuforia image target in Unity

我想记录每帧的跟踪模型视图矩阵。
跟踪成功后,Vuforia 会设置相机和图像目标的游戏对象位置。
所以我想合并相机和游戏对象的模型视图矩阵。

Matrix4x4 cameraToWorld = perspCam.cameraToWorldMatrix;
Matrix4x4 worldToLocal = imgTarget.transform.worldToLocalMatrix;
Matrix4x4 cameraToLocal = cameraToWorld * worldToLocal;

然后,我通过 cameraToLocal 设置游戏对象的位置、旋转和缩放。
但是,图像目标的游戏对象不能重叠在正确的位置。
我的计算哪里出错了?
或者是否有更好的方法从相机到游戏对象获取一个模型视图矩阵?
Vuforia 版本:9.8
世界中心模式:Deivece

提前感谢您的任何建议。

在不知道太多矩阵的情况下,您可以使用例如

手动实现您想要的
var relativePosition = perspCam.transform.InverseTransformPoint(imageTarget.transform.position);
var relativeRotation = Quaternion.Inverse(perspCam.transform.rotation) * imageTarget.transform.rotation;

以便稍后您可以使用

再次获得相对于相机的相同结果
someObject.transform.position = perspCam.transform.TransformPoint(relativePosition);
someone to.transform.rotation = perspCam.transform.rotation * relativeRotation;