資源描述:
《實驗八 粒子系統(tǒng)》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫。
1、實驗八:粒子系統(tǒng)姓名:班級:數(shù)字媒體與技術(shù)11(1)學(xué)號:2011329700132一、實驗?zāi)康恼莆樟W酉到y(tǒng)的的原理,熟悉Ogre中粒子系統(tǒng)的結(jié)構(gòu)和使用方法.二、實驗儀器VisualStudio2005三、實驗原理及過程//利用Ogre實現(xiàn)一個粒子系統(tǒng)效果,并描述程序?qū)崿F(xiàn)時的思路包括對每個調(diào)用的API以及腳本進行詳細(xì)說明粒子是用四邊形來表示的。它有長寬,和其方向,有數(shù)量和材質(zhì),還有重量。這些屬性封在粒子屬性變換器(Affector)中,Affector中包含顏色衰退變換器(?ColourFaderAffector)和線形影響變換器(LinearForceAffecto
2、r)。粒子的產(chǎn)生由粒子發(fā)生器(Emmiter)產(chǎn)生。它包含有盒狀粒子發(fā)生器(BoxEmmitter)和點狀粒子發(fā)生器(?PointEmmiter),由這些組成粒子腳本文件,以.particle為其擴展名。點狀粒子發(fā)生器隨機地從單一的點發(fā)射粒子;盒狀粒子發(fā)生器隨機的從一個區(qū)域發(fā)射粒子。通過創(chuàng)建Plugins你可以向ogre里增加一個新的發(fā)射器。當(dāng)前ogre只支持點狀粒子發(fā)生器和盒狀粒子發(fā)射器。當(dāng)粒子發(fā)生器不停的噴發(fā)出大量粒子時,就可以形成煙、火和爆炸等效果。粒子系統(tǒng)結(jié)構(gòu)圖:粒子系統(tǒng)腳本OGRE提供了粒子系統(tǒng)腳本語言,可以在腳本中設(shè)置粒子的各種屬性,而不用重新編譯程序。這
3、樣給使用者帶來了方便。需要注意的粒子系統(tǒng)腳本文件有自己的語法,類似C++:注釋用“//”,用“{}”來區(qū)分界限。但不支持在代碼后跟注釋。粒子系統(tǒng)在腳本中是以模板的形式定義的,你可以在程序運行期創(chuàng)建多個實例。載入粒子腳本粒子系統(tǒng)腳本是在系統(tǒng)初始化的時候載入的,缺省情況下系統(tǒng)在公共資源路徑(Root::addResourceLocation函數(shù)指定)下查找所有擴展名為“.particle”的文件并解析它們。如果你想指定其它擴展名可使用ParticleSystemManager::getSingleton().parseAllSources方法,如果想解析單個的粒子系統(tǒng)腳本
4、文件可使用ParticleSystemManager::getSingleton().parseScript方法。一旦粒子系統(tǒng)腳本被載入,你可以使用ParticleSystemManager::getSingleton().createSystem()方法來創(chuàng)建一個實例化的粒子系統(tǒng),該方法接收兩個參數(shù),一個該粒子系統(tǒng)的名稱,而另外一個參數(shù)是要參照的模板名稱(也就是腳本中定義過的模板名稱。格式可以在一個腳本文件中定義多個粒子系統(tǒng)模板。以下是一個典型的粒子腳本,該腳本包含三個粒子系統(tǒng)模板,它被用于OGRE的粒子DEMO中,你可以運行該DEMO來查看實際效果。當(dāng)然你也可以修
5、改這些屬性來改變效果。//粒子系統(tǒng)模板名//ExudesgreenyparticleswhichfloatupwardsExamples/GreenyNimbus{//粒子的MaterialmaterialExamples/Flare//粒子的寬度particle_width30//粒子的高度particle_height30//粒子的裁剪模式:整體包圍盒裁剪或單個粒子裁剪。cull_eachfalse//粒子數(shù)目quota10000//公告板的類型:point指代表粒子的四邊形總是面向攝像機。billboard_typepoint//盒狀粒子發(fā)射器emitterBo
6、x{//粒子發(fā)射時偏離direction的最大角度angle30//發(fā)射速率(個/秒)emission_rate30//粒子生存時間(秒)time_to_live50//粒子的發(fā)射方向direction010//速率velocity10//顏色起始值colour_range_start110//顏色結(jié)束值(在起始值和結(jié)束值之間取隨機數(shù))colour_range_end0.310.3//定義粒子發(fā)射器BOX的大小width60height60depth60}//LinearForce:對運動中的粒子的加上一個外力,影響其運動軌跡。//Makeemfloatupwards
7、affectorLinearForce{//指定外力的影響(用向量表示)force_vector01000//add:粒子的運動向量加上外力的向量。效果:勻加速運動。force_applicationadd}//ColourFader:影響粒子中的顏色//FaderaffectorColourFader{//每秒衰減0.25red-0.25green-0.25blue-0.25}}//AsparklypurplefountainExamples/PurpleFountain{materialExamples/Flare2particle_width2