opengl gluLookAt,以度为单位而不是坐标

时间:2017-05-15 20:22:40

标签: python opengl math pygame

我开始在pygame中使用opengl,但我仍然坚持使用gluLookAt采用世界坐标定位相机,但我想用鼠标移动相机,所以我有像&的值#34;鼠标向右移动了12个像素"。

目前我有gluLookAt(player_object.x, player_object.y, player_object.z, lookat_x, lookat_y, -100, 0, 1, 0),但我不知道如何将鼠标的移动转换为这些坐标。

也许有人知道答案或转换它的公式。 (我使用python,但我认为它很容易移植代码或只是一个公式)

1 个答案:

答案 0 :(得分:1)

您需要计算玩家前向矢量: 向前矢量是从玩家眼睛看向前方向的矢量 - 它告诉你玩家眼睛朝哪个方向看。

本地前向向量(我现在称之为lfw)可能是(0,0,1),因为你将y轴指定为“向上”。

世界前向矢量(现在称为wfv)是:(rotationMatrix * lfw); 这是玩家在世界坐标中看到的方向,因为你将它与玩家rotationMatrix相乘。 最终的lookAt位置是:position + wfv(意思是:从正向位置向前迈出一步 - >在你采取步骤后产生一个点。)

希望这有点帮助