freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

基于opengl粒子系統(tǒng)的噴泉模擬-閱讀頁

2024-11-27 17:47本頁面
  

【正文】 算出來的粒子下一個時刻位置用直線連接,這樣可以模擬出水粒子模糊的效果。 以下為其實現(xiàn)方式: 噴泉由多個水柱組成,每個水柱可看成由很多個小水珠組成,每個小水珠可由一個粒子來模擬,本文稱之為噴泉粒子。而一個好的粒子系統(tǒng)必須具有實時的效果,往往粒子數(shù)目越多,物體的真實程度就越高,同時帶來大量的計算,這樣,在相同的硬件條件下,就降低了實時性 。 產(chǎn)生新的噴泉粒子并初始化屬性 繪制噴泉粒子 更新噴泉粒子的速度 繪制噴泉粒子 Texture 數(shù)據(jù)轉(zhuǎn)為頂點數(shù)據(jù) 更新噴泉粒子的位置和其他屬性 湖南大學(xué)畢業(yè)設(shè)計 (論文 ) 第 15 頁 湖南大學(xué)軟件學(xué)院 由于人們對動態(tài)景物的辨認(rèn)是有限的,且更多關(guān)心的是畫面的連續(xù)性;而紋理映射將豐富的紋理細(xì)節(jié)跌價在物體表面上,使圖形更具有真實感,采用紋理映射技術(shù)能產(chǎn)生許多逼真度很高的圖象 ,且實現(xiàn)代價又是相對較小,用紋理圖像來表現(xiàn)粒子,這就是所謂的胖粒子( fat particle)。這樣就可以同時表現(xiàn)出它的形狀、透明度和顏色。 粒子本身越復(fù)雜 ,渲染同樣的效果需要的粒子數(shù)就越少。它的思想是:首先把一幅靜態(tài)圖象作為紋理映射到簡單的集合平面上,然后根據(jù)視點始終與該平 面正交。)或提繪制( Volume Rendering)技術(shù)來實現(xiàn)。 另外,本文還 利用 了 OpenGL顯示列表的設(shè)計優(yōu)化程序運行性能,采用顯示列表方式繪制一般要比瞬時方式快,尤其能提高網(wǎng)絡(luò)性能。 開發(fā)環(huán)境 首先介紹 下系統(tǒng)開發(fā)的環(huán)境。 粒子生成 每個粒子都應(yīng)該有自己的屬性來區(qū)分其他的粒子。粒子的屬性包括:粒子當(dāng)前狀態(tài)、粒子當(dāng)前位置、粒子當(dāng)前生命值、粒子存在的時間、粒子當(dāng)前速度以及粒子運動方向。( 粒子存在與三維坐標(biāo)系 ) 存在時間: t=( 設(shè)粒子運動的最高點為粒子虛擬產(chǎn)生時間 ) 當(dāng)前速度: v=(rand()%202000)/100000+1。 int i, j。 j3。 i2。 if (fn[j]) fn[j]prev = tempp。 fn[j] = tempp。 temppv = (float)(rand() % 202000)/100000+1。 // 粒子方向 // 開始位置的坐標(biāo) temppx = 0。 temppz = 0。 temppzd = sin((temppd*)/180)*temppv。 // 粒子狀態(tài)為運動 temppa = 1。 粒 子活動 粒子的活動主要有 2 個 ——粒子的移動( MoveParticles)和粒子的刪除( DeleteParticles) 粒子移動 的 實現(xiàn) : 首先需要 定義了一個指針 *tempp,通過下面 的 方式來計算粒子下個位置的坐標(biāo) ,以此 來實現(xiàn)粒子的移動: Tempx+=temppxd。 Tempy+=(*(temppt* temppt/4))/2+。而在 y 方向上 , 粒子受到重力的作用,通過物理學(xué)公式 s=g*t*t/2,可以 定義 y+=(*(temppt* temppt/4))/2+, 其中 是給定的初始高度。 湖南大學(xué)畢業(yè)設(shè)計 (論文 ) 第 18 頁 湖南大學(xué)軟件學(xué)院 代碼如下: void CMyFountainView::MoveParticles() { struct particle *tempp。 for (j=0。 j++) { tempp = fn[j]。 temppz += temppzd。 temppt += 。 // 如果粒子位于地面 }else // 粒子位于地面 { temppy = (*(temppt*temppt/4))/2+。 // 粒子淡化 } tempp = temppnext。 當(dāng) type=0 時表示粒子在地面上空湖南大學(xué)畢業(yè)設(shè)計 (論文 ) 第 19 頁 湖南大學(xué)軟件學(xué)院 即粒子處于運動狀態(tài),當(dāng) type=1 是表示粒子位于地面即粒子處于靜止。當(dāng)粒子位于地面 下時, y0, 設(shè)置 type=1, 同時 對 a 進(jìn)行自減操作 a=,當(dāng) a=0 是粒子消失。 代碼如下: //刪除粒子 void CMyFountainView::DeleteParticles() { struct particle *tempp, *temp1。 for (j=0。 j++) { tempp = fn[j]。amp。 temppprevnext = temppnext。 free(tempp)。 } tempp = temppnext。 具體的實現(xiàn)就是對粒子進(jìn)行增加、移動、刪除的操作,不斷的循環(huán)這樣的操作就可以實現(xiàn)水柱的生成了。 生成結(jié)果如圖 41 所示 : 圖 41 水柱的模擬效果 圖 噴泉旋轉(zhuǎn) 正如大家平時所看到一樣,噴泉是由一個個水柱組成的。 本文在實現(xiàn)時, 定義 了 一個數(shù)組 fn[j],其中 j 表示 第 j 個的水柱。 按照這個思想, 只要將水柱進(jìn)行 360 度的旋轉(zhuǎn),噴泉就 可以 模擬出來了。 ttx = temppx*cos(alpha)temppz*sin(alpha)。 = ttx 。 = ttz 。vectd, amp。vectl)。vectl)。 *= 5。 紋理貼圖 紋理貼圖是一個比較煩瑣的過程, 它首先需要添加相應(yīng)的映射函數(shù)、設(shè)置像素格式和管理著色描述表。 當(dāng) 以上步驟都完成后 , 就可以進(jìn)行紋理貼圖的主要環(huán)節(jié)了 ——紋理映射。 在本文的具體實現(xiàn)時,采用 如下方式定義紋理控制濾波,說明紋理的映射方式, 啟用紋理。 ( 2) 控制紋理 glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST)。 glTexCoord2f(0, 0)。 glTexCoord2f(1, 0)。 glTexCoord2f(1, 1)。 glTexCoord2f(0, 1)。 ( 3) 說明紋理映射方式 湖南大學(xué)畢業(yè)設(shè)計 (論文 ) 第 22 頁 湖南大學(xué)軟件學(xué)院 glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE)。 ( 5) 完成紋理貼圖 glTexCoord2f(0, 0)。 glTexCoord2f(1, 0)。 glTexCoord2f(1, 1)。 glTexCoord2f(0, 1)。 最終實現(xiàn)具有 紋理貼圖 的 噴泉代碼如下: void CMyFountainView::DrawFountain() { int j。 struct point vectd, vectl。 glBindTexture(GL_TEXTURE_2D, texture[0])。 MoveParticles()。 glPushMatrix()。 j3。 tempp = fn[j]。 ttx = temppx*cos(alpha)temppz*sin(alpha)。 // 計算方向矢量 = ttx 。 = ttz 。vectd, amp。vectl)。vectl)。 *= 5。 glColor4f(, , 1, temppa)。 glVertex3f((), (tempp), ())。 glVertex3f((ttx+), (tempp), (ttz+))。 glVertex3f((ttx+), (temppy+), (ttz+))。 glVertex3f((), (temppy+), ())。 // 繪制下一個粒子列表 } glEnd()。 } 場景實現(xiàn) 噴泉當(dāng)然是從地下噴射出來,需要一個地面來襯托噴泉的噴射。 湖南大學(xué)畢業(yè)設(shè)計 (論文 ) 第 24 頁 湖南大學(xué)軟件學(xué)院 這個地面 只 是一個簡單的 有 紋理貼圖 的 立方體 , 其 定義 如下( 4 個 頂 點 ) : glTexCoord2f(0, 0)。 glTexCoord2f(2, 0)。 glTexCoord2f(2, 2)。 glTexCoord2f(0, 2)。 這樣地面、噴泉就實現(xiàn)了簡單場景。 glLoadIdentity()。 湖南大學(xué)畢業(yè)設(shè)計 (論文 ) 第 25 頁 湖南大學(xué)軟件學(xué)院 a += 。 // 繪制地面 glPushMatrix()。 glBegin(GL_QUADS)。 glVertex3f(100, 0, 100)。 glVertex3f(100, 0, 100)。 glVertex3f(100, 0, 100)。 glVertex3f(100, 0, 100)。 glPopMatrix()。 glFlush()。 //交互緩沖區(qū) return TRUE。 突破了 幾何模擬自然景物的限制,更加逼真、真實 。在具體的實現(xiàn)中,對速度,位置,生存時間等讓其在某個小范圍內(nèi)隨機(jī)波動,增加了噴泉的動感。 粒子形狀變化、大小變化以及水滴間的區(qū)別都沒 有實現(xiàn)。 希望以后有機(jī)會深入研究圖形學(xué),改進(jìn)此系統(tǒng)對水滴模擬的缺陷。作為本次畢業(yè)設(shè)計的指導(dǎo)教師 申煜湘 老師,自始至終都關(guān)注著開發(fā)工作的進(jìn)展,從總體上給予指導(dǎo),并為具體開發(fā)提出了許多寶貴意見。 同時我還要特別感謝何 杰 同學(xué),畢業(yè)設(shè)計期間,他對我的幫助無處不在,只要我不明白的地方他總能給我一個滿意的答案。 我還要感謝我的父母他們給我最無私的愛,不僅給我學(xué)習(xí)知識的機(jī)會,還教育了我學(xué)習(xí)如何做人。 湖南大學(xué)畢業(yè)設(shè)計 (論文 ) 第 28 頁 湖南大學(xué)軟件學(xué)院 參考文獻(xiàn) [1] Reeves, William T.. Particle SystemsTechnique for Modeling a Class of Fuzzy Objects[A]. SIGGRAPH Proceeding[C], 1983. [2] Karl Sims. Particle Animation and Rendering Using Data Parallel Computation[J]. Computer Graphics, 24(4): 405- 413, 1990. [3] Ian Buck. Data Parallel Computing on Graphics Hardware. Stanford University, 2020. [4] Lutz Latta. Building a Million Particle System[A]. Game Developers Conference[C], 2020. [5] Andreas Kold, Lutz Latta, Christof RezkSalama. Hardwarebased Simulation and Collision Detection for Large Particle Systems[A]. The Eurographics Association 2020[C], 2020. [6] 許楠等 , 郝愛民 , 王莉莉 . 一種基于 GPU的粒子系統(tǒng)[ J] . 計算機(jī)工程與應(yīng)用 , 2020, (19): 7779. [7] 馬駿 , 朱衡君 , 龔建華 . 基于矢量控制法和 LOD 的音樂噴泉模擬 [J]. 系統(tǒng)仿真學(xué)報 , 2020, 17(7): 16741679. [8] 馬駿 , 朱衡君 . 基于動態(tài)紋理和粒子系統(tǒng)的噴泉模擬 [J]. 北京交通大學(xué)學(xué)報 , 2020, 29(1): 9095. [9] 趙靜謐 , 張慧 , 鄭國勤 . 基于粒子系統(tǒng)的噴泉模擬 [J]. 計算機(jī)應(yīng)用研究 , 2020, (1): 244246. [10] 方建文 , 于金輝 , 馬文龍 . 基于硬件加速和粒子系統(tǒng)的實時噴泉模擬 [J]. 計算機(jī)工程與應(yīng)用 , 2020, (14): 117120.
點擊復(fù)制文檔內(nèi)容
環(huán)評公示相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1