Example #1
0
	def __init__(self,parent,id,x,y,width,height):
		style = wx.WANTS_CHARS | wx.FULL_REPAINT_ON_RESIZE
		wx.glcanvas.GLCanvas.__init__(self,parent,id,wx.DefaultPosition,wx.DefaultSize,style)

		width,height = self.GetClientSize()

		self.viewer = osgViewer.Viewer()

		self.viewer.setThreadingModel(osgViewer.Viewer.SingleThreaded)
		self.viewer.addEventHandler(osgViewer.StatsHandler())		
		self.viewer.setCameraManipulator(osgGA.TrackballManipulator())

		self.graphicswindow = self.viewer.setUpViewerAsEmbeddedInWindow(0,0,width,height)

		if self.graphicswindow.valid():

			self.old_cursor = wx.STANDARD_CURSOR

			self.Bind(wx.EVT_SIZE, self.OnSize)
			self.Bind(wx.EVT_PAINT, self.OnPaint)
			self.Bind(wx.EVT_ERASE_BACKGROUND, self.OnEraseBackground)

			self.Bind(wx.EVT_KEY_DOWN, self.OnKeyDown)
			self.Bind(wx.EVT_KEY_UP, self.OnKeyUp)
			self.Bind(wx.EVT_MOUSE_EVENTS, self.OnMouse)
Example #2
0
 def initializeGL (self):
     """initializeGL the context and create the osgViewer, also set manipulator and event handler """       
     self.gw = self.createContext()
     self.viewer = self.createViewer()
     #init the default eventhandler
     self.viewer.setCameraManipulator(osgGA.TrackballManipulator())
     self.viewer.addEventHandler(osgViewer.StatsHandler())
     self.viewer.addEventHandler(osgViewer.HelpHandler())
     QtCore.QObject.connect(self.timer, QtCore.SIGNAL("timeout ()"), self.updateGL)
     self.timer.start(0)
Example #3
0
 def createViewer(self):
     """create a osgViewer.Viewer and set the viewport, camera and previously created graphical context """
     global viewerFactory
     viewer = viewerFactory()
     #init the default eventhandler
     #        self.viewer.setCameraManipulator(osgGA.TrackballManipulator())
     viewer.addEventHandler(osgViewer.StatsHandler())
     viewer.addEventHandler(osgViewer.HelpHandler())
     viewer.getUpdateVisitor().setTraversalMask(UPDATE_MASK)
     self.resetCamera(viewer)
     return viewer
Example #4
0
    def __init__(self, glconfig, viewer=None, window=None):
        gtk.DrawingArea.__init__(self)

        # Set OpenGL-capability to the drawing area
        self.set_gl_capability(glconfig)

        # Connect the relevant signals.
        self.connect_after('realize', self._on_realize)
        self.connect('configure_event', self._on_configure_event)
        self.connect('expose_event', self._on_expose_event)
        self.connect("key_press_event", self._on_key_press_event)

        self.add_events(gtk.gdk.BUTTON_PRESS_MASK
                        | gtk.gdk.BUTTON_RELEASE_MASK)

        self.__motion_events = 0
        self.__motion_events |= gtk.gdk.BUTTON_MOTION_MASK
        self.__motion_events |= gtk.gdk.POINTER_MOTION_MASK
        self.add_events(self.__motion_events)
        self.connect('motion_notify_event', self._on_mouse_event)
        self.connect("button_press_event", self._on_mouse_event)
        self.connect("button_release_event", self._on_mouse_event)

        #experimental: Stereo in a window
        #self.ds = osg.DisplaySettings_instance()
        #self.ds.setStereo(True)
        #self.ds.setStereoMode(osg.DisplaySettings.QUAD_BUFFER)

        if viewer is None:
            self.viewer = osgViewer.Viewer()
        else:
            self.viewer = viewer
        self.osgwindow = self.viewer.setUpViewerAsEmbeddedInWindow(
            0, 0, 200, 200)
        # one could try using a pythonic alternative:
        #  self.osgwindow = self.setup_osgwindow(0,0,200,200)
        self.viewer.setCameraManipulator(osgGA.TrackballManipulator())

        self.viewer.addEventHandler(osgViewer.StatsHandler())
        self.viewer.addEventHandler(osgViewer.HelpHandler())

        self.rootnode = osg.MatrixTransformRef(osg.MatrixTransform())
        self.viewer.setSceneData(self.rootnode.get())

        self._x, self._y = 0, 0
Example #5
0
root.addChild(dynamicTransform4.__disown__())

#to prevent direct destruction you can create a variable for the callback
#rotcb = RotateCB()
#dynamicTransform.setUpdateCallback(rotcb.__disown__())
#or call the disown function: dynamicTransform.setUpdateCallback(RotateCB().__disown__())

#create the viewer, set the scene and run
viewer = osgViewer.Viewer()
viewer.setThreadingModel(osgViewer.Viewer.SingleThreaded)

#set the scene data
viewer.setSceneData(root.__disown__())

#add the stats event handler
viewer.addEventHandler(osgViewer.StatsHandler())
pickhandler = PickHandler()
#pickhandler = osgGA.GUIEventHandler()
viewer.addEventHandler(pickhandler.__disown__())

#run the viewer
viewer.run()
#or call the following functions
#viewer.realize()
#viewer.setCameraManipulator(osgGA.TrackballManipulator())
#while not viewer.done():
#    viewer.frame()

#set an empty node for clean-up step
viewer.setSceneData(None)
Example #6
0
def main():

    # use an ArgumentParser object to manage the program arguments.
    #arguments = osg.ArgumentParser()

    #construct the viewer.
    viewer = osgViewer.Viewer()

    #need to use singlethreaded mode
    viewer.setThreadingModel(viewer.SingleThreaded)

    # add the stats
    viewer.addEventHandler(osgViewer.StatsHandler())

    # add the record camera path handler
    viewer.addEventHandler(osgViewer.RecordCameraPathHandler())

    #add the threading handler
    viewer.addEventHandler(osgViewer.ThreadingHandler())

    #if user request help write it out to cout.
    #if (arguments.read("-h") or arguments.read("--help")):
    #   arguments.getApplicationUsage().write(sys.stdout)
    #   return 1

    tex_width = 1024
    tex_height = 512
    samples = 0
    colorSamples = 0

    renderImplementation = osg.Camera.FRAME_BUFFER_OBJECT

    useImage = False
    useTextureRectangle = False
    useHDR = False

    # if not loaded assume no arguments passed in, try use default mode instead.
    loadedModel = osgDB.readNodeFile("cessna.osg")

    # create a transform to spin the model.
    loadedModelTransform = osg.MatrixTransform()
    loadedModelTransform.addChild(loadedModel)

    nc = osg.AnimationPathCallback(
        osg.Vec3d(loadedModelTransform.getBound().center()),
        osg.Vec3d(0.0, 0.0, 1.0), osg.inDegrees(45.0))
    loadedModelTransform.setUpdateCallback(nc)

    rootNode = osg.Group()
    rootNode.addChild(createPreRenderSubGraph(loadedModelTransform,\
                                                                            tex_width,tex_height, \
                                                                            renderImplementation, \
                                                                            useImage, useTextureRectangle, \
                                                                            useHDR, samples, colorSamples))

    osgDB.writeNodeFile(rootNode, "test.ive")

    # add model to the viewer.
    viewer.setSceneData(rootNode)

    viewer.run()