張沛露
(吉林建筑大學(xué)電氣與計(jì)算機(jī)學(xué)院,長(zhǎng)春 130011)
伴隨著計(jì)算機(jī)硬件設(shè)備的發(fā)展和人們消費(fèi)水平的提高,人們開(kāi)始注重更多的視覺(jué)享受,提高視覺(jué)享受的前提就是給用戶最真實(shí)最完美的享受,此次設(shè)計(jì)研究的就是基于OpenGL 的雨雪場(chǎng)景仿真,這一研究可以利用到生活的很多部分。
目前雨雪場(chǎng)景仿真普遍的辦法是利用粒子系統(tǒng)在模擬雨雪粒子的前提下,引入天空盒技術(shù),將視角移入類似盒子的空間。Skybox 是整個(gè)場(chǎng)景的一個(gè)包容,變現(xiàn)了幾何之外的世界。使用Skybox 模擬真實(shí)的場(chǎng)景,如廣闊的天空,高大雄偉的山脈。在空間的中央當(dāng)做攝像頭的位置,通過(guò)鼠標(biāo)的移動(dòng)來(lái)完成視角的轉(zhuǎn)換。而針對(duì)雨雪的降落,采用渲染和材質(zhì)等技術(shù)將雨雪做的更為逼真,應(yīng)用了shader 技術(shù),將雨粒子和雪粒子和天空盒著色。通過(guò)粒子系統(tǒng)對(duì)粒子隨機(jī)降落,大小更變達(dá)到雨雪遠(yuǎn)近的效果,為了提高真實(shí)性,還將加入風(fēng)的元素,通過(guò)改變風(fēng)向來(lái)調(diào)節(jié)雨雪的方向,改變風(fēng)的大小來(lái)達(dá)到雨雪被被風(fēng)吹的效果,讓視覺(jué)體驗(yàn)更完整。
通過(guò)全面分析基于OpenGL 的雨雪仿真場(chǎng)景系統(tǒng)的各項(xiàng)需求,本系統(tǒng)利用OpenGL 這個(gè)圖形API 為基礎(chǔ),實(shí)現(xiàn)雨雪場(chǎng)景的建模和基本圖形變換。
天空盒是一種常用的增加模擬性能的手段,它通常是利用相機(jī)包圍內(nèi)附著一個(gè)紋理來(lái)完成的,紋理一般是一些云朵、山脈或湖泊等。天空盒的根本原則其實(shí)并不復(fù)雜,它相當(dāng)于在視野范圍邊緣安裝了個(gè)盒子。盒子里有六個(gè)面,分別使用6 可以拼接在一起的圖片。從實(shí)現(xiàn)的角度理解,天空是第一個(gè)盒子拿著相機(jī)在同一位置,然后畫(huà)出盒子。
為了實(shí)現(xiàn)模擬要求,存儲(chǔ)器操作模塊和數(shù)組基本模塊組成完整的3D 效果模擬仿真的基本模塊。內(nèi)存管理模塊負(fù)責(zé)監(jiān)視,它模擬系統(tǒng)啟動(dòng)時(shí)內(nèi)存的處理情況和利用比率;數(shù)學(xué)基礎(chǔ)模塊內(nèi)涵2D 和3D 的運(yùn)算操作。
核心模塊雨系統(tǒng)的各個(gè)模塊皆有聯(lián)系,他是系統(tǒng)的總負(fù)責(zé)模塊,控制并操作系統(tǒng)。具有絕對(duì)的掌控權(quán)。它還有用戶與系統(tǒng)交互的責(zé)任,并提供用戶對(duì)其他功能的模塊的響應(yīng)和傳輸。場(chǎng)景控制模塊主要控制場(chǎng)景的管理和操作。粒子系統(tǒng)模塊主要控制粒子的操作,包括粒子的初始化,粒子更新和粒子消亡。
系統(tǒng)處理流程包括以下幾個(gè)步驟:
①系統(tǒng)控制模塊將系統(tǒng)初始化;
②場(chǎng)景管理模塊搭建視點(diǎn)與視口,場(chǎng)景初級(jí)搭建;
③粒子系統(tǒng)管理模塊進(jìn)行粒子生成以及粒子應(yīng)有屬性;
④場(chǎng)景管理模塊將雨雪粒子運(yùn)行在場(chǎng)景中,制造場(chǎng)景結(jié)點(diǎn);
⑤圖形渲染模板通過(guò)OpenGL 對(duì)場(chǎng)景數(shù)據(jù)進(jìn)行渲染操作。
粒子系統(tǒng)的理論和通識(shí),每一個(gè)粒子的生命周期都包括生產(chǎn),運(yùn)動(dòng)過(guò)程和消亡等幾個(gè)過(guò)程。粒子系統(tǒng)會(huì)有如下過(guò)程:
①產(chǎn)生新粒子并賦予屬性;
②除去已過(guò)生命周期的粒子;
③將仍存活的粒子進(jìn)行更新和更新屬性操作;
④渲染系統(tǒng)中還在生命周期內(nèi)的粒子。
Skybox 是將一個(gè)正方體內(nèi)部進(jìn)行貼圖操作,一般由六個(gè)貼圖組成,達(dá)到場(chǎng)景在方塊盒中搭建,這樣會(huì)大大增加場(chǎng)景的真實(shí)性。由于天空盒實(shí)際上是立方體貼圖,因此加載天空盒和加載立方體貼圖的方式?jīng)]有什么不同。
粒子系統(tǒng)會(huì)隨機(jī)的生成雨雪粒子,并且初始化粒子的屬性,包括大小方向形狀和透明度等等,這些因素也都會(huì)因?yàn)榱W酉到y(tǒng)的隨機(jī)性而不斷改變,因此粒子系統(tǒng)在模擬無(wú)規(guī)則形狀的實(shí)體有很大優(yōu)勢(shì)。總結(jié)而知,粒子系統(tǒng)最重要的是粒子的運(yùn)行軌道,選擇合適的運(yùn)動(dòng)函數(shù)將會(huì)使渲染效果更真實(shí)完美。其次,坐標(biāo)系的選擇(即視角)也有一定的關(guān)系。
本文以O(shè)penGL 為基礎(chǔ),采用了粒子系統(tǒng)的開(kāi)發(fā)模式,完成了雨雪仿真系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)。根據(jù)標(biāo)準(zhǔn)的開(kāi)發(fā)工具需求,開(kāi)發(fā)過(guò)程中必須使用OpenGL 圖形庫(kù)操作來(lái)完成,主要應(yīng)用粒子系統(tǒng)來(lái)完成雨雪的模擬,應(yīng)用天空盒技術(shù)來(lái)實(shí)現(xiàn)場(chǎng)景模型的搭建,還用到了渲染著色器貼圖等技術(shù)綜合完成,使得功能基本完善,畫(huà)面仿真度高。