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

正文內(nèi)容

基于粒子系統(tǒng)噴泉實(shí)現(xiàn)論文(已改無(wú)錯(cuò)字)

2022-12-20 16:50:34 本頁(yè)面
  

【正文】 的雨雪。總體來(lái)說(shuō),發(fā)射器都具有一定的范圍參數(shù),他給粒子的初始位置提供了最初的參數(shù),發(fā)射器還保存了其他很多類似的參數(shù),比如粒子的速度范圍,透明度范圍,渲染方式,以及粒子類型 —— 你將用何種基本顯示元素來(lái)描繪粒子。 (2) 粒子類型(子彈) 每一個(gè)粒子都是槍里的子彈,用何種子彈,將影響你的殺傷力,有些子彈細(xì)小,發(fā)射緩慢,有些子彈能夠迅速發(fā)射,而且威力巨大。 在粒子系統(tǒng)的最初設(shè)計(jì)中,所產(chǎn)生的粒子是具有不同顏色,但無(wú)法貼上貼圖的單象素微粒,采用 D3DPT_POINTLISTofD3DPRIMITIVETYPE 繪制。 這種粒子類型盡管也能 產(chǎn)生豐富的粒子效果,但每個(gè)粒子只有一個(gè)象素大小,而且無(wú)法映射貼圖, 因此,在 點(diǎn)精靈 [11]( Point Sprites) 出現(xiàn)以前,我們都采用 Billboard技術(shù) ( Billboard 是讓二維或者面元經(jīng)過(guò)旋轉(zhuǎn)后總是朝向觀察者的一種技術(shù)。它的思想是:首先把一幅靜態(tài) 圖像 作為紋理映射到簡(jiǎn)單的集合平面上,然后根據(jù)視點(diǎn)始終與該平面正交。其中還要用到 Alpha 融合技術(shù),使平面本身不可見(jiàn),僅讓有用的部分圖象顯示出來(lái)。) 來(lái)表現(xiàn)一個(gè)微粒元素, Billboard 用一個(gè)三角扇(兩個(gè)三角形)表現(xiàn)一個(gè)粒子,采用 D3DPT_TRIANGLELIST 繪制,無(wú)論鏡頭怎樣旋轉(zhuǎn), Billboard 都會(huì)自動(dòng)面向鏡頭,用這種方法,可以表現(xiàn)豐富的自然景物。 在微軟自從 引入 點(diǎn)精靈( Point Sprites) 之后,建立粒子系統(tǒng)的元素多了一個(gè)選擇,與 ordinary point primitives 相比, 點(diǎn)精靈( Point Sprites) 可以有不同大小,并且可以映射貼圖;與 BILLBOARD 相比, 點(diǎn)精靈( Point Sprites) 在數(shù)據(jù)結(jié)構(gòu)上就是一個(gè)點(diǎn)( Billboard 是包含四個(gè)頂點(diǎn),六個(gè)索引值的結(jié)構(gòu)),減少了內(nèi)存消耗,并且在各方 向上 點(diǎn)精靈( Point Sprites) 的顯示都是統(tǒng)一的,避免 Billboard 每次渲染都要計(jì)算自身旋轉(zhuǎn)角度的開(kāi)銷。 點(diǎn)精靈( Point Sprites) 采用 D3DPT_POINTLIST 繪制。 當(dāng)然,要制造一個(gè)基本粒子,你可以采用任何你想得到的可見(jiàn)元素,從一個(gè)點(diǎn)到一條線、一個(gè)面 , 甚至一個(gè)模型,都有可能成為一個(gè)基本粒子,但由于粒子系統(tǒng)的群體性特征,你必須選擇最簡(jiǎn)練,占用系統(tǒng)資源最少的類型,因此原則上我們應(yīng)該避免粒子系統(tǒng)基本原理 14 使用一個(gè)有上百個(gè)面的模型作為一個(gè)有上千個(gè)粒子的粒子系統(tǒng)的基本元素。 (3) 粒子池(彈匣) 粒子池中存儲(chǔ)了粒子系統(tǒng)可能用到的所有粒子,并且用棧 、 鏈表等數(shù)據(jù)結(jié)構(gòu)快速產(chǎn)生刪除粒子,它好比一個(gè)彈匣,里面放了所有備用的子彈,他比彈匣更強(qiáng)的是,發(fā)射完的子彈他還能找回來(lái),下次繼續(xù)發(fā)射。 我們知道在粒子系統(tǒng)中會(huì)有很多粒子不斷產(chǎn)生,消亡。如果每次產(chǎn)生一個(gè)粒子,我們都 要?jiǎng)?chuàng)建 一塊內(nèi)存來(lái)存儲(chǔ)這個(gè)粒子,每次粒子消亡我們都 要?jiǎng)h 掉 它 ,這種操作將產(chǎn)生大量的開(kāi)銷,影響粒子系統(tǒng)的整體運(yùn)行速度。 利用一個(gè)靜態(tài)的粒子數(shù)組可以很好的解決這個(gè)問(wèn)題,在粒子系統(tǒng)剛開(kāi)始產(chǎn)生時(shí),我們就申請(qǐng)一大塊內(nèi)存區(qū)域,填充最大數(shù)量的粒子,我們稱這個(gè)存儲(chǔ)區(qū)域?yàn)榱?子池。池中的每個(gè)粒子都有自己的編號(hào),并且一開(kāi)始我們把這些粒子的編號(hào)壓到一個(gè)空閑棧中。在我們發(fā)射粒子時(shí),我們從空閑棧中取出所需數(shù)量的粒子的編號(hào),然后從靜態(tài)數(shù)組中取得這個(gè)粒子。粒子發(fā)射器賦予這些粒子新的參數(shù),并且把他加入渲染鏈表中。在粒子消亡以后,我們把死亡粒子的編號(hào)壓回空閑棧,并且從渲染鏈表中刪除他。 利用粒子池,我們無(wú)須頻繁申請(qǐng)和釋放內(nèi)存,可以有效的模擬粒子的產(chǎn)生和消亡過(guò)程 。 紋理映射技術(shù) 在虛擬環(huán)境的繪制中,如果能夠成功的實(shí)時(shí)模擬各類自然現(xiàn)象,場(chǎng)景將會(huì)變得十分逼真和生動(dòng)。而一個(gè)好的粒子系統(tǒng)必須具有 實(shí)時(shí)的效果,往往粒子數(shù)目越多,物體的真實(shí)程度就越高,同時(shí)帶來(lái)大量的計(jì)算,這樣,在相同的硬件條件下,就降低了實(shí)時(shí)性。而對(duì)于要求限時(shí)計(jì)算的場(chǎng)景,需要改進(jìn)傳統(tǒng)的粒子系統(tǒng)方法,盡可能地降低渲染這些粒子的代價(jià),提高系統(tǒng)的實(shí)時(shí)性。 由于人們對(duì)動(dòng)態(tài)景物的辨認(rèn)是有限的,且更多關(guān)心的是畫面的連續(xù)性;而紋理映射將豐富的紋理細(xì)節(jié)跌價(jià)在物體表面上,使圖形更具有真實(shí)感,采用紋理映射技術(shù)能產(chǎn)生許多逼真度很高的 圖像 ,且實(shí)現(xiàn)代價(jià)又是相對(duì)較小,用紋理圖像來(lái)表現(xiàn)粒子,這就是所謂的胖粒子( fat particle)。其紋理包含 alpha 通道 ( alpha channel) [12],還加入偽粒子的特征。這樣就可以同時(shí)表現(xiàn)出它的形狀、透明度和顏色。對(duì)于噴泉?jiǎng)討B(tài)模擬,就會(huì)顯的更加真實(shí)。 粒子本身越復(fù)雜,渲染同樣的效果需要的粒子數(shù)就越少。如果是二維紋理還需要結(jié)合 Billboard 技術(shù)或繪制( Volume Rendering)技術(shù)來(lái)實(shí)現(xiàn)。 本 文應(yīng)用了二維紋理,粒子系統(tǒng)基本原理 15 使用 Billboarding 和 alpha 通道技術(shù),使得噴泉模型在實(shí)際應(yīng)用中能滿足實(shí)時(shí)性要求并且更加逼真。 本章小結(jié) 本章主要介紹了粒子系統(tǒng)的基本原理 及 粒子系統(tǒng)的國(guó)內(nèi)外發(fā)展的現(xiàn)狀及前景,還有常見(jiàn)的粒 子運(yùn)動(dòng)模型 ; 直線運(yùn)動(dòng)、阻尼運(yùn)動(dòng)、螺旋運(yùn)動(dòng)及反彈運(yùn)動(dòng)幾種形式。 以及對(duì)紋理映射技術(shù)的簡(jiǎn)單介紹,進(jìn)一步了解粒子系統(tǒng)的實(shí)現(xiàn)過(guò)程。 噴泉的設(shè)計(jì)與實(shí)現(xiàn) 16 4 噴泉的設(shè)計(jì)與實(shí)現(xiàn) 在本章內(nèi)容中,將 會(huì)實(shí)現(xiàn)系統(tǒng)中的 部分功能, 同時(shí) 設(shè)計(jì)和實(shí)現(xiàn) 噴泉模型, 對(duì)其進(jìn)行模擬和演示 并附上一些核心代碼 。當(dāng)然也要介紹實(shí)驗(yàn)開(kāi)發(fā)環(huán)境。 實(shí)驗(yàn)環(huán)境 首先介紹下系統(tǒng)開(kāi)發(fā)的環(huán)境。本系統(tǒng)是在 VS2020 中實(shí)現(xiàn)的,利用 OpenGL 編程模式 , 運(yùn)用 MFC 框架來(lái)實(shí)現(xiàn)的。同時(shí)是在無(wú)風(fēng)完全理想的條件下來(lái)實(shí)現(xiàn)噴泉模擬效果。 Visual Studio 2020 提供了大量的控件 , 這些控件可用于設(shè)計(jì)界面和實(shí)現(xiàn)各種功能 ,減少了編程人員的工作量 , 也簡(jiǎn)化了界面設(shè)計(jì)過(guò)程 , 從而有效的提高了應(yīng)用程序的運(yùn)行效率和可靠性。故而 , 實(shí)現(xiàn)本系統(tǒng) Visual Studio 2020 是一個(gè)相對(duì)較好的選擇。 系統(tǒng)功能 系統(tǒng)功能是 模擬出來(lái)一個(gè)正在噴水的噴泉 , 通過(guò)鍵盤的操作來(lái)對(duì)這個(gè)噴泉模型進(jìn)行三維變換,比如左右、上下移動(dòng)變換及伸縮變換。 噴泉的粒子在繪制時(shí),可以采用點(diǎn)繪制、三角形面片或多邊形面片繪制,本文采用 Line 的方法來(lái)繪制粒子,這種方法提供一個(gè) 頂點(diǎn)坐標(biāo),以給定的頂點(diǎn)為中心,進(jìn)行紋理貼圖,這可以準(zhǔn)備多種不同的水珠的圖片,實(shí)現(xiàn)不同的噴泉效果,比用三角形或多邊形繪制減少了需要的頂點(diǎn)數(shù)量和計(jì)算時(shí)間。 要完成點(diǎn)繪制,必須把頂點(diǎn)數(shù)據(jù)放在頂點(diǎn)緩存 (Vertex Buffer)中。粒子屬性的存儲(chǔ)和處理都是在 Texture 中進(jìn)行的,因此我們要通過(guò)編程把 Texture 中的屬性值復(fù)制到 Vertex Buffer 中。噴泉粒子在轉(zhuǎn)化為頂點(diǎn)信息后,通過(guò)普通的渲染過(guò)程繪制到幀緩存中即可 。 噴泉模型的實(shí)現(xiàn)之后,通過(guò)鍵盤就可以對(duì)其操作。 鍵盤操作說(shuō)明如下: W, S: move camera forward/backward A, D: turn camera right/left R, F : move camera up/down X, Y: turn camera up/down C, V: strafe left/right Esc: Exit 噴泉的設(shè)計(jì)與實(shí)現(xiàn) 17 主框架的設(shè)計(jì)與實(shí)現(xiàn) (1) 窗口和視角變換設(shè)計(jì)與實(shí)現(xiàn) 視角變換需要窗口,那么就需要一個(gè)鏡頭來(lái)呈現(xiàn)出來(lái)各種變換效果。所以設(shè)計(jì)出一個(gè) CCamera 類,這個(gè)類包含了兩種使用范圍的屬性和方法,它們分別是私有屬性( private)和公有屬性( public)。 其中私有屬性中設(shè)計(jì)有 : 聲明三維空間向量位置、視圖距離等屬性; SF3dVector Position。 SF3dVector ViewDir。 bool ViewDirChanged。 聲明視圖窗口在三維空間在 x、 y、 z 軸上的相關(guān)變換屬性; GLfloat RotatedX, RotatedY, RotatedZ。 聲明獲得視圖窗口距離的函數(shù); void GetViewDir ( void )。 具體實(shí)現(xiàn)詳見(jiàn)附錄 (1)。 公有屬性設(shè)計(jì)有: 聲明構(gòu)造函數(shù) 用來(lái)初始化窗口位置,大小等屬性: CCamera()。 聲明執(zhí)行轉(zhuǎn)換、旋轉(zhuǎn)和循環(huán)使用視圖窗口的命令功能的函數(shù): void Render ( void )。 具體實(shí)現(xiàn)代碼詳見(jiàn)附錄 (2)。 聲明分別在不同坐標(biāo)軸上的平移、上下、前后運(yùn)動(dòng)的函數(shù): void Move ( SF3dVector Direction )。 void RotateX ( GLfloat Angle )。 void RotateY ( GLfloat Angle )。 void RotateZ ( GLfloat Angle )。 void RotateXYZ ( SF3dVector Angles )。 聲明向前移動(dòng)、向右移動(dòng)函數(shù); void MoveForwards ( GLfloat Distance )。 void StrafeRight ( GLfloat Distance )。 具體實(shí)現(xiàn)代碼詳見(jiàn)附錄 (3)。 噴泉的設(shè)計(jì)與實(shí)現(xiàn) 18 (2) 水池 ( pool) 的設(shè)計(jì)與實(shí)現(xiàn) 定義類 CPool 的屬性 和方法 分為 受保護(hù)屬性 ( protected) 和公有屬性 ( public) , 這些聲明的屬性功能有設(shè)置了水池在三維空間 x, y, z 軸上的長(zhǎng)度,空間位置等屬性。 其中受 保護(hù)屬性有: SOscillator * m_Oscillators。 GLuint * m_Indices。 int m_NumOscillators。 int m_xSize,m_zSize。 int m_NumIndices。 float m_OscillatorDistance。 float m_OscillatorWeight。 float m_Damping。 下面這些聲明包含了噴泉模型的一些函數(shù),比如獲取水池的距離,水池初始化的大小,在三維空間上的位置等, 公有屬性有: float GetOscillatorDistance()。 void Initialize(int xSize, int zSize, float OscillatorDistance, float OscillatorWeight, float Damping, float TextureStretchX, float TextureStretchZ)。 void Reset()。 void AffectOscillator(int xPos, int zPos, float deltaY)。 void Update(float deltaTime)。 具體實(shí)現(xiàn)詳見(jiàn)附錄 (4)。 (3) 紋理 類的設(shè)計(jì) 與實(shí)現(xiàn) 場(chǎng)景的實(shí)現(xiàn),用到紋理映射技術(shù),所以要為選擇的紋理圖片進(jìn)行處理。為此設(shè)計(jì)了一個(gè)紋理類 COGLTexture,這個(gè)類中包含了公有屬性和私有屬性,其中公有屬性中聲明了獲得紋理圖片的名稱,長(zhǎng)、寬等函數(shù): unsigned int GetID()。 void LoadFromFile(char *filename)。 void SetActive()。 int GetWidth()。 int GetHeight()。 私有屬性中聲 明的是紋理圖片的長(zhǎng)、寬及名稱 ; 噴泉的設(shè)計(jì)與實(shí)現(xiàn) 19 具體實(shí)現(xiàn)代碼詳見(jiàn)附錄 (5)。 int Width, Height。 unsigned int ID。 主框架大致設(shè)計(jì)與實(shí)現(xiàn) 如上,框架實(shí)現(xiàn)圖如 41 所示 。 圖 41 主框架圖 噴泉粒子的設(shè)計(jì)與實(shí)現(xiàn) 粒子的產(chǎn)生 每個(gè)粒子都應(yīng)該有自己的屬性來(lái)區(qū)分其他的粒子。首先對(duì)每個(gè)粒子給予一些屬性,粒子根據(jù)它屬性的變化進(jìn)行活動(dòng)。粒子的屬性包括:粒子當(dāng)前狀態(tài)、粒子當(dāng)前位置、粒子當(dāng)前生命值、粒子存在的時(shí)間、粒子當(dāng)前速度以及粒子運(yùn)動(dòng)方向。 當(dāng)一個(gè)粒子產(chǎn)生時(shí),需要給它的屬性定義初始值(此操作定義為 AddParticles),其值為: 當(dāng)前狀態(tài): type=0;( 0 表示粒子狀態(tài)為運(yùn)動(dòng), 1 表示粒子處于靜止) 當(dāng)前位置: x=0,y=0,z=0。(粒子存在與三維坐標(biāo)系) 存在時(shí)間: t=(設(shè)粒子運(yùn)動(dòng)的最高點(diǎn)為粒子虛擬產(chǎn)生時(shí)間) 當(dāng)前速度: v=(rand()%202000)/100000+1。 運(yùn)動(dòng)方向: d=( rand()%400) /1002 代碼如下: 噴泉的設(shè)計(jì)與實(shí)現(xiàn) 20 void CMyFountainView::AddParticles() { struct particle *tempp。 int i, j。 for (j=0。 j3。 j++) for (i=0。 i2。 i++) { tempp = (struct particle *)malloc(sizeof(s
點(diǎn)擊復(fù)制文檔內(nèi)容
試題試卷相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖片鄂ICP備17016276號(hào)-1