1,
多數(shù)情況下,你會想縮放物體來和3d世界相適應,旋轉物體到合適的方向,移動物體到某個地方等等。到現(xiàn)在我們已經實踐了每一次的單一圖形變換。為了實現(xiàn)上面一系列的變換,我們需要對頂點位置左乘第一個變換矩陣,然后得到的結果再左乘下一個變換矩陣等等,將所有變換矩陣都左乘頂點位置之后實現(xiàn)多個變換。
在shader中應用每一個變換矩陣實現(xiàn)所有的變換,但這樣很低效,因為對于所有頂點這些矩陣都是一樣的,只有頂點的位置發(fā)生變化,這樣要不斷重復對每個頂點位置進行這一系列的矩陣相乘操作。
∵ Mn * Mn-1 * ... * M0 * V = (Mn* Mn-1 * ... * M0) * V
令N = Mn * Mn-1 * ... * M0
∴ Mn * Mn-1 * ... * M0 * V = (Mn * Mn-1 * ... * M0) * V = N * V
∴我們可以一次性計算N,然后把它作為一致變量傳給shader和每一個頂點位置相乘完成所有的變換,這個只需要GPU對每個頂點進行一次矩陣/向量相乘操作。
2,
當計算N的時候怎樣安排每個變換矩陣的先后順序呢?首先要記住向量最開始先是被最右邊的矩陣左乘的M0 M1 M2 …
先旋轉后平移:
平移后旋轉:
將物體遠離坐標原點后,再旋轉物體會同時造成物體的平移效果(是繞原點旋轉,而不是繞自身旋轉了)。
這是我們希望能避免的。通過先旋轉后移動可以避免這兩個操作的相互依賴性,這也是盡量圍繞原點對稱建模的原因,那樣當你縮放或者旋轉物體不會產生副作用,縮放和旋轉后物體依然保持和之前一樣對稱。
3,
當前標題:Opengl_9_復合變換-創(chuàng)新互聯(lián)
分享網址:http://bm7419.com/article22/igocc.html
成都網站建設公司_創(chuàng)新互聯(lián),為您提供網站制作、商城網站、服務器托管、網站導航、外貿建站、關鍵詞優(yōu)化
聲明:本網站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)