如何解决我如何通过围绕相机位置旋转所有点来模拟3D空间中的相机旋转?
目前,我正在使用Python开发一个简单的3D渲染器(我知道,可能不是最佳选择),而且我无法弄清楚如何旋转相机-更准确地说,我无法弄清楚如何指出一点在3D空间中围绕相机的位置旋转。我尝试使用here所述的方法,该方法使用旋转矩阵,但是这似乎只是使这些点围绕它们自身旋转。
例如,如果我在一个有立方体的场景中,而不是立方体绕相机旋转,从而造成了相机旋转的错觉,则立方体将围绕自身旋转,因此看起来就像一个立方体旋转。
解决方法
为了绕空间中的任意点旋转:
- 首先,将该点转换为原点
- 然后,绕原点旋转
- 最后,将原点转换回原始点。
给出旋转点p
和旋转矩阵R
:
def rot_about_point(p,R,x):
return translate(p) @ R @ translate(-p) @ x
上面的代码假设x
是列向量(均匀的4向量),因此矩阵在左侧相乘,并且几何变换从右向左读取。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。