資源描述:
《實(shí)驗八:粒子系統(tǒng)》由會員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在學(xué)術(shù)論文-天天文庫。
1、實(shí)驗八:粒子系統(tǒng)姓名:班級學(xué)號:一、實(shí)驗?zāi)康恼莆樟W酉到y(tǒng)的的原理,熟悉Ogre中粒子系統(tǒng)的結(jié)構(gòu)和使用方法.二、實(shí)驗儀器Pc,visualstudio2010三、實(shí)驗原理及過程//利用Ogre實(shí)現(xiàn)一個粒子系統(tǒng)效果,并描述程序?qū)崿F(xiàn)時的思路包括對每個調(diào)用的API以及腳本進(jìn)行詳細(xì)說明1、簡述粒子系統(tǒng)的基本單元是粒子,每個粒子一般具有形狀、大小、顏色、透明度、位置、速度、加速度、方向、生命周期等屬性。每一幀,粒子系統(tǒng)一般都會執(zhí)行如下步驟:(a)產(chǎn)生新的粒子,并賦予相應(yīng)的屬性;(b)刪除超過生命周期的粒子;
2、(c)更新粒子的動態(tài)屬性;(d)渲染所有有效粒子。2、組成它由ParticleSystemManage(粒子系統(tǒng)管理器)、ParticleSystem(粒子系統(tǒng))、ParticleSystemRenderer(粒子渲染器)、ParticleEmitter(粒子發(fā)射器)、ParticleAffector(粒子影響器)、Particle(粒子)等組成。(1)ParticleSystemManager(粒子系統(tǒng)管理器)此類類似于OGRE中的SceneManager,單件模式,內(nèi)含粒子系統(tǒng)工廠集合,粒子
3、發(fā)射器工廠集合,粒子影響器工廠集合,以及粒子渲染器工廠集合,用于創(chuàng)建和管理粒子系統(tǒng)、粒子發(fā)射器、粒子影響器、粒子渲染器。該類還負(fù)責(zé)加載和分析粒子系統(tǒng)腳本。(2)ParticleSystem(粒子系統(tǒng))具體的粒子系統(tǒng)類,它需要包含具體的ParticleEmitter集合、ParticleAffector集合、ParticleSystemRenderer,Particle集合,用于粒子的創(chuàng)建、更新、渲染。(3)ParticleEmitter(粒子發(fā)射器)用于創(chuàng)建粒子,賦予粒子初始屬性賦值,最重要的方
4、法是_initParticle(),該類為抽象類,OGRE中提供了如下派生類,自己也可以根據(jù)需要編寫自己的Emitter:?AreaEmitter?BoxEmitter?CylinderEmitter?EllipsoidEmitter?HollowEllipsoidEmitter?PointEmitter?RingEmitter(4)ParticleAffector(粒子影響器)用于在粒子的生命周期內(nèi)更新粒子的屬性,最重要的方法是_affectParticles(),OGRE中提供了如下派生類,
5、自己也可以根據(jù)需要編寫自己的Affector:?ColourFaderAffector?ColourImageAffector?ColourInterpolatorAffector?DeflectorPlaneAffector?DirectionRandomiserAffector?LinearForceAffector?RotationAffector?ScaleAffector(6)ParticleSystemRenderer(粒子渲染器)該類用于渲染粒子系統(tǒng),該類為抽象類,ORGE提供了B
6、illboardParticleRenderer具體類,自己也可以根據(jù)需要編寫自己的粒子渲染類。(7)Particle(粒子)粒子系統(tǒng)的基本元素,粒子,存儲了粒子的所有屬性和狀態(tài)。3、OGRE粒子系統(tǒng)渲染流程(1)初始化ParticleSystemManager::addEmitterFactory()ParticleSystemManager::addAffectorFactory()ParticleSystemManager::addRendererFactory()ParticleSyst
7、emManager::createTemplate()ParticleSystem::setRenderer()ParticleSystemManager::_createRenderer()ParticleSystem::addEmitter()ParticleSystemManager::_createEmitter()ParticleSystem::addAffector()ParticleSystemManager::_createAffector()(2)每一幀,執(zhí)行如下更新Parti
8、cleSystem::_update()ParticleSystem::_triggerAffectors()Affector::_affectParticles()ParticleSystem::_triggerEmitters()Emitter::_initParticle()ParticleSystem::_updateRenderQueue()ParticleRenderer::_updateRenderQueue()四、實(shí)驗結(jié)果五、實(shí)驗心得六、主要代碼//ParticleFX.h#if