如何根据OpenGL中的摄影机移动对象。

如何根据OpenGL中的摄影机移动对象。,opengl,graphics,camera,transformation,Opengl,Graphics,Camera,Transformation,如下图所示。 用户通过改变x、y、z坐标来移动球,这些坐标分别对应于右、左、上、下、近、远运动。但是当我们把相机从A位置换到B位置时,事情看起来很奇怪。右侧看起来不再正确,因为球仍在图像中上一个z所示的上一个坐标帧中移动。我怎样才能使球移动得如此之远,以至于更换相机不会影响其位移的外观 简单的例子:如果我们放置相机,使其从正X轴看,z坐标值的变化现在看起来就像左右移动。然而,在现实中,变化的z应该总是近在咫尺 我想在这里回答: 我通过简单地将cam模型视图矩阵乘以球坐标来解决这个问题 代码如下

如下图所示。

用户通过改变x、y、z坐标来移动球,这些坐标分别对应于右、左、上、下、近、远运动。但是当我们把相机从A位置换到B位置时,事情看起来很奇怪。右侧看起来不再正确,因为球仍在图像中上一个z所示的上一个坐标帧中移动。我怎样才能使球移动得如此之远,以至于更换相机不会影响其位移的外观


简单的例子:如果我们放置相机,使其从正X轴看,z坐标值的变化现在看起来就像左右移动。然而,在现实中,变化的z应该总是近在咫尺

我想在这里回答:

我通过简单地将cam模型视图矩阵乘以球坐标来解决这个问题

代码如下:

   glGetDoublev( GL_MODELVIEW_MATRIX, cam );
     matsumX=cam[0]*tx+cam[1]*ty+cam[2]*tz+cam[3];
     matsumY=cam[4]*tx+cam[5]*ty+cam[6]*tz+cam[7];
     matsumZ=cam[8]*tx+cam[9]*ty+cam[10]*tz+cam[11];

其中tx,ty,tz是ball的原始坐标,matsumX,matsumY,matsumZ是根据摄像机的变化而变化的新坐标。

对不起,我不明白。你在说什么。因为摄像机的位置,它们看起来很奇怪。我需要找到一种方法,根据新的摄像机位置来计算x,y,z。