【问题标题】:How to move an object depending on the camera in OpenGL.如何根据 OpenGL 中的相机移动对象。
【发布时间】:2014-03-07 23:03:39
【问题描述】:

如下图所示。

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

简单的例子:如果我们将相机放置成从 X 轴正方向看,那么现在 z 坐标值的变化看起来就像是左右移动。然而,实际上改变 z 应该总是近而远。

【问题讨论】:

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

标签: opengl graphics camera transformation


【解决方案1】:

我想我会在这里回答:

我通过简单地将凸轮模型视图矩阵乘以球坐标来解决它。

代码如下:

   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 是球的原始坐标,matsumX, matsumY, matsumZ 是根据相机变化的新坐标。

【讨论】:

    猜你喜欢
    • 2013-01-17
    • 1970-01-01
    • 2014-03-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多