⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 particlefxdemo.py

📁 赫赫大名的 OGRE 游戏引擎
💻 PY
字号:
import localogre as ogre
import sampleframework

class ParticleApplication(sampleframework.Application):
    def _createScene( self ):
        sceneManager = self.sceneManager
        camera = self.camera
        
        sceneManager.setAmbientLight( ogre.ColourValue(0.5, 0.5, 0.5) )

        entity = sceneManager.createEntity( ogre.String('head'), ogre.String('ogrehead.mesh') )
        entity.setMaterialName( ogre.String('Examples/EnvMappedRustySteel') )

        sceneManager.getRootSceneNode().createChildSceneNode( ogre.Vector3.ZERO,
                                                              ogre.Quaternion.IDENTITY ).attachObject(entity)

        particleSystemManager = ogre.ParticleSystemManager.getSingleton()
        particuleSystem1 = particleSystemManager.createSystem( ogre.String('Nimbus'),
                                                               ogre.String('Examples/GreenyNimbus') )
        sceneManager.getRootSceneNode().createChildSceneNode( ogre.Vector3.ZERO,
                                                              ogre.Quaternion.IDENTITY ).attachObject(particuleSystem1)

        self.fountainNode = sceneManager.getRootSceneNode().createChildSceneNode( ogre.Vector3.ZERO,
                                                                                  ogre.Quaternion.IDENTITY )

        particuleSystem2 = particleSystemManager.createSystem( ogre.String('fountain1'),
                                                               ogre.String('Examples/PurpleFountain') )
        node = self.fountainNode.createChildSceneNode( ogre.Vector3.ZERO, ogre.Quaternion.IDENTITY )
        node.translate( 200,-100,0, ogre.Node.TransformSpace.TS_PARENT )
        node.rotate( ogre.Vector3.UNIT_Z, 20, ogre.Node.TransformSpace.TS_LOCAL )
        node.attachObject( particuleSystem2 )

        particuleSystem3 = particleSystemManager.createSystem( ogre.String('fountain2'),
                                                               ogre.String('Examples/PurpleFountain') )
        node = self.fountainNode.createChildSceneNode( ogre.Vector3.ZERO, ogre.Quaternion.IDENTITY )
        node.translate( -200,-100,0, ogre.Node.TransformSpace.TS_PARENT )
        node.rotate( ogre.Vector3.UNIT_Z, -20, ogre.Node.TransformSpace.TS_LOCAL )
        node.attachObject( particuleSystem3 )

        particuleSystem4 = particleSystemManager.createSystem( ogre.String('rain'),
                                                               ogre.String('Examples/Rain') )
        node = sceneManager.getRootSceneNode().createChildSceneNode( ogre.Vector3.ZERO,
                                                                     ogre.Quaternion.IDENTITY )
        node.translate( 0,1000,0, ogre.Node.TransformSpace.TS_PARENT )
        node.attachObject( particuleSystem4 )
        particuleSystem4.fastForward( 5 )

    def _createFrameListener( self ):
        self.frameListener = ParticleListener( self.renderWindow, self.camera, self.fountainNode )
        self.root.addFrameListener( self.frameListener )

class ParticleListener(sampleframework.FrameListener):
    def __init__( self, renderWindow, camera, fountainNode ):
        sampleframework.FrameListener.__init__( self, renderWindow, camera )
        self.fountainNode = fountainNode

    def frameStarted( self, frameEvent ):
        self.fountainNode.yaw( frameEvent.timeSinceLastFrame * 30.0, ogre.Node.TransformSpace.TS_LOCAL )
        return sampleframework.FrameListener.frameStarted( self, frameEvent )

if __name__ == '__main__':
    application = ParticleApplication()
    application.go()
    

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -