【问题标题】:Is the rotation matrix in Pybullet converting world coordinates into camera or camera to world?Pybullet中的旋转矩阵是将世界坐标转换为相机还是将相机转换为世界?
【发布时间】:2022-01-01 12:07:55
【问题描述】:

我正在做一个项目,我需要将 pybullet 的渲染替换为 pytorch3d 生成的渲染。

我发现 pybullet 和 pytorch3d 对坐标系有不同的定义(请参阅这些链接:pybulletpytorch3d;x 和 z 轴被翻转),我在我的代码中解释了这一点。但是我在渲染的对象中仍然存在不一致。我认为问题可能在于,虽然 pytorch3d 需要一个 c2w 旋转矩阵(即相机到世界),但 pybullet 可能需要一个 w2c 旋转矩阵。但是,我找不到与此相关的任何文档。有没有人遇到过这个问题,或者可以就如何找出 pybullet 期望它的旋转矩阵到底是什么提供一些有用的提示?

谢谢!

【问题讨论】:

    标签: python computer-vision rendering pybullet pytorch3d


    【解决方案1】:

    我假设您说的是pybullet.getCameraImage() 所期望的viewMatrix。这确实应该是一个世界到相机的旋转矩阵。

    但是,在 pyBullet 中,相机在 z 方向上看是负的,而我通常认为它是在正方向上。我通过绕 x 轴旋转 180° 来补偿这一点:

    rot_x_180 = np.array(
        [
            [1, 0, 0, 0],
            [0, -1, 0, 0],
            [0, 0, -1, 0],
            [0, 0, 0, 1],
        ]
    )
    tf_mat = rot_x_180 @ tf_world_to_camera
    view_matrix = tf_mat.flatten(order="F")
    

    其中tf_world_to_camera 是齐次旋转矩阵。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-02-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多