📄 celshadingdemo.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 + -