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

因此,我有一个旋转:0至359。接下来,x,y坐标,z保持不变。

摄像机旋转:0-前,90-左,180-背面,270-右但我可以适应它

相机的公式是什么?

平台:Panda3D,Python,OpenGL

谢谢

有帮助吗?

解决方案

好的,看来您需要厄运风格的摄像机运动,即,没有上下的转弯。考虑一下:

  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

您可以将这两个步骤组合在一起,并将其转换为矩阵形式。

其他提示

稍后我发现一个修复了我的问题的教程:

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top