簡體   English   中英

OpenGL:適合場景到屏幕

[英]OpenGL: Fit scene to screen

我有一個帶有透視投影的3D場景。

我想根據邊界框( minmax )將場景調整到屏幕。

我把我的場景集中在這里:

glm::vec3 center = (min + max) / 2.0f;
rootNode->translate(-center.x, -center.y, -center.z);

現在我需要一個比例因子來縮放我的rootNode以適應屏幕。 我該怎么做呢?

(這: 8.070如何自動計算顯示整個模型的視圖?(我知道邊界球和向上矢量。)沒有幫助,因為它基於正交投影)

使用透視投影比使用正交投影更難以解決這個問題的原因是,您需要的minmax與透視投影不一致。

使用透視投影,當您遠離相機時,可見區域的任一邊緣之間的距離會增加。

通過透視投影,您通常具有視角theta ,攝像機位置和“看”矢量v 在任何距離, d從相機的位置(在v的方向)你可以想象一個正常為v的飛機。 您的相機可以“看到”的此平面區域具有寬度:

2 * d * tan(theta / 2).

在簡單的固定攝像機設置中,您可能將攝像機放在原點並向下看z軸,然后任何點的距離d將只是點的z坐標。

另請注意,您可能具有不同的水平和垂直視角。 如果您設置了垂直視角“fovy”和縱橫比(視口寬度/視口高度),那么您的水平視角是您的垂直視角角度乘以縱橫比。

暫無
暫無

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

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