8 OpenGLES理解變換

2021-10-08 02:28:38 字數 1956 閱讀 6790

變換:(1)檢視    ---指定觀察者或者相機位置    glu.gllookup(..)

模型    ---場景中移動物體

模型檢視---描述檢視和模型變換的對偶性

(2)投影    ---改變可視區大小以及重新設定形狀,glfrustum()

(3)視口    ---偽變換,縮放.

檢視變換:

檢視變換是場景所應用的第乙個變換。它用於確定場景的拍攝點。在預設情況下,在透視投影中,觀察者是從原點向z軸的負方向看過去(垂直「穿入」監視器螢幕)。這個觀察點相對於視覺座標系統進行移動,以提供乙個特定的拍攝點。當觀察點位於原點時,場景中所繪製的z值為正的物體就位於觀察者的後面。

檢視變換允許把觀察點放在自己所希望的任何位置,並允許在任何方向上觀察場景。確定檢視變換就像在場景中放置照相機並讓它指向某個方向。

作為總體原則,在進行任何其他變換之前必須先指定檢視變換。原因是檢視變換的效果相當於根據視覺座標系統移動當前所使用的座標系統。然後,根據最新修改的座標系統進行其他所有的後續變換。

模型變換:

模型變換用於對模型以及模型內部的特定物體進行操縱。

投影變換:

投影變換是在模型檢視變換之後應用於物體的頂點之上的。這種投影實際上定義了可視區域,並建立了裁剪平面。裁剪平面是3d空間的平面方程式,opengl 用它來確定幾何圖形能否被觀察者所看到。更為具體地說,投影變換指定了乙個完成的場景(在所有的模型變換都已完成之後)投影到螢幕上的最終影象。我們學習兩種型別的投影:正投影和透視投影。

視口變換:

當上面這些操作全部完成之後,最終所獲得的是場景的二維投影,將被對映到螢幕上的某個視窗。這種到物理視窗座標的對映是最後乙個完成的變換,稱為視口變換。通常,顏色緩衝區和視窗畫素之間存在一對一的對應關係,但並非嚴格如此。在有些情況下,視口變換要把一種「規範化」的裝置座標重新對映到視窗座標。幸運的是,我們不必操心這方面的細節。

變換管線:

(×模型檢視矩陣)                  (×投影矩陣)       (透視除法)                             (視口變換)

源頂點資料 ——> 經過變換的視覺座標 ——> 剪裁座標 ——> 經過規範化的裝置座標 ——> 視窗座標

最後,我們把這個座標通過視口變換對映到乙個2d平面中。

模型檢視矩陣:

模型檢視矩陣是個4x4的矩陣,代表經過變換的座標系統,我們可以用這個座標系統放置物體並設定其方向。為圖元所提供的頂點按照單列矩陣的形式使用,並與模型檢視矩陣相乘,將產生與視覺座標系統相對應的經過變換的新座標。

的下圖中,乙個包含了單個頂點資料的矩陣與模型檢視矩陣相乘,產生了新的視覺座標。這個頂點資料實際上由4個元素表示,包括那個額外的表示縮放因子的w值。這個值在預設情況下設定為1.0,我們很少需要自己修改這個值。

單位矩陣:

載入單位矩陣意味著在頂點上不進行任何變換。從本質上說,它相當於把模型檢視矩陣重置回原點。

glmatrixmode(gl_modeview);

glloadidentity();

對OpenGLES中的空間變換的理解

今天翻看以前用cocos2d x寫的vr小遊戲的 有乙個 模組功能是判斷固定在螢幕中心的一條射線是否觸碰到了其他3d物體。這套 原來是從學長寫的遊戲中直接扒出來的,沒有細細研究,今天正好看到了,就藉此總結一下在opengles中空間的轉換。在opengles中,物體會在五個空間中變換,如圖所示 來自...

opengles基本變換的實質

我們在三維座標系中對物體進行旋轉,縮放,平移,從表面上看是直接針對物體的,但實際上並不是,這些變換是針對座標系的,opengles中 變換的實現機制可以理解為首先通過矩陣對座標系進行變換,然後根據傳入渲染管線的原始頂點座標在最終變換結果座標系中的位置來進行繪製,見下圖加深理解 變換過程 1,左側的原...

OpenGL ES學習教程 座標系統變換

經過前面幾節的學習,我們能畫乙個簡單的影象,並且也可以上一些顏色,但是如果我們需要在2維螢幕上畫乙個3維影象,這就需要對物體座標進行變換,3維是有xyz軸的,而螢幕上的座標只有xy軸 opengl的螢幕座標稱為歸一化座標,也有z軸只是螢幕上的物體z軸為0 那3維座標轉換為二維座標的過程是如何實現的呢...