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

📄 celshadingdemo.py

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

class CelShadingApplication(sampleframework.Application):
    def _createScene( self ):
        sceneManager = self.sceneManager

        capabilities = ogre.Root.getSingleton().getRenderSystem().getCapabilities()
        if not capabilities.hasCapability( ogre.Capabilities.RSC_VERTEX_PROGRAM ) or \
           not capabilities.hasCapability( ogre.Capabilities.RSC_FRAGMENT_PROGRAM ):
            raise 'Your card does not support vertex and fragment programs, so cannot run this demo. Sorry!'
        
        # Accept default settings: point light, white diffuse, just set position
        light = sceneManager.createLight( 'MainLight' )
        self.rotationNode = sceneManager.getRootSceneNode().createChildSceneNode( ogre.Vector3.ZERO, ogre.Quaternion.IDENTITY )
        self.rotationNode.createChildSceneNode( ogre.Vector3(20,40,50), ogre.Quaternion.IDENTITY ).attachObject( light )

        # create head entity
        entity = sceneManager.createEntity( 'head', 'ogrehead.mesh' )
        self.camera.setPosition( 20, 0, 100 )
        self.camera.lookAt( 0, 0, 0 )

        entity.getSubEntity(0).setMaterialName( 'Examples/OgreCelShading/Eyes' )
        entity.getSubEntity(1).setMaterialName( 'Examples/OgreCelShading/Skin' )
        entity.getSubEntity(2).setMaterialName( 'Examples/OgreCelShading/Earring' )
        entity.getSubEntity(3).setMaterialName( 'Examples/OgreCelShading/Teeth' )

        sceneManager.getRootSceneNode().createChildSceneNode( ogre.Vector3.ZERO,
                                                              ogre.Quaternion.IDENTITY ).attachObject( entity )
        self.renderWindow.getViewport(0).setBackgroundColour( ogre.ColourValue.White )

    def _createFrameListener( self ):
        self.frameListener = CelShadingListener( self.renderWindow, self.camera, self.rotationNode )
        self.root.addFrameListener( self.frameListener )

class CelShadingListener(sampleframework.FrameListener):
    def __init__( self, renderWindow, camera, rotationNode ):
        sampleframework.FrameListener.__init__( self, renderWindow, camera )
        self.rotationNode = rotationNode

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

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

⌨️ 快捷键说明

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