PyOgre Tutorial4

From Ogre Wiki

Jump to: navigation, search

Particle Demo

Image:Pyogre4.JPG

# This code is in the Public Domain
import pyogre.ogre as ogre
import SampleFramework as sf

class ParticleApplication(sf.Application):
    def _createScene(self):
        sceneManager = self.sceneManager
        camera = self.camera
        
        sceneManager.ambientLight = (0.5, 0.5, 0.5) 

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

        sceneManager.rootSceneNode.createChildSceneNode().attachObject(entity)

        particleSystemManager = ogre.ParticleSystemManager.getSingleton()
        particleSystem1 = particleSystemManager.createSystem('Nimbus', 'Examples/GreenyNimbus')
        sceneManager.rootSceneNode.createChildSceneNode().attachObject(particleSystem1)

        self.fountainNode = sceneManager.rootSceneNode.createChildSceneNode()

        particleSystem2 = particleSystemManager.createSystem('fountain1', 'Examples/PurpleFountain')
        node = self.fountainNode.createChildSceneNode()
        node.translate(200, -100, 0)
        node.rotate((0, 0, -1), ogre.Radian(ogre.Degree(20)))
        node.attachObject(particleSystem2)

        particleSystem3 = particleSystemManager.createSystem('fountain2', 'Examples/PurpleFountain')
        node = self.fountainNode.createChildSceneNode()
        node.translate(-200, -100, 0)
        node.rotate((0, 0, -1), ogre.Radian(ogre.Degree(-20)))
        node.attachObject(particleSystem3)

        particleSystem4 = particleSystemManager.createSystem('rain', 'Examples/Rain')
        node = sceneManager.rootSceneNode.createChildSceneNode()
        node.translate(0, 1000, 0)
        node.attachObject(particleSystem4)
        particleSystem4.fastForward(5)

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

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

    def frameStarted(self, frameEvent):
        self.fountainNode.yaw(ogre.Radian(ogre.Degree(frameEvent.timeSinceLastFrame * 30.0)))
        return sf.FrameListener.frameStarted(self, frameEvent)

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

PyOgre Beginner Tutorial: Beginner 1 - Beginner 2 - Beginner 3 - Beginner 4 - Beginner 5

PyOgre Tutorial: Page 1 - Page 2 - Page 3 - Page 4

Ogre Tutorials: Basic Tutorial 1 - Intermediate Tutorial 1 - Tutorial 1

See also: PyOgre - Ogre Tutorials - Artist Tutorials - Ogre Articles - Cookbook

Personal tools
administration