OpenGL(3) OpenGL視角的計算

2021-07-09 07:27:58 字數 407 閱讀 8517

oepngl繪圖的過程中,讓camera指向正確的方向比較容易,然而,在使用投影函式的過程中,一定要把物體放在裁剪範圍之內,當繪製出來的物體大小不合適的時候,可能是由於使用了glperspective()函式導致的,可以通過修改函式第乙個引數的值來調整大小。那麼第乙個引數的角度(視角)是如何確定的呢?

在通常情況下,為了獲得乙個相對合理的近似值,我們可以計算場景中所有物體的座標的最大最小值,從而得到場景便捷的長方形。然後計算這個長方體的外接球的半徑進而根據球體中心和觀察點的距離來確定物體的視角大小。

例如,假設場景中所有物體的邊界長方體的中心位於(1,6,0),外接球的半徑為5.47,而觀察點位於(8,9,10),那麼它和中心的距離就是12.57。半形的正切就是0.4357,半形的度數為23.54(視角為47度)。

opengl 視角問題

opengl變換實際上是通過矩陣乘法來實現。無論是移動 旋轉還是縮放大小,都是通過在當前矩陣的基礎上乘以乙個新的矩陣來達到目的。關於矩陣的知識,這裡不詳細介紹,有興趣的朋友可以看看線性代數 大學生的話多半應該學過的 opengl可以在最底層直接操作矩陣,不過作為初學,這樣做的意義並不大。這裡就不做介...

OpenGL滑鼠滑動實現視角旋轉

思路 攝像機圍繞著中心點,以固定的半徑做圓周運動。記錄滑鼠在螢幕上滑動的距離,縮小到適合的比例,然後計算出移動後的攝像機的x和z座標。從而達到攝像機旋轉,即視角旋轉的目的。這裡最關鍵的地方在於lookat矩陣,lookat矩陣是一種特殊型別的view矩陣,通過直接賦值給view矩陣,然後把view傳...

OpenGL系統設計 OpenGL擴充套件

和微軟的direct3d directgraphics相比較,opengl的乙個最大的優點是其擴充套件機制。對於顯示卡硬體的新功能,除非微軟發布了directx的新版本,否則,程式設計師是無法使用的。但opengl就不同了,opengl給硬體廠商和程式設計師提供了擴充套件機制,讓硬體廠商增加基於顯示...