0

我想制作第一人称 3d 游戏,但我无法正确设置相机公式。

所以我有一个旋转:0 到 359。接下来 x,y 坐标,z 保持不变。

相机旋转:0 - 前,90 - 左,180 - 后,270 - 右,但我可以调整它

相机的公式是什么?

平台:Panda3d、python、opengl

谢谢

4

2 回答 2

3

好的,看起来你需要一个 Doom 风格的相机移动,即没有上下转弯。考虑一下:

  1. 您需要渲染通过相机看到的“世界”。
  2. 假设正 x 在右侧,正 y 在您的前面,当相机向右移动时,世界图像向左移动。
  3. 当相机正向左转时,世界图像向右转。

现在,让我们尝试构造方程:

1.首先,将世界坐标转换为相机的位置:

Xwt = Xw - Xc;
Ywt = Yw - Yc;
Zwt = Zw;

(Xc,Yc,Zc) = camera position
(Xw,Yw,Zw) = world coordinates of object in the scene
(Xwt,Ywt,Zwt) = world coordinates of object translated to camera position

2.现在,将平移后的坐标旋转与相机旋转相反的角度:

Xwc =  Xwt * Cos(psi) + Ywt * Sin(psi);
Ywc = -Xwt * Sin(psi) + Ywt * Cos(psi);
Zwc =  Zwt

Psi = angle of camera rotation
(Xwc,Ywc,Zwc) = world coordinates of object transformed to camera orientation

您可以结合这两个步骤并将其转换为矩阵形式。

于 2010-12-20T16:23:20.780 回答
0

后来我发现了一个解决我问题的教程:

https://www.panda3d.org/forums/viewtopic.php?t=3037

于 2010-12-20T14:51:45.607 回答