Home >> Python >> PyOSG Fourth


■PyOSGでのアニメーション

★AnimationPathは使えない

★Viewerをループで記述

	import osg, osgDB, osgViewer, osgGA
	import sys, math
	
	root = osg.Group( )
	
	osgDB.setLibraryFilePathList(sys.path)
	
	loadedModel = osgDB.readNodeFile('cessna.osg')
	node = osg.PositionAttitudeTransform( )
	quat = osg.Quat( )
	quat.makeRotate( 0, 0, 0, 1 )
	node.setAttitude( quat )
	node.setPosition( osg.Vec3d( 0, 18, 0 ) )
	node.setScale( osg.Vec3d( 0.3, 0.3, 0.3 ) )
	node.addChild( loadedModel )
	root.addChild( node )
	
	node1 = osg.PositionAttitudeTransform( )
	node1.setPosition( osg.Vec3d( 0, 9, -9 ) )
	node1.setScale( osg.Vec3d( 0.3, 0.3, 0.3 ) )
	node1.addChild( loadedModel )
	root.addChild( node1 )
	
	
	viewer = osgViewer.Viewer()
	viewer.setSceneData( root )
	viewer.addEventHandler(osgViewer.StatsHandler())
	viewer.addEventHandler(osgViewer.WindowSizeHandler())
	#viewer.run()
	
	viewer.setCameraManipulator(osgGA.TrackballManipulator())
	
	viewer.realize( )
	stime = 0.0
	while ( not viewer.done() ):
		angle = stime % (2*math.pi)
		quat.makeRotate( -angle, 1, 0, 0 )
		node.setAttitude( quat )
		node.setPosition( osg.Vec3d( 0 ,9 - 9*math.sin(angle), -9*math.cos(angle)) )
		viewer.realize( )
		viewer.frame( stime )
		stime += 0.001

	
PyOSG Third Python PyOSG Fifth