Java 基于Opengl的第三人称透视相机

Java 基于Opengl的第三人称透视相机,java,opengl,camera,Java,Opengl,Camera,我想为我的项目实现TPP摄像头,但有些东西不起作用+我不知道我是否使用了正确的概念 我应该旋转除主模型之外的整个场景模型视图矩阵(主模型将在屏幕上居中),还是旋转lookAt摄影机 另一件事是如何使模型在旋转后向给定方向移动?(我认为移动整个场景会更容易?)+如何在其中添加碰撞检测?碰撞检测与openGL无关。您可以使用游戏状态变量来解决这一问题,您可以在与游戏相同的循环中管理它,在游戏中,您可以进行用户输入和显示 你应该为第三人称相机使用LookAtMatrix,你将在播放器后面有眼睛组件,在

我想为我的项目实现TPP摄像头,但有些东西不起作用+我不知道我是否使用了正确的概念

我应该旋转除主模型之外的整个场景模型视图矩阵(主模型将在屏幕上居中),还是旋转lookAt摄影机


另一件事是如何使模型在旋转后向给定方向移动?(我认为移动整个场景会更容易?)+如何在其中添加碰撞检测?

碰撞检测与openGL无关。您可以使用游戏状态变量来解决这一问题,您可以在与游戏相同的循环中管理它,在游戏中,您可以进行用户输入和显示

你应该为第三人称相机使用LookAtMatrix,你将在播放器后面有眼睛组件,在前面某处有眼睛组件。Persective可以通过使用

所以矩阵乘法看起来像

透视矩阵*注视矩阵*世界空间位置

这里是gamedev的一个很好的答案,解释了一个问题,大多数OpenGL/计算机图形学书籍也会介绍这个问题


您使用的是新的还是旧的管道模型?

我使用opengl3,但使用的是讲师提供的框架。我使用我启动的lookAt相机:
MatrixMath.lookAt(this.eyeX,this.eyeY,this.eyeZ,this.at,this.up)但当我尝试旋转它时,改变eyeX或eyeZ,它不会旋转,而是沿着轴移动,例如,减小X会旋转一点,但相机会越来越远。。。(希望我正确地解释了我的问题)lookAt函数缺少At组件。甚至编译了吗?
这个.at
,这是前面设置的。它编译起来没有问题不必担心当我读你的评论时,我没有戴眼镜,我只是注意到没有我预期的那么多争论。这个函数使用3个浮点数和2个向量,这似乎很奇怪。
public static Mat4 lookAt(Vec4 eye,Vec4 at,Vec4 up){final Vec4 eyeneg=eye.neg();final Vec4 n=VectorMath.normalize(eye.sub(at));final Vec4 u=VectorMath.normalize(VectorMath.cross(up,n));final Vec4 v=VectorMath.normalize(VectorMath.cross(n,u));final Vec4 t=new Vec4(0,0,0,1);final Mat4 c=new Mat4(u,v,n,t);返回c.mul(MatrixMath.translate(eyeneg));}