5 相機 透視 視口和投影

2021-10-14 04:18:37 字數 609 閱讀 7968

每乙個場景在渲染時都需要乙個視點,使用者正是從視點的位置去觀察場景。3d圖形系統通常使用相機(camera)來定義使用者與場景的相對位置和朝向,和我們真實世界中的相機一樣,3d世界中的相機也具有類似於視野尺寸等屬性。視野尺寸決定了透視關係(例如,遠處的景物看起來會小一些)。相機的各個屬性組合在一起將最終的3d場景渲染影象傳送給2d視口(viewport),**視口是由瀏覽器視窗或canvas元素決定的。**相機永遠是由兩個矩陣來控制的。第乙個矩陣定義了相機的位置和朝向,類似於用於進行變換操作的矩陣。第二個矩陣比較特殊,它用於將相機空間的3d座標轉換為視口中的2d繪製空間中的座標,這就是所謂的投影矩陣。

下圖很好地解釋了相機、視口和投影的核心概念。在圖的左下方,會看到乙個眼睛的圖示,代表相機的位置。紅色的向量指向右側(在圖中被標記為x軸),代表相機的指向。藍色的方塊是3d場景中的物體。綠色和紅色的矩形分別代表近裁剪面和遠裁剪面。這兩個平面決定了3d空間的子集的邊界,也就是視椎體或視平截頭體。只有處於視平截頭體內部的物體才可以被渲染到螢幕上。近裁剪麵即視口,此平面就是我們最終在螢幕上看到的渲染的2d影象。

OpenGL學習十 視口,正投影,透視投影

正投影 將物體直接投影到螢幕上,不改變其大小 glortho gldouble left,gldouble right,gldouble bottom,gldouble top,gldouble znear,gldouble zfar 透視投影 遠處的東西看起來要小一些,近處的東西看起來會大一些,這...

視錐和投影矩陣,視口變換

縮放與視域角有關 投影的過程就是xyz分量除以w的過程 可知投影在了z 1,的平面 上面的z是指乘以投影矩陣 剪裁矩陣 後的z 這裡設上面這個dip矩陣為a 經過計算可知 在近裁剪面的點 x,y,n,1 a x zoomx,y zoomy,0,n 投影後為 x zoomx n,y zoomy n,0...

OpenGL ES 相機和視口的基本介紹

在繪製圖形時 不了解繪製流程的看官可以去檢視我的另一篇文章opengl es繪製平面圖形流程 onsu cechanged中需要設定視口 相機矩陣 投影矩陣。一般執行結果不報錯但是螢幕上只有背景色就很有可能是這部分出錯了。結果不報錯說明圖形繪製成功,但是螢幕上沒有顯示說明圖形沒有畫在使用者可見區域內...