26 WebGL的透視投影矩陣

2021-08-01 23:08:21 字數 935 閱讀 6860

上一章講的盒狀投影矩陣,主要用於精度需求度高的工業。而這一節的透視投影矩陣,更符合我們正常人的視覺,也是就近大遠小的感覺。

我們需要實現的效果就是同樣大小的圖形,距離視點越遠,展現出來就越小,如圖:

就像盒狀可視空間那樣,透視投影可視空間也有視點、視線、近裁剪面和遠裁剪面,這樣可視空間內的物體才會被現實,可視空間外的物體則不會顯示。那些跨越可視空間邊界的物體則會顯示在其他可視空間內的部分。

matrix4物件的setperspective()方法可用來定義透視投影可視空間。

定義了透視投影可視空間的矩陣被稱為透視投影矩陣(perspective projection matrix)。

注意:第二個引數aspect是近裁剪面的寬高比,而不是水平視角(第乙個引數是垂直視角)。比如說,如果近裁剪面的高度是100而寬度是200,那麼寬高比就是2。

如圖:我們指定了near=1.0,far=100,aspect=1.0(寬度等於高度,與畫面相同),以及fov = 30.0。

下面是案例**:

上面的案例,我們直接生產了一種新的矩陣,叫模型檢視投影矩陣(model view projection matrix)。它是由

《投影矩陣》x《檢視矩陣》x《模型矩陣》

相乘獲得。

透視投影矩陣

1.將投影面上x,y,z方向上的點,投影到剪裁空間有一定比例關係 2.y方向上的比例關係 y y0 y y0 z tan fov 2 y y tan fov 2 z 讓f 1 tan fov 2 y f z y 3.x方向上的比例關係 x f z x 根據相似三角形原理 tan fovx 2 tan...

透視投影矩陣的構建

投影矩陣最終建立的是乙個平截頭體 也可以稱為臺 在這種變換下呈現遠小近大的效果。這裡我將我學到知識記錄下來,以後備忘用。首先是使用opengl的glfrustum函式,它要求傳入的是前後 左右 上下等引數,這要求這個平截頭體是軸對稱的。由它構成的矩陣是為 如果我們使用的不是glfrustum,而是g...

iOS的三維透視投影

transform的結構如下 struct catransform3d 首先要實現view layer 的透視效果 就是近大遠小 是通過設定m34的 catransform3d rotationandperspectivetransform catransform3didentity rotatio...