簡體   English   中英

yaw 為 0 時相機是否面向 x 軸?

[英]Does the camera face the x axis when the yaw is 0?

所以我一直在閱讀learnopengl中的相機並注意到在偏航圖像中,當偏航為0時,雖然相機似乎面向x軸。相機不應該面向負z軸嗎? 我將圖像附加到此消息中。 在圖像中,偏航角已經是一定的度數,但是如果偏航角為 0,那是否意味着相機面向 x 軸?

來自 learnopengl 的偏航圖像

首先,讓我們為您的問題提供更多背景信息,以便我們知道您實際上在說什么。

我們可以假設當你說

所以我一直在learnopengl中閱讀有關相機的信息

您具體指的是https://learnopengl.com/Getting-started/Camera教程中名為“相機”的章節。

在“歐拉角”小節下,您的問題中也包含了圖像。

如果您進一步閱讀,您會看到以下direction向量的定義,該教程稍后會使用它來構建觀察矩陣:

direction.x = cos(glm::radians(yaw)) * cos(glm::radians(pitch));
direction.y = sin(glm::radians(pitch));
direction.z = sin(glm::radians(yaw)) * cos(glm::radians(pitch));

因此,僅通過查看它並進行數學運算,我們就會看到當yawpitch0direction將為(1, 0, 0)

但是,如果我們進一步閱讀,我們會看到這一段:

我們已經設置了場景世界,所以一切都定位在負 z 軸的方向上。 但是,如果我們查看 x 和 z 偏航三角形,我們會看到 0 的 θ 導致相機的方向向量指向正 x 軸 為了確保相機默認指向負 z 軸,我們可以給偏航一個默認值,即順時針旋轉 90 度。 正度數逆時針旋轉,因此我們將默認偏航值設置為:

yaw = -90.0f;

這就是您問題的答案:在該教程的上下文中,通過簡單地定義direction向量,當兩個角度均為0時,它將指向(1, 0, 0) 為了解決這個問題,該教程將假設yaw的初始值為-90

當然,當角度為0時,他們可以對direction向量分量使用不同的公式來產生(0, 0, -1)作為結果,但他們沒有。

我認為您可能會混淆相機空間和投影空間的定義。 -z-forward 是定義投影矩陣的方式,而上面是定義視圖矩陣的方式,當您將它們相乘時,您會得到兩者的效果(經過透視校正的最終圖像會產生深度錯覺,以及您可以在其中正確平移和旋轉的正交世界空間坐標)。

如果要將其定義為 -z forward:

-z 前置攝像頭

我們用 yaw 替換 trig,pitch 不受影響:

direction.x = sin(glm::radians(yaw)) * cos(glm::radians(pitch));
direction.y = sin(glm::radians(pitch));
direction.z = -cos(glm::radians(yaw)) * cos(glm::radians(pitch));

您現在可以使用Yaw = 0.0f並且默認相機將向下看 -z。

暫無
暫無

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

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