1.3d繪圖的核心是向量運算、矩陣變換、三角函式
2.矩陣主要是用來描述兩個座標系的關係,通過定義一種運算來將乙個座標系中的向量轉換到另乙個座標系中
3.大多數3d圖形不是真正3d的,我們使用3d的概念和術語來描述物體,然後這些3d資料被「壓扁」在2d的計算機螢幕上。這種將3d資料壓扁成2d資料的處理過程就叫做投影。我們前面講過正投影和透視投影。投影中會出現的變換(正交變換或透視變換),但投影只是opengl中發生變換的一種。變換還允許我們旋轉物件、移動物件,甚至對它們進行伸展、收縮和扭曲。
4.在我們指定頂點和這些頂點出現在螢幕上之間的這段時間裡,可能會發生3種型別的幾何變換:檢視變換、模型變換和投影變換。
opengl變換術語概覽:
1.檢視變換:指定觀察者和照相機位置
2.模型變換:在場景中移動物體(移動、旋轉、縮放)
4.投影變換:改變視景體的大小或重新設定它的形狀
5.視口變換:這事一種偽變換,只是對視窗上的最終輸出進行縮放
視覺座標:表示乙個虛擬的固定座標系,是相對於觀察者視角而言的,我們討論的所有變換都是根據他們相對於視覺座標系的效果來描述的。
1.檢視變換:是應用到場景中的第一種變換。它用來確定場景中的有利位置。在預設情況下,透視投影中的觀察點位於原點(0,0,0),並沿著z軸的負方向進行觀察(向顯示器內部「看進去」)。觀察點相對於視覺座標系進行移動,來提供特定的有利位置。當觀察點位於原點(0,0,0)時,就向在透視投影中一樣,繪製在z座標為正的位置物件則位於觀察者背後。(看不見)
然而在正投影中,觀察者被認為是在z軸正方向無窮遠的位置,能夠看到視景體中的任何東西。
檢視變允許我們把觀察點放在所希望的任何位置,並允許在任何方向上觀察場景。確定檢視變換就像在場景中放置照相機並讓他指向某個方向。
從大局上考慮,在應用任何其他模型變換之前,必須先應用檢視變換。這樣做是因為,對於視覺座標系而言,檢視變換移動了當前的工作座標系。所有後續變換隨後都會基於新調整的座標系進行。
4.投影變換:在模型檢視變換之後應用到頂點上。這種投影實際上定義了視景體並建立了裁剪平面。裁剪平面是3d空間中的平面方程式,opengl用它來確定幾何圖形對於觀察者來說是否可見。投影變換指定乙個完成的場景(所有模型變換已完成)是如何投影到螢幕上的最終影象。
矩陣:
如果有乙個包含座標系位置和方向的4x4矩陣, 用其他座標系(與當前座標系不同)的座標向量乘以這個矩陣,得到的結果是乙個轉換到新座標系下的新的向量。這就意味著,空間中任何位置和任何想要的方向都可以由乙個4x4矩陣唯一確定,並且如果用乙個物件的所有向量乘以這個矩陣,那麼我們就將整個物件變換到了這個矩陣的座標系中!
變換 向量和矩陣
主要使用了 示例程式繪製了乙個在螢幕中間旋轉的線框花托。modelviewprojection.cpp opengl superbible demonstrates opengl the modelviewprojection matrix program by richard s.wright j...
變換矩陣理解
今天就來理解這個表示。這個表示一般有兩種叫法 假設b代表body,c代表camera 相機座標系到載體座標系的變化。本質意思是如果有乙個點的座標是在camera座標系中表示的,如果我們要將其在body座標系中表示。可以左乘這個變換矩陣。camera pose respect with body。wi...
頂點法向量的矩陣變換
本文參考 introduction to 3d game programming with directx 11在計算機圖形學中法向量的變化跟一般頂點的變化有一定的區別,假設我們有乙個切向量u v 1 v0 u v 1 v 0 u v1 v0 u uu與法向量n nn垂直。如果我們使用乙個矩陣a a...