Table of contents

Intro

This is a really sparse example based on the Practical Application tutorial by Gregory Junker. I haven't used his exact structure, but you will be able to achieve the same thing, which is to start OGRE without the configuration dialog popping up.

Code

import pyogre.ogre as ogre

class testApp( object ):
    def __init__( self ):
        self.root = ogre.Root( ogre.getPluginPath() )
        
        self._initResources()
        self._configure()

        self.root.initialise( False )
        self.window = self.root.createRenderWindow( "PyOgreWindow", 640, 480, False )
        self.sceneManager = self.root.getSceneManager( ogre.ST_GENERIC )
        
        self.camera = self.sceneManager.createCamera( "PlayerCam" )
        self.camera.position = (0, 0, 500)
        self.camera.lookAt((0, 0, -300))
        self.camera.nearClipDistance = 5
        self.viewport = self.window.addViewport( self.camera )
        self.viewport.backgroundColour = (0, 0, 0)

        ogre.TextureManager.getSingleton().defaultNumMipmaps = 5
        ogre.ResourceGroupManager.getSingleton().initialiseAllResourceGroups()

        # create the scene
        # add a frameListener for input etc, off you go

    def _initResources( self ):        
        "Set resource group paths."
        # Set up resource paths
        configFile = ogre.ConfigFile()
        configFile.loadFromFile( "resources.cfg" )
        # File format is:
        #  [ResourceGroupName]
        #  ArchiveType=Path
        #  .. repeat
        # For example:
        #  [General]
        #  FileSystem=media/
        #  Zip=packages/level1.zip
        for section, key, path in configFile.values:
            ogre.ResourceGroupManager.getSingleton().addResourceLocation( path, key, section )

    def _configure( self ):
        """
        Examine config options and set OGRE options accordingly.
        For now we're going to hard-code the settings just to prove the concept.
        """
        renList = self.root.getAvailableRenderers()
        for r in renList:
            #print r.name
            if r.name.startswith( "OpenGL" ):
                self.root.renderSystem = r
                return
        
        print "OpenGL renderer not found!"
         

if __name__ == "__main__":
    ta = testApp()

Discussion

It will look for "resources.cfg" in the same directory as the .py file. (This is true on Windows, at least. Other platforms might not behave the same way, so you may need to tell Python the path to the current directory.)

Obviously this could be expanded a lot, modularized, and generally made more flexible (especially the _configure() function). But the point of this was to do things in a straight-forward manner in order to learn quickly.

-by Jason, from Grim Inventions Interactive