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

正文內(nèi)容

基于粒子系統(tǒng)噴泉實(shí)現(xiàn)論文(編輯修改稿)

2024-12-13 16:50 本頁面
 

【文章內(nèi)容簡(jiǎn)介】 幾何模型、進(jìn)行坐標(biāo)變換、產(chǎn)生光照效果、進(jìn)行紋理映射、產(chǎn)生霧化效果等所有的二維和三維圖形操作。 實(shí)用函數(shù)庫是比核心庫更高一層的函數(shù)庫,它提供四十多個(gè)函數(shù), 這些函數(shù)都以“ glu” 為前綴。 由于 OpenGL 是一個(gè)圖形標(biāo)準(zhǔn),是獨(dú)立于任何窗口系統(tǒng)或操作系統(tǒng)的,在 OpenGL中沒有提供窗口管理和消息事件響應(yīng)的函數(shù),也沒有鼠標(biāo)和鍵盤讀取事件的功能,所以在編程輔助庫提供了一些基本的窗口管理函數(shù)、事件處理函數(shù)和簡(jiǎn)單的事件函數(shù)。這類函數(shù)以 “ aux” 作為前綴。 MFC MFC 簡(jiǎn)單來說就是 VC 的類庫,是一個(gè)編程框架 [5]。 MFC( Microsoft Foundation Class Library)中的各種類結(jié)合起來構(gòu)成了一個(gè)應(yīng)用程序框架,它的目的就是讓程序員在此基礎(chǔ)上 來建立 Windows 下的應(yīng)用程序,這是一種相對(duì) SDK 來說更為簡(jiǎn)單的方法。 從總體上來看, MFC 框架定義了應(yīng)用程序的輪廓,并提供了用戶接口的標(biāo)準(zhǔn)實(shí)現(xiàn)方法,程序員所要做的就是通過預(yù)定義的接口把具體應(yīng)用程序特有的東西填入這個(gè)輪廓。 Microsoft Visual C++提供了相應(yīng)的工具來完成這個(gè)工作: AppWizard 可以用來生成初步的框架文件(代碼和資源等);資源編輯器用于幫助直觀地設(shè)計(jì)用戶接口; Class Wizard 用來協(xié)助添加代碼到框架文件;最后編譯,則通過類庫實(shí)現(xiàn)了應(yīng)用程序特定的邏輯。 構(gòu)成 MFC 框架的 是 MFC 類庫。 MFC 類庫是 C++類庫。這些類或者封裝了 Win32應(yīng)用程序編程接口,或者封裝了應(yīng)用程序的概念,或者封裝了 OLE 特性,或者封裝了ODBC 和 DAO 數(shù)據(jù)訪問的功能等等。 MFC 抽象出眾多類的共同特性,設(shè)計(jì)出一些基類作為實(shí)現(xiàn)其他類的基礎(chǔ)。這些類系統(tǒng)相關(guān)技術(shù)與原理 8 中,最重要的類是 CObject 和 CCmdTarget。 CObject 是 MFC 的根類,絕大多數(shù) MFC類 是其派生的,包括 CCmdTarget。 CObject 實(shí)現(xiàn)了一些重要的特性,包括動(dòng)態(tài)類信息、動(dòng)態(tài)創(chuàng)建、對(duì)象序列化、對(duì)程序調(diào)試的支持等。所有從 CObject 派生的類都 將具備或者可以具備 CObject 所擁有的特性。 CCmdTarget 通過封裝一些屬性和方法,提供了消息處理的架構(gòu)。 MFC 中,任何可以處理消息的類都從 CCmdTarget 派生。 針對(duì)每種不同的對(duì)象, MFC 都設(shè)計(jì)了一組類對(duì)這些對(duì)象進(jìn)行封裝,每一組類都有一個(gè)基類,從基類派生出眾多更具體的類。這些對(duì)象包括以下種類:窗口對(duì)象,基類是 CWnd;應(yīng)用程序?qū)ο?,基類?CwinThread;文檔對(duì)象,基類是 Cdocument 等。 MFC 以 C++為基礎(chǔ),自然支持虛擬函數(shù)和動(dòng)態(tài)約束。但是作為一個(gè)編程框架,有一個(gè)問題必須解決:如果僅 僅通過虛擬函數(shù)來支持動(dòng)態(tài)約束,必然導(dǎo)致虛擬函數(shù)表過于臃腫,消耗內(nèi)存,效率低下。例如, CWnd 封裝 Windows 窗口對(duì)象時(shí),每一條 Windows消息對(duì)應(yīng)一個(gè)成員函數(shù),這些成員函數(shù)為派生類所繼承。如果這些函數(shù)都設(shè)計(jì)成虛擬函數(shù),由于數(shù)量太多,實(shí)現(xiàn)起來不現(xiàn)實(shí)。于是, MFC 建立了消息映射機(jī)制,以一種富有效率、便于使用的手段解決消息處理函數(shù)的動(dòng)態(tài)約束問題。 這樣,通過虛擬函數(shù)和消息映射, MFC 類提供了豐富的編程接口。程序員繼承基類的同時(shí),把自己實(shí)現(xiàn)的虛擬函數(shù)和消息處理函數(shù)嵌入 MFC 的編程框架。 MFC 編程框架將在適當(dāng)?shù)?時(shí)候、適當(dāng)?shù)牡胤絹碚{(diào)用程序的代碼。 如前所述, MFC 實(shí)現(xiàn)了對(duì)應(yīng)用程序概念的封裝,把類、類的繼承、動(dòng)態(tài)約束、類的關(guān)系和相互作用等封裝起來。這樣封裝的結(jié)果對(duì)程序員來說,是一套開發(fā)模板(或者說模式)。針對(duì)不同的應(yīng)用和目的,程序員采用不同的模板。例如, SDI 應(yīng)用程序的模板, MDI 應(yīng)用程序的模板,規(guī)則 DLL 應(yīng)用程序的模板 [6],擴(kuò)展 DLL 應(yīng)用程序的模板, OLE/ACTIVEX 應(yīng)用程序的模板等。 為了支持對(duì)應(yīng)用程序概念的封裝, MFC 內(nèi)部必須作大量的工作。例如,為了實(shí)現(xiàn)消息映射機(jī)制, MFC 編程框架必須要保證首先得到消息 , 然后按既定的方法進(jìn)行處理。又如,為了實(shí)現(xiàn)對(duì) DLL 編程的支持和多線程編程的支持, MFC 內(nèi)部使用了特別的處理方法,使用模塊狀態(tài)、線程狀態(tài)等來管理一些重要信息。雖然,這些內(nèi)部處理對(duì)程序員來說是透明的,但是,懂得和理解 MFC 內(nèi)部機(jī)制有助于寫出功能靈活而強(qiáng)大的程序。 總之, MFC 封裝了 Win32 API, OLE API, ODBC API 等底層函數(shù)的功能,并提供更高一層的接口,簡(jiǎn)化了 Windows 編程。同時(shí), MFC 支持對(duì)底層 API 的直接調(diào)用。 MFC 提供了一個(gè) Windows 應(yīng)用程序開發(fā)模式,對(duì)程序的控制主要是由 MFC 框 架系統(tǒng)相關(guān)技術(shù)與原理 9 完成的,而且 MFC 也完成了大部分的功能,預(yù)定義或?qū)崿F(xiàn)了許多事件和消息處理等。框架或者由其本身處理事件,不依賴程序員的代碼;或者調(diào)用程序員的代碼來處理應(yīng)用程序特定的事件。 MFC 是 C++類庫,程序員就是通過使用、繼承和擴(kuò)展適當(dāng)?shù)念悂韺?shí)現(xiàn)特定的目的。例如,繼承時(shí),應(yīng)用程序特定的事件由程序員的派生類來處理,不感興趣的由基類處理。實(shí)現(xiàn)這種功能的基礎(chǔ)是 C++對(duì)繼承的支持,對(duì)虛擬函數(shù)的支持,以及 MFC 實(shí)現(xiàn)的消息映射機(jī)制。 本章小結(jié) 本章主要介紹了圖形的幾何變換原理的二維和三維變換等 ; DirectX 與 OpenGL 兩種不同的函數(shù)庫,提供的 API。兩者不同的編程模式的效果是相同的。主要介紹了他們的函數(shù)庫及功能等 ; 要求掌握 MFC,它是一個(gè)編程框架。提供 VC 的類庫 等 。 粒子系統(tǒng)基本原理 10 3 粒子系統(tǒng)基本原理 本章主要 介紹 粒子系統(tǒng)在國內(nèi)外的研究現(xiàn)狀,并能夠掌握粒子系統(tǒng)原理,熟悉常見的幾種粒子運(yùn)動(dòng)模型及 粒子系統(tǒng)的 構(gòu)成。 為噴泉模型的設(shè)計(jì)和實(shí)現(xiàn)做技術(shù)支撐。 認(rèn)識(shí)紋理映射技術(shù)在三維模型中的應(yīng)用重要性 。 粒子系統(tǒng)的簡(jiǎn)介及國內(nèi)外研究現(xiàn)狀 (1) 粒子系統(tǒng)的簡(jiǎn)介 粒子系統(tǒng)用于各種動(dòng)畫任務(wù)。主要是在使 用程序方法為大量的小型對(duì)象設(shè)置動(dòng)畫時(shí)使用粒子系統(tǒng),例如,創(chuàng)建暴風(fēng)雪、水流或爆炸。 3ds max 提供了兩種不同類型的粒子系統(tǒng):事件驅(qū)動(dòng)和非事件驅(qū)動(dòng)。事件驅(qū)動(dòng)粒子系統(tǒng),又稱為 粒子流 ,它測(cè)試粒子屬性,并根據(jù)測(cè)試結(jié)果將其發(fā)送給不同的事件。粒子位于事件中時(shí),每個(gè)事件都指定粒子的不同屬性和行為。在 非事件驅(qū)動(dòng)粒子系統(tǒng) 中,粒子通常在動(dòng)畫過程中顯示類似的屬性。 重要信息:粒子系統(tǒng)可以涉及大量實(shí)體,每個(gè)實(shí)體都要經(jīng)歷一定數(shù)量的復(fù)雜計(jì)算。因此,將它們用于高級(jí)模擬時(shí),您必須使用運(yùn)行速度非常快的計(jì)算機(jī),且內(nèi)存容量盡可能大。另外,功能強(qiáng)大的圖形卡可以加快粒子幾何體在視口中的顯示速度。而且,該圖形卡仍然可以輕松加載系統(tǒng),如果碰到失去響應(yīng)的問題,請(qǐng)等待粒子系統(tǒng)完成其計(jì)算,然后減少系統(tǒng)中的粒子數(shù),實(shí)施緩存 或采用其他方法來優(yōu)化性能。 如果要訪問 3ds max 中大量的粒子系統(tǒng),則需要確定特定應(yīng)用程序所要使用的系統(tǒng)。通常情況下,對(duì)于簡(jiǎn)單動(dòng)畫,如下雪或噴泉,使用非事件驅(qū)動(dòng)粒子系統(tǒng)進(jìn)行設(shè)置要更為快捷和簡(jiǎn)便。對(duì)于較復(fù)雜的動(dòng)畫,如隨時(shí)間生成不同類型粒子的爆炸(例如: 碎片、火焰和煙霧),使用“粒子流”可以獲得最大的靈活性和可控性。 (2) 粒子系統(tǒng)的國內(nèi)外研究現(xiàn)狀 國外的研究始于 80 年代初期,由 Reeves W. 1983 年首次提出粒子系統(tǒng)模型,并用其模擬了焰火、爆炸等效果 [7],他還成功的利用該模型模擬了 電影《 AR TREK I: The Wrath of Khan》中的一系列特技鏡頭。 1985 年 Reeves W. Blau 發(fā)展了粒子系統(tǒng),他們用 “ volume filling” 基本單元模擬生成那種隨時(shí)間改變形狀,但又基本保持不變的實(shí)體,如隨風(fēng)飄動(dòng)的花草樹葉。 此后從理論到技術(shù)都得到了進(jìn)一步發(fā)展 : Reeves W. 制的算法,稱之為 “ 近似概率算法 ” , 用于解決陰影、可見面問題,且取得了很好的效粒子系統(tǒng)基本原理 11 果。 Fournier ,提出了浪花的產(chǎn)生條 件—— 粒子運(yùn)動(dòng)速度和海流曲面?zhèn)鞑ニ俣戎g的差異要超過一定的條件,即粒子運(yùn)動(dòng)速度與海浪曲面?zhèn)鞑ニ俣戎g的差異要超過一定的閥值 [8],否則產(chǎn)生泡沫。 Karl Sims 研究了粒子的動(dòng)畫及繪制算法,他利用粒子系統(tǒng)的并行特點(diǎn),提出了一個(gè)并行的粒子繪制系統(tǒng),該系統(tǒng)能繪制不同形狀、大小、透明度的粒子,并能進(jìn)行反走樣、消隱、運(yùn)動(dòng)模糊的處理。 Reed 等人用粒子系統(tǒng)成果的模擬了閃電。 Reynolds 在其群體行為研究中,又極大的擴(kuò)展了粒子系統(tǒng)的功能,并將其作為一種建模工具,他提出了粒子間相互結(jié)合的思想,從而使粒子與粒子之間進(jìn)行交 互,并闡明利用大量的簡(jiǎn)單圖元間的交互作用可產(chǎn)生復(fù)雜的行為。 Milleramp。Pearce、 Tonnesen 等人開發(fā)了雙粒子系統(tǒng)來模擬像流體一樣的或溶化的物質(zhì)。 David E. Breen 利用 “ 交互粒子 ” 模擬了布匹、織物。再如大家非常熟悉的三維動(dòng)畫制作的最新軟件 3DS MAX 就載有 “ Spray” 和 “ Snow” 兩個(gè)粒子系統(tǒng)來模擬噴射的火花、飄舞的雪花、飛揚(yáng)的塵埃等特殊效果, 3DS MAX 還有帶有兩個(gè)外掛模塊 “ Sand Blaster” 和 “ All Purpose Particles” , 用來創(chuàng)建氣泡、焰火、沖擊波等動(dòng)態(tài) 圖像??傊?,粒子系統(tǒng)能夠創(chuàng)建各種動(dòng)畫效果。 國內(nèi)近年來有許多大學(xué)對(duì)粒子系統(tǒng)模型進(jìn)行了研究、探索和應(yīng)用,并取得了一定的成果。例如,徐迎慶等人利用粒子系統(tǒng)模擬了水面濺起的水沫以及流水與石頭碰撞后產(chǎn)生的水花等效果;宋萬壽等人在 IBM PC386 機(jī)上開發(fā)了基于粒子系統(tǒng)方法的焰火及樹木模擬實(shí)驗(yàn)系統(tǒng)等。國內(nèi)的研究雖然取得了一定的進(jìn)展,但采用粒子系統(tǒng)有效地模擬模糊景物的論文并不多,需要進(jìn)一步開發(fā)、研究與實(shí)現(xiàn)。 總而言之,粒子系統(tǒng)為如何模擬具有復(fù)雜結(jié)構(gòu)及復(fù)雜運(yùn)動(dòng)的物體提供了一個(gè)簡(jiǎn)潔、抽象的描述。用它所創(chuàng)建的動(dòng)態(tài)模糊效果是其 他圖像生成技術(shù)難以達(dá)到的。但迄今為止,所考慮的都是單個(gè)粒子的運(yùn)動(dòng),對(duì)物體的模型也作了許多假設(shè)。至于粒子間的相互作用、碰撞檢測(cè)等都未深入涉及。另外,利用 3DS MAX 制作的煙火、浪花,其效果還不太理想,需要將粒子系統(tǒng)與其他方法想結(jié)合,開發(fā)出更新更好的算發(fā),這些都是今后的研究方向之一。 粒子系統(tǒng)的基本原理 基本原理 給出粒子中心點(diǎn)的坐標(biāo)和粒子的大小,則很容易計(jì)算出粒子所需要的 4 個(gè)頂點(diǎn)的位置坐標(biāo)。粒子系統(tǒng)由大量的粒子構(gòu)成。每個(gè)粒子具有一組屬性例如位置大小紋理顏色透明度運(yùn)動(dòng)速度加速度生命周期等屬 性。粒子屬性的初始值通常由隨機(jī)過程產(chǎn)生。粒子系統(tǒng)基本原理 12 粒子往往由位于空間某個(gè)位置的粒子源產(chǎn)生。 一個(gè)粒子系統(tǒng)是隨時(shí)間不斷變化的,在生命期的每一刻都要完成以下 4 步工作。 (1) 粒子源產(chǎn)生新粒子:產(chǎn)生一定數(shù)目的新粒子,其初始屬性由隨機(jī)過程控制。每個(gè)粒子可以具有一個(gè)生命期,如果某些粒子不應(yīng)刪除,則可以賦予他們無限長(zhǎng)的生命期。 (2) 更新現(xiàn)存粒子的屬性:例如粒子有位置和速度屬性,就需要根據(jù)粒子原來的位置速度和流逝的時(shí)間計(jì)算粒子的新位置。 (3) 刪除已經(jīng)死亡的粒子:檢查所有粒子的生命期如果法線某粒子已經(jīng)死亡 則將該粒子從粒子系統(tǒng)中刪除 (4) 繪制粒子:將粒子系統(tǒng)中所有的粒子繪制出來,得到所需要的視覺效果 常見的粒子運(yùn)動(dòng)模型 粒子運(yùn)動(dòng)中粒子產(chǎn)生的時(shí)候都具有一定的初始屬性,粒子作為質(zhì)點(diǎn),按照動(dòng)力學(xué)的規(guī)律進(jìn)行運(yùn)動(dòng)。以下是幾種常見的運(yùn)動(dòng)形式 [9]: (1) 直線運(yùn)動(dòng) , 粒子的位置和速度變化遵循下面的原則如 ( 公式 31) 所示 : P=P0+∫ Vdt, V=V0+∫ adt ( 公式 31) 其中 P 為粒子位置, P0為粒子初始位置, V為粒子速度, V0為初始速度, a為粒子加速度。 (2) 阻尼運(yùn)動(dòng) , 在當(dāng)前運(yùn) 動(dòng)方向上的粒子根據(jù)阻尼的作用,其速度根據(jù)某種比例減少,一般取值如 ( 公式 32)所示: V=V0( 1d△ t) ( 公式 32) 其中 d 為阻尼運(yùn)動(dòng)的阻尼因子, d=[0, 1]。 (3) 螺旋運(yùn)動(dòng) , 螺旋運(yùn)動(dòng)能按照給頂軸進(jìn)行旋轉(zhuǎn),以產(chǎn)生粒子的翻滾等效果,使速度方向發(fā)生改變。 (4) 反彈運(yùn)動(dòng) , 反彈運(yùn)動(dòng)能改變粒子運(yùn)動(dòng)速度的大小與方向。對(duì)于無能量損失的反彈運(yùn)動(dòng),類似于光的反射,如 (公式 33)所示: V0=V2( V0 N) *N ( 公式 33) 其中 N 為反射面的方法向量。 粒子系統(tǒng)的構(gòu) 成 (1) 發(fā)射器(槍) 發(fā)射器好比一把的槍,粒子往往是由這把槍產(chǎn)生并發(fā)射的,發(fā)射器將每個(gè)粒子的粒子系統(tǒng)基本原理 13 參數(shù)初始化,并且提供所有粒子共同的屬性參數(shù)(將粒子的共同屬性保存在發(fā)射器而不是每個(gè)粒子里面會(huì)很大的節(jié)省內(nèi)存空間)。 發(fā)射器的一個(gè)重要參數(shù)是每個(gè)粒子的初始位置,一般而言,可能用到的發(fā)射器有點(diǎn)發(fā)射器(每個(gè)粒子都是從同一點(diǎn)發(fā)射),比如爆炸的火花,噴泉等,如果粒子的產(chǎn)生有一定的范圍,那就需要矩形發(fā)射器 [10],定義一個(gè)確定的長(zhǎng)寬,粒子在這個(gè)矩形范圍內(nèi)隨機(jī)生成。比如一片沼澤中的霧氣,一片區(qū)域中
點(diǎn)擊復(fù)制文檔內(nèi)容
試題試卷相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號(hào)-1