【发布时间】:2015-08-25 13:59:37
【问题描述】:
我正在渲染一个对象的 3D 模型,我希望用户能够通过拖动鼠标来围绕该对象进行旋转。为此,我想使用光标位置来不断更新模型视图矩阵。
首先,我的模型视图矩阵是:
1 0 0 0
0 1 0 0
0 0 1 -100
0 0 0 1
所以相机正在观察物体的原点,距离它 100 个单位。假设鼠标现在移动到屏幕的右侧。这意味着我希望相机围绕对象旋转 - 例如 90 度。
为了计算新的模型视图矩阵,我采用单位矩阵,将其旋转 90 度,然后使用 glm::translate() 沿相机的 z 轴远离对象。
但是,我遇到的问题是glm::translate() 似乎相对于世界坐标系移动矩阵,而不是相机坐标系。因此,“沿相机的z轴远离物体”不成立,因为旋转后世界的z轴和相机坐标系不再对齐。
请有人解释我应该如何实现这一目标?
谢谢你:)
【问题讨论】:
标签: opengl matrix graphics linear-algebra glm-math