Revision: 500
http://python-ogre.svn.sourceforge.net/python-ogre/?rev=500&view=rev
Author: bharling
Date: 2007-12-17 09:52:49 -0800 (Mon, 17 Dec 2007)
Log Message:
-----------
Removed file/folder
Removed Paths:
-------------
trunk/python-ogre/demos/showcase_01/Demo_Forest.py
trunk/python-ogre/demos/showcase_01/Demo_Forest.py.bak
trunk/python-ogre/demos/showcase_01/Ogre.log
trunk/python-ogre/demos/showcase_01/SampleFramework.py
trunk/python-ogre/demos/showcase_01/media/
trunk/python-ogre/demos/showcase_01/ogre.cfg
trunk/python-ogre/demos/showcase_01/plugins.cfg
trunk/python-ogre/demos/showcase_01/resources.cfg
trunk/python-ogre/demos/showcase_01/triplanar_terrain.cfg
Deleted: trunk/python-ogre/demos/showcase_01/Demo_Forest.py
===================================================================
--- trunk/python-ogre/demos/showcase_01/Demo_Forest.py 2007-12-16 14:20:20 UTC (rev 499)
+++ trunk/python-ogre/demos/showcase_01/Demo_Forest.py 2007-12-17 17:52:49 UTC (rev 500)
@@ -1,330 +0,0 @@
-
-
-
-
-import warnings
-warnings.simplefilter('ignore', RuntimeWarning)
-import ogre.renderer.OGRE as ogre
-import ogre.addons.ogreforests as forests
-import SampleFramework as sf
-import math, random
-warnings.simplefilter('default', RuntimeWarning)
-
-class ForestApplication(sf.Application):
- def _chooseSceneManager(self):
- # self.sceneManager = self.root.createSceneManager("TerrainSceneManager")
- self.sceneManager = self.root.createSceneManager(ogre.ST_EXTERIOR_CLOSE)
- # self.sceneManager.setShadowTechnique(ogre.SHADOWTYPE_TEXTURE_ADDITIVE)
-
- def getTerrainHeight( self, x, z ):
- if ( x < 0 or z < 0 or x > 1500 or z > 1500 ): return 0
- self.updateRay.setOrigin( ogre.Vector3(x, 0.0, z) )
- self.updateRay.setDirection( ogre.Vector3.UNIT_Y )
- self.raySceneQuery.setRay( self.updateRay )
- self.raySceneQuery.execute( self.raySceneQueryListener )
- return self.raySceneQueryListener.resultDistance
-
- ##Loads world
- def _createScene(self):
- camera = self.camera
-
- ## Set ambient light
- self.sceneManager.setAmbientLight((0.5, 0.5, 0.5))
-
- ## Create a light
- l = self.sceneManager.createLight("MainLight")
- l.setPosition(20,80,50)
- ## Fog
- ## NB it's VERY important to set this before calling setWorldGeometry
- ## because the vertex program picked will be different
- ##ColourValue fadeColour(0.93, 0.86, 0.76)
- fadeColour = (120.0/255, 173.0/255, 246.0/255)
- self.sceneManager.setFog( ogre.FOG_LINEAR, fadeColour, .001, 200, 1000)
- self.renderWindow.getViewport(0).setBackgroundColour(fadeColour)
-
- terrain_cfg = "./triplanar_terrain.cfg"
-
- self.sceneManager.setWorldGeometry( terrain_cfg )
- ## Infinite far plane?
- if self.root.getRenderSystem().getCapabilities().hasCapability(ogre.RSC_INFINITE_FAR_PLANE):
- camera.setFarClipDistance(0)
- ##camera.setFarClipDistance(1000)
-
- ## Set a nice viewpoint
- camera.setPosition(750,100,750)
- camera.lookAt(750, 100, 750+1)
- ##camera.setPolygonMode(PM_WIREFRAME)
-
- plane = ogre.Plane()
- n = plane.normal
- n.x, n.y, n.z = 0, -1, 0
- plane.d = 5000
- self.sceneManager.setSkyPlane(True, plane, 'Examples/CloudySky', 1000, 3)
-
- #self.sceneManager.setSkyPlane(True, 'Examples/CloudySky', 5, 8)
-
-
- ##---- PagedGeometry test ----
-
- ## TREES
- ##Initialize the PagedGeometry engine
- self.trees = forests.PagedGeometry()
- self.trees.setCamera( camera )
- self.trees.setPageSize( 100 )
- self.trees.setBounds( ogre.FloatRect(0, 0, 1500, 1500) )
-
- ##Set up LODs
- ##self.trees.addDetailLevelEntityPage(50, 50)
- self.trees.addDetailLevelBatchPage(50, 50)
- self.trees.addDetailLevelImpostorPage(900, 50)
-
- ##Set up a TreeLoader for easy use
- self.treeLoader = forests.TreeLoader2D( self.trees, ogre.FloatRect(0, 0, 1500, 1500) )
- self.trees.setPageLoader(self.treeLoader)
- self.treeLoader.setHeightFunction(self, "getTerrainHeight")
-
- ##And add 20,000 trees to the scene through the "easy-to-use" TreeLoader class
- palm1 = self.sceneManager.createEntity("MyTree", "KinkyPalm.mesh")
- palm2 = self.sceneManager.createEntity("pineTree", "StraightPalm.mesh")
- palm3 = self.sceneManager.createEntity("palmBendy", "BendyPalm.mesh")
- bush1 = self.sceneManager.createEntity("bush1", "BigDarkBush.mesh")
- birch = self.sceneManager.createEntity("birch", "birch.mesh")
- benTree = self.sceneManager.createEntity("benTree", "benTree.mesh")
- spot_shroom = self.sceneManager.createEntity("redShroom", "spotty_shroom.mesh")
- blue_shroom = self.sceneManager.createEntity("blueShroom", "blue_shroom.mesh")
- beech = self.sceneManager.createEntity("beech", "beech_tree.mesh")
-
- self.treeModels = [ bush1, benTree, spot_shroom, blue_shroom, beech]
- # fix the damn rotations
-## rotNode = self.sceneManager.getRootSceneNode().createChildSceneNode( "rotNode" )
-## rotNode.attachObject( self.palm1 )
-## rotNode.attachObject( self.palm2 )
-## rotNode.attachObject( self.palm3 )
-## rotNode.attachObject( self.bush1 )
-## rotNode.pitch(ogre.Degree(-90).valueRadians())
-
-
-
- x=0
- z=0
- for i in range (10000):
- yaw = random.randrange(0, 360)
-
- if (random.randrange(0, 1000) <= 800):
- x += random.randrange(-10.0, 10.0)
- z += random.randrange(-10.0, 10.0)
- if (x < 0): x = 0
- elif (x > 1500): x = 1500
- if (z < 0): z = 0
- elif (z > 1500): z = 1500
- else:
- x = random.randrange(0, 1500)
- z = random.randrange(0, 1500)
-
- scale = random.randrange(9, 20) / 10
-
- t_type = random.randrange(0, len(self.treeModels))
- self.treeLoader.addTree(self.treeModels[t_type], ogre.Vector2(x, z), ogre.Degree(yaw), scale)
-
-## if t_type == 0:
-## self.treeLoader.addTree(self.palm1, ogre.Vector2(x, z), ogre.Degree(yaw), scale)
-## elif t_type == 1:
-## self.treeLoader.addTree(self.palm2, ogre.Vector2(x, z), ogre.Degree(yaw), scale)
-## elif t_type == 2:
-## self.treeLoader.addTree(self.palm3, ogre.Vector2(x, z), ogre.Degree(yaw), scale)
-## elif t_type == 3:
-## self.treeLoader.addTree(self.bush1, ogre.Vector2(x, z), ogre.Degree(yaw), scale)
- ##Grass
-
- ##Initialize the PagedGeometry engine
- self.grass = forests.PagedGeometry(camera, 30)
- ##trees = new PagedGeometry(camera, 50, ogre.FloatRect(0, 0, 1500, 1500))
-
- ##Set up LODs
- self.grass.addDetailLevelGrassPage(100.0,0.0)
-
- ##Set up a TreeLoader for easy use
- self.grassLoader = forests.GrassLoader(self.grass)
- self.grass.setPageLoader(self.grassLoader)
- self.grassLoader.setHeightFunction(self, "getTerrainHeight")
-
- ## iterate grass materials
- for nam in ["grass", "dry_grass", "tall_grass"]:
- grassLayer = self.grassLoader.addLayer(nam)
-
- grassLayer.setAnimationEnabled(True)
- grassLayer.setSwaySpeed(1.5)
- grassLayer.setSwayLength(0.08)
- grassLayer.setSwayDistribution(10.0)
-
- grassLayer.setDensity(0.6)
-
- grassLayer.setMapBounds(ogre.FloatRect(0, 0, 1500, 1500))
-
- grassLayer.setColorMap("terrain_texture_greeb.jpg")
- grassLayer.setColorMapFilter(forests.MAPFILTER_BILINEAR)
-
- grassLayer.setDensityMap("densitymap.png")
- grassLayer.setDensityMapFilter(forests.MAPFILTER_NONE)
-
- ##grassLayer.setMinimumSize(0.5,0.5)
- ##grassLayer.setMaximumSize(1.0, 1.0)
-
- grassLayer.setMinimumSize(4.0,2.0)
- grassLayer.setMaximumSize(4.0,2.0)
-
- grassLayer.setFadeTechnique(forests.FADETECH_GROW)
-
- self.robots = []
-
- for i in range(5):
- robo = Robot(self)
- robo.spawn(ogre.Vector3(700 + (i * 10), 100, 750), i)
- self.robots.append(robo)
-
-
-
- #rNode.translate(ogre.Vector3(750,70,760))
- #rNode.setScale(ogre.Vector3(0.5,0.5,0.5))
-
- self.updateRay = ogre.Ray();
-
- ##RaySceneQuery for terrain height check
- self.updateRay.setOrigin(camera.getPosition())
- self.updateRay.setDirection(ogre.Vector3.NEGATIVE_UNIT_Y)
- self.raySceneQuery = self.sceneManager.createRayQuery(self.updateRay)
- self.raySceneQuery.setQueryTypeMask(ogre.SceneManager.WORLD_GEOMETRY_TYPE_MASK )
- self.raySceneQuery.setWorldFragmentType(ogre.SceneQuery.WFT_SINGLE_INTERSECTION)
- self.raySceneQueryListener = myRaySceneQueryListener()
-
- tipi_ent = self.sceneManager.createEntity("tipi", "tipi.mesh")
- tipi_node = self.sceneManager.getRootSceneNode().createChildSceneNode()
- tipi_node.attachObject(tipi_ent)
- tipi_node.setPosition(ogre.Vector3(700, 100, 750))
- pos = tipi_node.getPosition()
- tipi_node.setPosition(pos.x, self.getTerrainHeight(700,750) + 0, pos.z)
-
- def _createFrameListener(self):
- self.frameListener = GrassFrameListener(self)
- self.root.addFrameListener(self.frameListener)
-
- self.roboListener = robotsListener(self)
- self.root.addFrameListener(self.roboListener)
-
-
-class Robot:
- def __init__(self, app):
- self.app = app
- self.speed = 5.0
- self.decisionTime = 5.0
- self.direction = ogre.Vector2(random.uniform(-1.0, 1.0), random.uniform(-1.0, 1.0))
- self.mustRotate = True
-
- def spawn(self, position, numActors):
- self.timer = 0.0
- self.ent = self.app.sceneManager.createEntity("robot_" + str(numActors), "robot.mesh")
- self.posNode = self.app.sceneManager.getRootSceneNode().createChildSceneNode()
- self.rotNode = self.posNode.createChildSceneNode()
- self.posNode.setScale(ogre.Vector3(0.1, 0.1, 0.1))
- self.rotNode.attachObject(self.ent)
- self.posNode.setPosition(position)
- self.rotNode.yaw(ogre.Degree(90))
- print self.posNode.position
- self.animation = self.ent.getAnimationState('Walk')
- self.animation.Enabled = True
-
-
-
- def addTime(self, time):
- self.animation.addTime(time)
- #print self.Node.position
- self.timer += time
- if self.timer >= self.decisionTime:
- self.timer = 0
- self.direction = ogre.Vector2(random.uniform(-1.0, 1.0), random.uniform(-1.0, 1.0))
- self.direction.normalise()
- self.mustRotate = True
- self.posNode.setDirection(self.direction.x, 0, self.direction.y, self.posNode.TS_WORLD)
- print self.posNode.position
- if self.mustRotate:
- pass
-
- pos = self.posNode.position
- off = self.direction * (self.speed * time)
- self.posNode.setPosition(pos.x + off.x, pos.y, pos.z + off.y)
-
-
-
-class robotsListener(sf.FrameListener):
- def __init__(self, app):
- sf.FrameListener.__init__(self, app.renderWindow, app.camera)
- self.app = app
- self.raySceneQuery = app.sceneManager.createRayQuery(ogre.Ray(app.camera.getPosition(),
- ogre.Vector3.NEGATIVE_UNIT_Y))
- self.Ray = ogre.Ray()
-
-
- def frameStarted(self, frameEvent):
- for r in self.app.robots:
- r.addTime(frameEvent.timeSinceLastFrame)
- self.Ray.setOrigin(r.posNode.position)
- self.Ray.setDirection(ogre.Vector3.NEGATIVE_UNIT_Y)
- self.raySceneQuery.Ray = self.Ray
- for queryResult in self.raySceneQuery.execute():
- if queryResult.worldFragment is not None:
- pos = r.posNode.position
- r.posNode.setPosition(pos.x, pos.y - queryResult.distance + 0.6, pos.z)
- break
- return sf.FrameListener.frameStarted(self, frameEvent)
-
-class GrassFrameListener(sf.FrameListener):
- def __init__(self, app):
- sf.FrameListener.__init__(self, app.renderWindow, app.camera)
- self.app = app
- self.timeSince = 0.0
- self.updateToggle = True
- # use this to tweak the persons position
- self.raySceneQuery = app.sceneManager.createRayQuery(ogre.Ray(app.camera.getPosition(),
- ogre.Vector3.NEGATIVE_UNIT_Y))
-
-
- def frameStarted(self, frameEvent):
- if self.updateToggle:
- self.app.trees.update()
- else:
- self.app.grass.update()
- self.updateToggle = not self.updateToggle
- self.app.grassLoader.updateAnimation()
- self.timeSince = frameEvent.timeSinceLastFrame
- updateRay = ogre.Ray()
- updateRay.setOrigin (self.camera.getPosition() + ogre.Vector3(0.0, 10.0, 0.0))
- updateRay.setDirection (ogre.Vector3.NEGATIVE_UNIT_Y)
- self.raySceneQuery.Ray = updateRay
- for queryResult in self.raySceneQuery.execute():
- if queryResult.worldFragment is not None:
- pos = self.camera.getPosition()
- self.camera.setPosition (pos.x, pos.y - queryResult.distance + 18.0, pos.z)
- break
- return sf.FrameListener.frameStarted(self, frameEvent)
-
- def _moveCamera(self):
- self.camera.yaw(self.rotationX)
- self.camera.pitch(self.rotationY)
- try:
- self.camera.translate(self.translateVector * 0.1 * self.timeSince) # for using OgreRefApp
- except AttributeError:
- self.camera.moveRelative(self.translateVector * 0.1 * self.timeSince)
-
-
-class myRaySceneQueryListener ( ogre.RaySceneQueryListener ):
- def queryResult(self, fragment, distance):
- self.resultDistance = distance
- return False
-
-
-if __name__ == '__main__':
- try:
- application = ForestApplication()
- application.go()
- except ogre.OgreException, e:
- print e
Deleted: trunk/python-ogre/demos/showcase_01/Demo_Forest.py.bak
===================================================================
--- trunk/python-ogre/demos/showcase_01/Demo_Forest.py.bak 2007-12-16 14:20:20 UTC (rev 499)
+++ trunk/python-ogre/demos/showcase_01/Demo_Forest.py.bak 2007-12-17 17:52:49 UTC (rev 500)
@@ -1,326 +0,0 @@
-
-
-
-
-import warnings
-warnings.simplefilter('ignore', RuntimeWarning)
-import ogre.renderer.OGRE as ogre
-import ogre.addons.ogreforests as forests
-import SampleFramework as sf
-import math, random
-warnings.simplefilter('default', RuntimeWarning)
-
-class ForestApplication(sf.Application):
- def _chooseSceneManager(self):
- # self.sceneManager = self.root.createSceneManager("TerrainSceneManager")
- self.sceneManager = self.root.createSceneManager(ogre.ST_EXTERIOR_CLOSE)
- # self.sceneManager.setShadowTechnique(ogre.SHADOWTYPE_TEXTURE_ADDITIVE)
-
- def getTerrainHeight( self, x, z ):
- if ( x < 0 or z < 0 or x > 1500 or z > 1500 ): return 0
- self.updateRay.setOrigin( ogre.Vector3(x, 0.0, z) )
- self.updateRay.setDirection( ogre.Vector3.UNIT_Y )
- self.raySceneQuery.setRay( self.updateRay )
- self.raySceneQuery.execute( self.raySceneQueryListener )
- return self.raySceneQueryListener.resultDistance
-
- ##Loads world
- def _createScene(self):
- camera = self.camera
-
- ## Set ambient light
- self.sceneManager.setAmbientLight((0.5, 0.5, 0.5))
-
- ## Create a light
- l = self.sceneManager.createLight("MainLight")
- l.setPosition(20,80,50)
- ## Fog
- ## NB it's VERY important to set this before calling setWorldGeometry
- ## because the vertex program picked will be different
- ##ColourValue fadeColour(0.93, 0.86, 0.76)
- fadeColour = (120.0/255, 173.0/255, 246.0/255)
- self.sceneManager.setFog( ogre.FOG_LINEAR, fadeColour, .001, 200, 1000)
- self.renderWindow.getViewport(0).setBackgroundColour(fadeColour)
-
- terrain_cfg = "./triplanar_terrain.cfg"
-
- self.sceneManager.setWorldGeometry( terrain_cfg )
- ## Infinite far plane?
- if self.root.getRenderSystem().getCapabilities().hasCapability(ogre.RSC_INFINITE_FAR_PLANE):
- camera.setFarClipDistance(0)
- ##camera.setFarClipDistance(1000)
-
- ## Set a nice viewpoint
- camera.setPosition(750,100,750)
- camera.lookAt(750, 100, 750+1)
- ##camera.setPolygonMode(PM_WIREFRAME)
-
- plane = ogre.Plane()
- n = plane.normal
- n.x, n.y, n.z = 0, -1, 0
- plane.d = 5000
- self.sceneManager.setSkyPlane(True, plane, 'Examples/CloudySky', 1000, 3)
-
- #self.sceneManager.setSkyPlane(True, 'Examples/CloudySky', 5, 8)
-
-
- ##---- PagedGeometry test ----
-
- ## TREES
- ##Initialize the PagedGeometry engine
- self.trees = forests.PagedGeometry()
- self.trees.setCamera( camera )
- self.trees.setPageSize( 100 )
- self.trees.setBounds( ogre.FloatRect(0, 0, 1500, 1500) )
-
- ##Set up LODs
- ##self.trees.addDetailLevelEntityPage(50, 50)
- self.trees.addDetailLevelBatchPage(50, 50)
- self.trees.addDetailLevelImpostorPage(900, 50)
-
- ##Set up a TreeLoader for easy use
- self.treeLoader = forests.TreeLoader2D( self.trees, ogre.FloatRect(0, 0, 1500, 1500) )
- self.trees.setPageLoader(self.treeLoader)
- self.treeLoader.setHeightFunction(self, "getTerrainHeight")
-
- ##And add 20,000 trees to the scene through the "easy-to-use" TreeLoader class
- palm1 = self.sceneManager.createEntity("MyTree", "KinkyPalm.mesh")
- palm2 = self.sceneManager.createEntity("pineTree", "StraightPalm.mesh")
- palm3 = self.sceneManager.createEntity("palmBendy", "BendyPalm.mesh")
- bush1 = self.sceneManager.createEntity("bush1", "BigDarkBush.mesh")
- birch = self.sceneManager.createEntity("birch", "birch.mesh")
- benTree = self.sceneManager.createEntity("benTree", "benTree.mesh")
- spot_shroom = self.sceneManager.createEntity("redShroom", "spotty_shroom.mesh")
- blue_shroom = self.sceneManager.createEntity("blueShroom", "blue_shroom.mesh")
-
- self.treeModels = [ bush1, benTree, spot_shroom, blue_shroom]
- # fix the damn rotations
-## rotNode = self.sceneManager.getRootSceneNode().createChildSceneNode( "rotNode" )
-## rotNode.attachObject( self.palm1 )
-## rotNode.attachObject( self.palm2 )
-## rotNode.attachObject( self.palm3 )
-## rotNode.attachObject( self.bush1 )
-## rotNode.pitch(ogre.Degree(-90).valueRadians())
-
-
-
- x=0
- z=0
- for i in range (10000):
- yaw = random.randrange(0, 360)
-
- if (random.randrange(0, 1000) <= 800):
- x += random.randrange(-10.0, 10.0)
- z += random.randrange(-10.0, 10.0)
- if (x < 0): x = 0
- elif (x > 1500): x = 1500
- if (z < 0): z = 0
- elif (z > 1500): z = 1500
- else:
- x = random.randrange(0, 1500)
- z = random.randrange(0, 1500)
-
- scale = random.randrange(9, 20) / 10
-
- t_type = random.randrange(0, len(self.treeModels))
- self.treeLoader.addTree(self.treeModels[t_type], ogre.Vector2(x, z), ogre.Degree(yaw), scale)
-
-## if t_type == 0:
-## self.treeLoader.addTree(self.palm1, ogre.Vector2(x, z), ogre.Degree(yaw), scale)
-## elif t_type == 1:
-## self.treeLoader.addTree(self.palm2, ogre.Vector2(x, z), ogre.Degree(yaw), scale)
-## elif t_type == 2:
-## self.treeLoader.addTree(self.palm3, ogre.Vector2(x, z), ogre.Degree(yaw), scale)
-## elif t_type == 3:
-## self.treeLoader.addTree(self.bush1, ogre.Vector2(x, z), ogre.Degree(yaw), scale)
- ##Grass
-
- ##Initialize the PagedGeometry engine
- self.grass = forests.PagedGeometry(camera, 30)
- ##trees = new PagedGeometry(camera, 50, ogre.FloatRect(0, 0, 1500, 1500))
-
- ##Set up LODs
- self.grass.addDetailLevelGrassPage(100.0,0.0)
-
- ##Set up a TreeLoader for easy use
- self.grassLoader = forests.GrassLoader(self.grass)
- self.grass.setPageLoader(self.grassLoader)
- self.grassLoader.setHeightFunction(self, "getTerrainHeight")
-
- ## iterate grass materials
- for nam in ["grass", "dry_grass"]:
- grassLayer = self.grassLoader.addLayer(nam)
-
- grassLayer.setAnimationEnabled(True)
- grassLayer.setSwaySpeed(1.5)
- grassLayer.setSwayLength(0.08)
- grassLayer.setSwayDistribution(10.0)
-
- grassLayer.setDensity(0.6)
-
- grassLayer.setMapBounds(ogre.FloatRect(0, 0, 1500, 1500))
-
- grassLayer.setColorMap("terrain_texture_greeb.jpg")
- grassLayer.setColorMapFilter(forests.MAPFILTER_BILINEAR)
-
- grassLayer.setDensityMap("densitymap.png")
- grassLayer.setDensityMapFilter(forests.MAPFILTER_NONE)
-
- ##grassLayer.setMinimumSize(0.5,0.5)
- ##grassLayer.setMaximumSize(1.0, 1.0)
-
- grassLayer.setMinimumSize(4.0,2.0)
- grassLayer.setMaximumSize(4.0,2.0)
-
- grassLayer.setFadeTechnique(forests.FADETECH_GROW)
-
- self.robots = []
-
- for i in range(5):
- robo = Robot(self)
- robo.spawn(ogre.Vector3(700 + (i * 10), 100, 750), i)
- self.robots.append(robo)
-
- tipi_ent = self.sceneManager.createEntity("tipi", "tipi.mesh")
- tipi_node = self.sceneManager.getRootSceneNode().createChildSceneNode()
- tipi_node.attachObject(tipi_ent)
- tipi_node.setPosition(ogre.Vector3(700, 100, 750))
- tipi_node.position.y = self.getTerrainHeight(700,750)
-
- #rNode.translate(ogre.Vector3(750,70,760))
- #rNode.setScale(ogre.Vector3(0.5,0.5,0.5))
-
- self.updateRay = ogre.Ray();
-
- ##RaySceneQuery for terrain height check
- self.updateRay.setOrigin(camera.getPosition())
- self.updateRay.setDirection(ogre.Vector3.NEGATIVE_UNIT_Y)
- self.raySceneQuery = self.sceneManager.createRayQuery(self.updateRay)
- self.raySceneQuery.setQueryTypeMask(ogre.SceneManager.WORLD_GEOMETRY_TYPE_MASK )
- self.raySceneQuery.setWorldFragmentType(ogre.SceneQuery.WFT_SINGLE_INTERSECTION)
- self.raySceneQueryListener = myRaySceneQueryListener()
-
- def _createFrameListener(self):
- self.frameListener = GrassFrameListener(self)
- self.root.addFrameListener(self.frameListener)
-
- self.roboListener = robotsListener(self)
- self.root.addFrameListener(self.roboListener)
-
-
-class Robot:
- def __init__(self, app):
- self.app = app
- self.speed = 5.0
- self.decisionTime = 5.0
- self.direction = ogre.Vector2(random.uniform(-1.0, 1.0), random.uniform(-1.0, 1.0))
- self.mustRotate = True
-
- def spawn(self, position, numActors):
- self.timer = 0.0
- self.ent = self.app.sceneManager.createEntity("robot_" + str(numActors), "robot.mesh")
- self.posNode = self.app.sceneManager.getRootSceneNode().createChildSceneNode()
- self.rotNode = self.posNode.createChildSceneNode()
- self.posNode.setScale(ogre.Vector3(0.1, 0.1, 0.1))
- self.rotNode.attachObject(self.ent)
- self.posNode.setPosition(position)
- self.rotNode.yaw(ogre.Degree(90))
- print self.posNode.position
- self.animation = self.ent.getAnimationState('Walk')
- self.animation.Enabled = True
-
-
-
- def addTime(self, time):
- self.animation.addTime(time)
- #print self.Node.position
- self.timer += time
- if self.timer >= self.decisionTime:
- self.timer = 0
- self.direction = ogre.Vector2(random.uniform(-1.0, 1.0), random.uniform(-1.0, 1.0))
- self.direction.normalise()
- self.mustRotate = True
- self.posNode.setDirection(self.direction.x, 0, self.direction.y, self.posNode.TS_WORLD)
- print self.posNode.position
- if self.mustRotate:
- pass
-
- pos = self.posNode.position
- off = self.direction * (self.speed * time)
- self.posNode.setPosition(pos.x + off.x, pos.y, pos.z + off.y)
-
-
-
-class robotsListener(sf.FrameListener):
- def __init__(self, app):
- sf.FrameListener.__init__(self, app.renderWindow, app.camera)
- self.app = app
- self.raySceneQuery = app.sceneManager.createRayQuery(ogre.Ray(app.camera.getPosition(),
- ogre.Vector3.NEGATIVE_UNIT_Y))
- self.Ray = ogre.Ray()
-
-
- def frameStarted(self, frameEvent):
- for r in self.app.robots:
- r.addTime(frameEvent.timeSinceLastFrame)
- self.Ray.setOrigin(r.posNode.position)
- self.Ray.setDirection(ogre.Vector3.NEGATIVE_UNIT_Y)
- self.raySceneQuery.Ray = self.Ray
- for queryResult in self.raySceneQuery.execute():
- if queryResult.worldFragment is not None:
- pos = r.posNode.position
- r.posNode.setPosition(pos.x, pos.y - queryResult.distance + 0.6, pos.z)
- break
- return sf.FrameListener.frameStarted(self, frameEvent)
-
-class GrassFrameListener(sf.FrameListener):
- def __init__(self, app):
- sf.FrameListener.__init__(self, app.renderWindow, app.camera)
- self.app = app
- self.timeSince = 0.0
- self.updateToggle = True
- # use this to tweak the persons position
- self.raySceneQuery = app.sceneManager.createRayQuery(ogre.Ray(app.camera.getPosition(),
- ogre.Vector3.NEGATIVE_UNIT_Y))
-
-
- def frameStarted(self, frameEvent):
- if self.updateToggle:
- self.app.trees.update()
- else:
- self.app.grass.update()
- self.updateToggle = not self.updateToggle
- self.app.grassLoader.updateAnimation()
- self.timeSince = frameEvent.timeSinceLastFrame
- updateRay = ogre.Ray()
- updateRay.setOrigin (self.camera.getPosition() + ogre.Vector3(0.0, 10.0, 0.0))
- updateRay.setDirection (ogre.Vector3.NEGATIVE_UNIT_Y)
- self.raySceneQuery.Ray = updateRay
- for queryResult in self.raySceneQuery.execute():
- if queryResult.worldFragment is not None:
- pos = self.camera.getPosition()
- self.camera.setPosition (pos.x, pos.y - queryResult.distance + 18.0, pos.z)
- break
- return sf.FrameListener.frameStarted(self, frameEvent)
-
- def _moveCamera(self):
- self.camera.yaw(self.rotationX)
- self.camera.pitch(self.rotationY)
- try:
- self.camera.translate(self.translateVector * 0.1 * self.timeSince) # for using OgreRefApp
- except AttributeError:
- self.camera.moveRelative(self.translateVector * 0.1 * self.timeSince)
-
-
-class myRaySceneQueryListener ( ogre.RaySceneQueryListener ):
- def queryResult(self, fragment, distance):
- self.resultDistance = distance
- return False
-
-
-if __name__ == '__main__':
- try:
- application = ForestApplication()
- application.go()
- except ogre.OgreException, e:
- print e
Deleted: trunk/python-ogre/demos/showcase_01/Ogre.log
===================================================================
--- trunk/python-ogre/demos/showcase_01/Ogre.log 2007-12-16 14:20:20 UTC (rev 499)
+++ trunk/python-ogre/demos/showcase_01/Ogre.log 2007-12-17 17:52:49 UTC (rev 500)
@@ -1,30 +0,0 @@
-08:23:00: Creating resource group General
-08:23:00: Creating resource group Internal
-08:23:00: Creating resource group Autodetect
-08:23:00: SceneManagerFactory for type 'DefaultSceneManager' registered.
-08:23:00: Registering ResourceManager for type Material
-08:23:00: Registering ResourceManager for type Mesh
-08:23:00: Registering ResourceManager for type Skeleton
-08:23:00: MovableObjectFactory for type 'ParticleSystem' registered.
-08:23:00: OverlayElementFactory for type Panel registered.
-08:23:00: OverlayElementFactory for type BorderPanel registered.
-08:23:00: OverlayElementFactory for type TextArea registered.
-08:23:00: Registering ResourceManager for type Font
-08:23:00: ArchiveFactory for archive type FileSystem registered.
-08:23:00: ArchiveFactory for archive type Zip registered.
-08:23:00: FreeImage version: 3.9.2
-08:23:00: This program uses FreeImage, a free, open source image library supporting all common bitmap formats. See http://freeimage.sourceforge.net for details
-08:23:00: Supported formats: bmp,ico,jpg,jif,jpeg,jpe,jng,koa,iff,lbm,mng,pbm,pbm,pcd,pcx,pgm,pgm,png,ppm,ppm,ras,tga,targa,tif,tiff,wap,wbmp,wbm,psd,cut,xbm,xpm,gif,hdr,g3,sgi
-08:23:00: DDS codec registering
-08:23:00: Registering ResourceManager for type HighLevelGpuProgram
-08:23:00: Registering ResourceManager for type Compositor
-08:23:00: MovableObjectFactory for type 'Entity' registered.
-08:23:00: MovableObjectFactory for type 'Light' registered.
-08:23:00: MovableObjectFactory for type 'BillboardSet' registered.
-08:23:00: MovableObjectFactory for type 'ManualObject' registered.
-08:23:00: MovableObjectFactory for type 'BillboardChain' registered.
-08:23:00: MovableObjectFactory for type 'RibbonTrail' registered.
-08:23:00: Loading library ../../plugins\RenderSystem_GL.dll
-08:23:00: OGRE EXCEPTION(7:InternalErrorException): Could not load dynamic library ../../plugins\RenderSystem_GL.dll. System Error: The specified module could not be found.
-
- in DynLib::load at ..\src\OgreDynLib.cpp (line 80)
Deleted: trunk/python-ogre/demos/showcase_01/SampleFramework.py
===================================================================
--- trunk/python-ogre/demos/showcase_01/SampleFramework.py 2007-12-16 14:20:20 UTC (rev 499)
+++ trunk/python-ogre/demos/showcase_01/SampleFramework.py 2007-12-17 17:52:49 UTC (rev 500)
@@ -1,14 +0,0 @@
-# This code is in the Public Domain
-#
-
-import ogre.renderer.OGRE as ogre
-
-# We don't use the verisons but it's nice to set them up...
-ogre.OgreVersion = ogre.GetOgreVersion()
-ogre.OgreVersionString = ogre.OgreVersion[0] + ogre.OgreVersion[1] + ogre.OgreVersion[2]
-ogre.PythonOgreVersion = ogre.GetPythonOgreVersion()
-
-from ogre.renderer.OGRE.sf_OIS import *
-
-
-
Deleted: trunk/python-ogre/demos/showcase_01/ogre.cfg
===================================================================
--- trunk/python-ogre/demos/showcase_01/ogre.cfg 2007-12-16 14:20:20 UTC (rev 499)
+++ trunk/python-ogre/demos/showcase_01/ogre.cfg 2007-12-17 17:52:49 UTC (rev 500)
@@ -1,19 +0,0 @@
-Render System=Direct3D9 Rendering Subsystem
-
-[OpenGL Rendering Subsystem]
-Colour Depth=32
-Display Frequency=100
-FSAA=0
-Full Screen=Yes
-RTT Preferred Mode=FBO
-VSync=No
-Video Mode=1024 x 768
-
-[Direct3D9 Rendering Subsystem]
-Allow NVPerfHUD=No
-Anti aliasing=None
-Floating-point mode=Fastest
-Full Screen=Yes
-Rendering Device=Radeon X1650 Series
-VSync=No
-Video Mode=800 x 600 @ 32-bit colour
Deleted: trunk/python-ogre/demos/showcase_01/plugins.cfg
===================================================================
--- trunk/python-ogre/demos/showcase_01/plugins.cfg 2007-12-16 14:20:20 UTC (rev 499)
+++ trunk/python-ogre/demos/showcase_01/plugins.cfg 2007-12-17 17:52:49 UTC (rev 500)
@@ -1,19 +0,0 @@
-# Defines plugins to load
-
-## Use this for Windows
-# Define plugin folder
-PluginFolder=../../plugins
-Plugin=RenderSystem_GL.dll
-Plugin=RenderSystem_Direct3D9.dll
-Plugin=Plugin_ParticleFX.dll
-Plugin=Plugin_BSPSceneManager.dll
-Plugin=Plugin_OctreeSceneManager.dll
-Plugin=Plugin_CgProgramManager.dll
-
-##
-## NOTE use this for MacOS or Linux
-# Plugin=RenderSystem_GL
-# Plugin=Plugin_ParticleFX
-# Plugin=Plugin_BSPSceneManager
-# Plugin=Plugin_OctreeSceneManager
-# Plugin=Plugin_CgProgramManager
Deleted: trunk/python-ogre/demos/showcase_01/resources.cfg
===================================================================
--- trunk/python-ogre/demos/showcase_01/resources.cfg 2007-12-16 14:20:20 UTC (rev 499)
+++ trunk/python-ogre/demos/showcase_01/resources.cfg 2007-12-17 17:52:49 UTC (rev 500)
@@ -1,30 +0,0 @@
-[Bootstrap]
-Zip=../media/packs/OgreCore.zip
-
-# Resource locations to be added to the default path
-[General]
-FileSystem=../media
-FileSystem=../media/fonts
-FileSystem=../media/sounds
-FileSystem=../media/Audio
-FileSystem=../media/materials/programs
-FileSystem=../media/materials/scripts
-FileSystem=../media/materials/textures
-FileSystem=../media/models
-FileSystem=../media/overlays
-FileSystem=../media/particle
-FileSystem=../media/gui
-Zip=../media/packs/cubemap.zip
-Zip=../media/packs/cubemapsJS.zip
-Zip=../media/packs/dragon.zip
-Zip=../media/packs/fresneldemo.zip
-Zip=../media/packs/ogretestmap.zip
-Zip=../media/packs/skybox.zip
-#Zip=../media/packs/chiropteraDM.pk3
-
-FileSystem=./media/trees
-FileSystem=./media/grass
-FileSystem=./media/terrains
-FileSystem=./media/Triplanar
-
-
Deleted: trunk/python-ogre/demos/showcase_01/triplanar_terrain.cfg
===================================================================
--- trunk/python-ogre/demos/showcase_01/triplanar_terrain.cfg 2007-12-16 14:20:20 UTC (rev 499)
+++ trunk/python-ogre/demos/showcase_01/triplanar_terrain.cfg 2007-12-17 17:52:49 UTC (rev 500)
@@ -1,71 +0,0 @@
-# The main world texture (if you wish the terrain manager to create a material for you)
-#WorldTexture=terrain_texture.jpg
-
-# The detail texture (if you wish the terrain manager to create a material for you)
-#DetailTexture=terrain_detail.jpg
-
-#number of times the detail texture will tile in a terrain tile
-DetailTile=3
-
-# Heightmap source
-PageSource=Heightmap
-
-# Heightmap-source specific settings
-Heightmap.image=terrain.png
-
-# If you use RAW, fill in the below too
-# RAW-specific setting - size (horizontal/vertical)
-#Heightmap.raw.size=513
-# RAW-specific setting - bytes per pixel (1 = 8bit, 2=16bit)
-#Heightmap.raw.bpp=2
-
-# How large is a page of tiles (in vertices)? Must be (2^n)+1
-PageSize=513
-
-# How large is each tile? Must be (2^n)+1 and be smaller than PageSize
-TileSize=65
-
-# The maximum error allowed when determining which LOD to use
-MaxPixelError=3
-
-# The size of a terrain page, in world units
-PageWorldX=1500
-PageWorldZ=1500
-# Maximum height of the terrain
-MaxHeight=100
-
-# Upper LOD limit
-MaxMipMapLevel=5
-
-VertexNormals=yes
-#VertexColors=yes
-#UseTriStrips=yes
-
-# Use vertex program to morph LODs, if available
-VertexProgramMorph=yes
-
-# The proportional distance range at which the LOD morph starts to take effect
-# This is as a proportion of the distance between the current LODs effective range,
-# and the effective range of the next lower LOD
-LODMorphStart=0.2
-
-# This following section is for if you want to provide your own terrain shading routine
-# Note that since you define your textures within the material this makes the
-# WorldTexture and DetailTexture settings redundant
-
-# The name of the vertex program parameter you wish to bind the morph LOD factor to
-# this is 0 when there is no adjustment (highest) to 1 when the morph takes it completely
-# to the same position as the next lower LOD
-# USE THIS IF YOU USE HIGH-LEVEL VERTEX PROGRAMS WITH LOD MORPHING
-MorphLODFactorParamName=morphFactor
-
-# The index of the vertex program parameter you wish to bind the morph LOD factor to
-# this is 0 when there is no adjustment (highest) to 1 when the morph takes it completely
-# to the same position as the next lower LOD
-# USE THIS IF YOU USE ASSEMBLER VERTEX PROGRAMS WITH LOD MORPHING
-#MorphLODFactorParamIndex=4
-
-# The name of the material you will define to shade the terrain
-CustomMaterialName=OverhangTerrain_simple
-
-
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|