我有一个统一的3D模型。我使用opencvsolvePnP vector 计算旋转和平移 vector 。

现在,我尝试使用这些值设置模型位置。我的C#代码如下:

Vector3 objPosition;
objPosition.x = gameObject.transform.position.x + tvec.x;
objPosition.y = gameObject.transform.position.y + tvec.y;
objPosition.z = gameObject.transform.position.z + tvec.z;
gameObject.transform.position = objPosition;

Quaternion quat = new Quaternion(rvec.x, rvec.y, rvec.z, 1.0f);
gameObject.transform.rotation = quat;

但是结果对我来说并不正确。如何统一使用opencv旋转和平移 vector ?

编辑

我有一个3D模型。我手动确定对象上的对应点并进行建模。我想放置包含已知对象的2d图像。我使用solvePnp获得了相机和对象的关系。

我用来在统一场景上显示3D模型,opencv旋转和平移 vector 。也许我应该改变我的问题。

如何使用3d-2d点对应关系检测对象的位置和方向?

最佳答案

查看eut到四元数计算的Unity documentation

Quaternion quat = Quaternion.Euler(new Vector3(rvec.x, rvec.y, rvec.z))

08-07 13:04