PyOgre Tutorial4
Particle Demo
1 # This code is in the Public Domain
2 import pyogre.ogre as ogre
3 import SampleFramework as sf
4
5 class ParticleApplication(sf.Application):
6 def _createScene(self):
7 sceneManager = self.sceneManager
8 camera = self.camera
9
10 sceneManager.ambientLight = (0.5, 0.5, 0.5)
11 entity = sceneManager.createEntity('head', 'ogrehead.mesh')
12 entity.setMaterialName('Examples/EnvMappedRustySteel')
13 sceneManager.rootSceneNode.createChildSceneNode().attachObject(entity)
14 particleSystemManager = ogre.ParticleSystemManager.getSingleton()
15 particleSystem1 = particleSystemManager.createSystem('Nimbus', 'Examples/GreenyNimbus')
16 sceneManager.rootSceneNode.createChildSceneNode().attachObject(particleSystem1)
17 self.fountainNode = sceneManager.rootSceneNode.createChildSceneNode()
18 particleSystem2 = particleSystemManager.createSystem('fountain1', 'Examples/PurpleFountain')
19 node = self.fountainNode.createChildSceneNode()
20 node.translate(200, -100, 0)
21 node.rotate((0, 0, -1), ogre.Radian(ogre.Degree(20)))
22 node.attachObject(particleSystem2)
23 particleSystem3 = particleSystemManager.createSystem('fountain2', 'Examples/PurpleFountain')
24 node = self.fountainNode.createChildSceneNode()
25 node.translate(-200, -100, 0)
26 node.rotate((0, 0, -1), ogre.Radian(ogre.Degree(-20)))
27 node.attachObject(particleSystem3)
28 particleSystem4 = particleSystemManager.createSystem('rain', 'Examples/Rain')
29 node = sceneManager.rootSceneNode.createChildSceneNode()
30 node.translate(0, 1000, 0)
31 node.attachObject(particleSystem4)
32 particleSystem4.fastForward(5)
33 def _createFrameListener(self):
34 self.frameListener = ParticleListener(self.renderWindow, self.camera, self.fountainNode)
35 self.root.addFrameListener(self.frameListener)
36
37 class ParticleListener(sf.FrameListener):
38 def __init__(self, renderWindow, camera, fountainNode):
39 sf.FrameListener.__init__(self, renderWindow, camera)
40 self.fountainNode = fountainNode
41 def frameStarted(self, frameEvent):
42 self.fountainNode.yaw(ogre.Radian(ogre.Degree(frameEvent.timeSinceLastFrame * 30.0)))
43 return sf.FrameListener.frameStarted(self, frameEvent)
44
45 if __name__ == '__main__':
46 application = ParticleApplication()
47 application.go()
Torna alla pagina precedente (Pagina 3),