最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

LearnOpenGL-P7 立方體三維空間坐標(biāo)轉(zhuǎn)換

2023-04-02 22:29 作者:Code有毒  | 我要投稿

0 上一章講到移動旋轉(zhuǎn)和縮放一個2維平面上的圖像。本章將要講的內(nèi)容是如何繪制3維場景中的立方體,并讓其在三維場景中做移動旋轉(zhuǎn)。

(1)將2維矩形圖像通過MVP轉(zhuǎn)換矩陣轉(zhuǎn)成3維空間中的矩形圖片。

(2)在三維空間中繪制一個立方體,并讓其在三維空間中進行旋轉(zhuǎn)。

(3)在三維空間中繪制多個立方體,并將其擺放到不同的位置,以不同的速率進行自轉(zhuǎn)。

?

1.0 坐標(biāo)系統(tǒng)的轉(zhuǎn)換流程如下圖:

(1)定義對象基于局部坐標(biāo)系上的坐標(biāo)位置向量。

(2)將對象局部坐標(biāo)系上的坐標(biāo)位置向量乘以“模型轉(zhuǎn)換矩陣“得到對象在世界坐標(biāo)系上的位置向量。

(3)確定好相機的位置,將“觀察矩陣“乘以對象世界坐標(biāo)系的坐標(biāo)向量得到對象在相機觀察空間上的位置向量。

(4)選擇正射或透視的投影方法,將“投影矩陣”乘以相機觀察空間中的位置向量得到裁剪空間中的位置向量。

(5)最后通過“視口變換”,將坐標(biāo)向量轉(zhuǎn)換到屏幕空間中進行輸出。

1.1 在頂點著色器中設(shè)置三個矩陣變量分別表示模型矩陣、觀察矩陣和投影矩陣。最后的點坐標(biāo)向量輸出為MVP和局部坐標(biāo)系點坐標(biāo)向量相乘的結(jié)果。(要注意矩陣的運算先后順序)。

1.2 在main()的渲染循環(huán)中,設(shè)置模型矩陣。讓模型在局部坐標(biāo)上繞x軸順時針旋轉(zhuǎn)55°。

1.3 設(shè)置擺好攝像機的位置(設(shè)置觀察矩陣),讓圖像在世界坐標(biāo)系的z軸負方向移動3個單位(相當(dāng)于把攝像機放在了世界坐標(biāo)系z軸正方向3個單位的位置處)。

1.4 創(chuàng)建投影矩陣(可選擇透視投影或正射投影)。

1.5 將我們設(shè)置好的mvp矩陣數(shù)據(jù)傳入著色器程序中。編譯運行程序,可得到圖像。

2 在三維空間中繪制一個立方體,并讓其在三維空間中進行旋轉(zhuǎn)。

2.0 設(shè)置立方體6個面36個角點的局部坐標(biāo)位置以及紋理坐標(biāo)位置。并解釋vertices中的頂點數(shù)據(jù),對應(yīng)頂點著色器。

2.1 將圖元繪制方式改為glDrawArrays(),由于沒有重復(fù)利用頂點數(shù)據(jù),所以暫時不按ebo的頂點索引規(guī)則繪制三角形。

2.2 設(shè)置好著色器源碼,暫時不需要傳入顏色變量。

2.3 編譯運行程序,可得到一個立方體。(此時立方體在z軸方向上圖像的前后關(guān)系是錯誤的)

2.4 在渲染循環(huán)中,將模型矩陣中的旋轉(zhuǎn)角度改為隨時間變化的動態(tài)轉(zhuǎn)動。編譯運行程序后可得到一個動態(tài)旋轉(zhuǎn)的但是前后關(guān)系錯誤的立方體。

2.5 打開Opengl的深度測試開關(guān),并在每次的渲染循環(huán)的起始處清空深度緩沖。編譯運行程序即可得到一個前后關(guān)系正確的旋轉(zhuǎn)的立方體。

2.6 我們還可以修改模型矩陣中旋轉(zhuǎn)軸的信息,讓立方體繞著不同的方向進行旋轉(zhuǎn)。

?

3 在三維空間中繪制多個立方體,并將其擺放到不同的位置,以不同的速率進行自轉(zhuǎn)。

3.0 設(shè)定10個立方體在世界坐標(biāo)中的移動位置向量數(shù)組。

?3.1 在渲染循環(huán)中,生成投影矩陣和觀察矩陣。并分別將其傳入著色器程序中。

3.2 綁定VAO對象,并循環(huán)繪制10個立方體。在每次循環(huán)中,我們先讓立方體旋轉(zhuǎn),再根據(jù)cubePositions數(shù)組中的向量分別將10個立方體移動至指定的位置。編譯運行程序,可得到10個不同位置的立方體以不同的速率自轉(zhuǎn)的場景。


LearnOpenGL-P7 立方體三維空間坐標(biāo)轉(zhuǎn)換的評論 (共 條)

分享到微博請遵守國家法律
三明市| 耒阳市| 察雅县| 巫溪县| 北流市| 双江| 满洲里市| 贵港市| 黄龙县| 上思县| 荣昌县| 蕉岭县| 康乐县| 广水市| 洮南市| 札达县| 泌阳县| 连平县| 和林格尔县| 文登市| 武义县| 涪陵区| 罗山县| 桂东县| 咸丰县| 望城县| 交城县| 若羌县| 高青县| 永胜县| 阿荣旗| 长寿区| 故城县| 田阳县| 循化| 扶沟县| 汶上县| 临猗县| 璧山县| 辽阳县| 甘南县|