【问题标题】:Rotate camera around a textured polygon while looking at it - OpenGL在观察纹理多边形时旋转相机 - OpenGL
【发布时间】:2015-08-23 13:34:47
【问题描述】:

我有一个带有位图图像纹理的简单纹理多边形。

glEnable(GL_TEXTURE_2D);
    glBindTexture(GL_TEXTURE_2D, _textureId);
    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
    glColor3f(1.0f, 1.0f, 1.0f);
    glBegin(GL_QUADS);

    //Front face

    glNormal3f(0.0, 0.0f, 1.0f);
    glTexCoord2f(0.0f, 0.0f);
    glVertex3f(-BOX_SIZE / 2, -BOX_SIZE / 2, BOX_SIZE / 2);
    glTexCoord2f(1.0f, 0.0f);
    glVertex3f(BOX_SIZE / 2, -BOX_SIZE / 2, BOX_SIZE / 2);
    glTexCoord2f(1.0f, 1.0f);
    glVertex3f(BOX_SIZE / 2, BOX_SIZE / 2, BOX_SIZE / 2);
    glTexCoord2f(0.0f, 1.0f);
    glVertex3f(-BOX_SIZE / 2, BOX_SIZE / 2, BOX_SIZE / 2);

    glEnd();

我想围绕对象旋转,使其直接面向我。 如何改变相机的位置?

【问题讨论】:

  • 你可以使用gluLookAt函数。
  • 我对 opengl 很陌生,我不知道如何正确使用 glulookat。你能帮我解决这个问题吗?
  • 希望我的回答能解决这个问题。

标签: c++ opengl image-processing camera textures


【解决方案1】:

在 OpenGL 中,您可以使用gluLookAt 函数在空间中移动。

将相机想象成空间中的一个点。
前 3 个参数决定了您的位置。
接下来的 3 个参数决定了空间中的另一个点,相机将在哪里观看。

这里我已经构图了:(卡通人物取自here

在图片中你可以看到一个人站在位置 pos.x, pos.y, pos.z 看着某个点(红点)look.x,look.y,look.z;

upVec 只是一个确定你头部方向的向量。

this 帖子Carlos Scheidegger 中简要解释了 upVec 的作用:

gluLookAt 中“向上”向量背后的直觉很简单:看 任何事物。现在将头倾斜 90 度。你所在的地方没有改变, 你看的方向没有改变,但你的图像 视网膜明显有。有什么不同?你的头顶在哪里 是指向。那是向上的向量。

在大多数情况下,您希望将 upVec 设置为 (0,1,0),因为在大多数情况下,这是您头部的方向。

【讨论】:

    猜你喜欢
    • 2012-03-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多