第一人称3d游戏的数学公式

时间:2010-12-20 14:33:50

标签: python math 3d panda3d

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

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

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

相机的公式是什么?

平台:Panda3d,python,opengl

谢谢

2 个答案:

答案 0 :(得分:3)

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

  1. 您需要渲染通过相机看到的“世界”。
  2. 假设x为正,正y为前方,当相机向右移动时,世界的图像向左移动。
  3. 当相机向左转动时,世界的图像会向右转。
  4. 现在,让我们尝试构建方程式:

    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
    

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

答案 1 :(得分:0)

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

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