簡體   English   中英

圍繞軸旋轉相機?

[英]Rotate a camera around a axis?

如何在軸上旋轉相機? 我必須乘以什么矩陣?

我正在使用glm :: lookAt來構造viewMatrix,但我試圖將它乘以旋轉矩陣並且什么也沒發生。

glm::mat4 GetViewMatrix()
{
    return glm::lookAt(this->Position, this->Position + this->Front, glm::vec3(0.0f, 5.0f, 0.0f));
}

glm::mat4 ProjectionMatrix = glm::perspective(actual_camera->Zoom, (float)g_nWidth / (float)g_nHeight, 0.1f, 1000.0f);
glm::mat4 ViewMatrix = actual_camera->GetViewMatrix();
glm::mat4 ModelMatrix = glm::mat4(1.0);
glm::mat4 MVP = ProjectionMatrix * ViewMatrix * ModelMatrix;

使用glm :: rotate旋轉相機的前向和向上矢量:

glm::mat4 GetViewMatrix()
{
    auto front = glm::rotate(this->Front, angle, axis);
    auto up    = glm::rotate(glm::vec3(0, 1, 0), angle, axis);
    return glm::lookAt(this->Position, this->Position + front, up);
}

或者,您可以將旋轉矩陣的乘法添加到MVP構造中:

glm::mat4 MVP = ProjectionMatrix * glm::transpose(Rotation) * ViewMatrix * ModelMatrix;

旋轉發生在視圖矩陣之后非常重要,因此所有對象都將相對於攝像機的位置旋轉。 此外,您必須使用轉置(旋轉)(旋轉矩陣的倒數是其轉置),因為例如順時針旋轉相機,相當於逆時針旋轉所有對象。

暫無
暫無

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

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