簡體   English   中英

看着帶紋理的多邊形旋轉相機-OpenGL

[英]Rotate camera around a textured polygon while looking at it - OpenGL

我有一個帶有位圖圖像紋理的簡單紋理多邊形。

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();

我想繞着物體旋轉,以便它直接面對我。 如何更改相機的位置?

在OpenGL中,您可以使用gluLookAt函數在空間中移動。

將相機視為空間中的一個點。
前三個參數確定您的位置。
接下來的3個參數確定了相機將在空間中尋找的另一點。

在這里我拍了一張照片:(卡通人物是從這里拍攝的) gluLookAt如何工作

在圖片中,您可以看到一個男人站在pos.x,pos.y,pos.z位置,看着某個點(紅點)look.x,look.y,look.z;

upVec只是確定您頭部方向的向量。

本文中, Carlos Scheidegger簡要解釋了upVec的功能:

gluLookAt中“向上”向量背后的直覺很簡單:看任何東西。 現在將頭傾斜90度。 您所處的位置沒有改變,注視的方向也沒有改變,但視網膜中的圖像顯然已經改變。 有什么不同? 頭頂指向的位置。 那是上升向量。

在大多數情況下,您希望將upVec設置為(0,1,0),因為在大多數情況下這就是您的頭部方向。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM