【问题标题】:How would I simulate camera rotation in 3D space by rotating all the points around the position of the camera?如何通过围绕相机位置旋转所有点来模拟 3D 空间中的相机旋转?
【发布时间】:2020-10-24 16:30:12
【问题描述】:

目前我正在使用 Python 开发一个简单的 3D 渲染器(我知道,这可能不是最佳选择),我无法弄清楚如何让相机旋转 - 或者更准确地说,我无法弄清楚如何提出观点围绕相机在 3D 空间中的位置旋转。我尝试使用here 描述的方法,它使用旋转矩阵,但这似乎只是让点围绕自己旋转。

例如,如果我在一个带有立方体的场景中,而不是立方体围绕摄像机旋转,从而产生摄像机旋转的错觉,立方体只会围绕自身旋转,所以看起来就像有一个立方体旋转。

希望这是一个显而易见的解决方案,如有必要,我可以发布我的代码。

【问题讨论】:

    标签: matrix graphics 3d computer-science


    【解决方案1】:

    为了围绕空间中的任意点旋转:

    • 首先,将该点转换为原点
    • 然后,绕原点旋转
    • 最后,将原点翻译回原点。

    给定旋转点p,旋转矩阵R

    def rot_about_point(p, R, x):
      return translate(p) @ R @ translate(-p) @ x
    

    上面的代码假设x是一个列向量(齐次4-向量),所以矩阵在左边将它们相乘,几何变换从右到左读取。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-06-07
      • 1970-01-01
      • 2013-09-04
      • 2010-09-22
      • 2014-11-01
      • 1970-01-01
      • 2019-01-26
      • 1970-01-01
      相关资源
      最近更新 更多