-1

我正在尝试将记录的图像(对颜色进行一些修改)投影到从 Hololens 2 设备门户的 3D 视图生成的空间图上。我用相应的 CameraToWorld 矩阵和 Projection Matrix 记录了图像

例如

Projection Matrix:
[1.53862 0.00000 0.00729 0.00000],
[0.00000 2.73525 -0.05193 0.00000],
[0.00000 0.00000 -1.00000 0.00000],
[0.00000 0.00000 -1.00000 0.00000]

CameraToWorld Matrix:
[0.99903 0.03822 -0.02210 0.01095],
[-0.03472 0.98934 0.14145 0.10689],
[-0.02727 0.14054 -0.98970 0.16761],
[0.00000 0.00000 0.00000 1.00000]

)

当我将 CameraToWorld Matrix 应用到 PCL 纹理映射时,我发现图像被投影到对面并且倒置。因此,我添加了一个 180 度的 x 轴旋转。

我得到了以下结果,其中位置不在正确的位置

红色方块应该是显示器的正确位置

我有以下问题

  1. 为什么会有旋转偏移?将 CameraToWorld 矩阵应用于 PCL 纹理映射函数的正确方法是什么?

  2. 我没有使用投影矩阵,我在投影过程中是否遗漏了什么?

4

1 回答 1

0

你在python项目中使用trimesh吗?如果是这样,场景的坐标系应该是左手坐标系,而空间映射的坐标系是右手坐标系,所以会有旋转偏移。为了得到空间映射的正确位置,需要将矩阵转换为对应的左手坐标矩阵。

投影矩阵是为从世界坐标到相机坐标的转换而设计的。如果您想将纹理添加到 3D 模型,则无需使用它。

于 2021-06-18T10:39:38.280 回答