def OpenFile(self,file): ''' devi definire questa funzione perche e' invocata anche dalla History devi ritornare True se il file e' stato caricato con successo ''' name = os.path.basename(file) ext = name.split('.')[1] ext = ext.upper() print 'Loading:', file, ext if ext == "DEFINITION": p = process_def.ProcessDef(file) LoadedModel = osgDB.readNodeFile( p.GetIveRoot() ) else: LoadedModel = osgDB.readNodeFile(file) if not LoadedModel: print 'Loading failed' return False self.root.removeChildren( 0 , self.root.getNumChildren() ) self.root.addChild(LoadedModel) self.tree.ReadSceneGraph(self.root) self.ResetCamera() self.LastOpenedFile = file print 'Loading terminated' return True
def OpenAllFiles(self): ''' - controlla se tutti i file osg ci sono - li preprocessa - li apre - aggancia le root di ciascuno al dizionario osgFiles ''' print 'controllo files' for i in self.osgFiles.keys(): filename = self.osg_path + i + '.osg' if not os.path.exists(filename): print "il file non esiste !! ->", i, "<-" continue self.PreprocessOsgFile(i) # copy the file from osg_path to tmp_path node = osgDB.readNodeFile( self.tmp_path + i + '.osg' ) if not node: print "errore durante l'apertura di ->", i, "<-" continue g = node.asGroup() if not g: print "fallito il cast a gruppo di: ->", i, "<-" continue self.osgFiles[i] = g wx.Yield()
def OnOpen(self, evt): dlg = wx.FileDialog(self, 'Open a Scene', '' , '' , 'OpenSceneGraph Files (*.osg,*.ive)|*.osg;*.ive|All Files (*.*)|*.*') if wx.ID_OK == dlg.ShowModal(): wx.LogStatus("Loading" + dlg.GetPath()) node = osgDB.readNodeFile(dlg.GetPath().encode()) self.canvas.viewer.setSceneData(node)
def find(self,name,flist=[]): nodes=[] if(flist.__len__()==0): #cerco un file che finisca con <name>.qualcosa(osg,ive) flist=glob.glob(os.path.join(self.basepath,"*"+name+".*")) # flist=glob.glob(os.path.join(self.basepath,"f_pace_mi.osg")) # flist=glob.glob(os.path.join(self.basepath,"f_pace_col*.osg")) for f in flist: print "opening -->"+f+"<--" if(self.open_files.has_key(f)): node=self.open_files[f] else: node=osgDB.readNodeFile(f) if(node): self.open_files[f]=node if(self.optim): self.optim.optimize(node,osgUtil.Optimizer.FLATTEN_STATIC_TRANSFORMS) #cerco dentro il file un nodo che finisca con <name> # v = FindNamePattern(".*("+name+").*$") v = FindNamePattern("^("+name+"(?:_low?|_mid?|_hig?h?)?(?:_rif)?)$") node.accept(v) for k in v.NodesHash.keys(): print "found >"+k+"<-->"+v.NodesHash[k][0]+"<--in file",f nodes.append(v.NodesHash[k][1]) return(nodes)
def test_008_osgViewerAndOverriddenGUIEventHandler2(self): print "-"*40 print "Testing osgViewer with a GUIEventHandler derived in python code" class DerivedHandler2(osgGA.GUIEventHandler): def handle(self, ea, aa, obj, nv): print "python handle" if (ea): pass else: print "ea is NULL" if (aa): pass else: print "aa is NULL" if (obj): pass else: print "obj is NULL" if (nv): pass else: print "nv is NULL" return False cow = osgDB.readNodeFile("cow.osg") runViewer(cow, DerivedHandler2()) self.failUnless(True)
def LoadFile(self,fname,do_optimize=True): if(os.path.exists(fname)): f=os.path.abspath(fname) else: if(os.path.exists(os.path.join(self.basepath,fname))): f=os.path.join(self.basepath,fname) else: print "WARNING!!!! file -->",fname,"<- not found" return None if(self.basepath==""): self.basepath=os.path.basename(os.path.abspath(f)) else: if(self.basepath != os.path.basename(os.path.abspath(f))): print "WARNING!!! loading ->",f," outside of basepath ->",self.basepath if(self.open_files.has_key(f)): node=self.open_files[f] else: node=osgDB.readNodeFile(f) if(node): if(do_optimize): if(self.optim): self.optim.optimize(node,self.optimize_flags) self.open_files[f]=node return node
def __init__(self,parent,id): style = wx.WANTS_CHARS | wx.FULL_REPAINT_ON_RESIZE wx.glcanvas.GLCanvas.__init__(self, parent, id, wx.DefaultPosition, wx.DefaultSize, style ) # --- Timer --------------------------------- self.timer = wx.Timer(self,-1) self.timer.Start(1) # --- Viewer --------------------------------- self.viewer = osgViewer.Viewer() self.viewer.addEventHandler(osgViewer.StatsHandler()) self.gw = None self.gw = self.viewer.setUpViewerAsEmbeddedInWindow(0,0,800,600) print self.gw self.viewer.setThreadingModel(osgViewer.ViewerBase.SingleThreaded) self.viewer.setCameraManipulator(osgGA.TrackballManipulator()) ss = self.viewer.getCamera().getOrCreateStateSet() self.viewer.addEventHandler( osgGA.StateSetManipulator(ss) ) loadedModel = osgDB.readNodeFile("cow.osg") self.viewer.setSceneData(loadedModel) # --- Bindings --------------------------------- self.Bind(wx.EVT_TIMER, self.onTimer, id=self.timer.GetId() ) self.Bind(wx.EVT_ERASE_BACKGROUND, self.onEraseBackground) self.Bind(wx.EVT_PAINT, self.onPaint) self.Bind(wx.EVT_SIZE, self.onSize) self.Bind(wx.EVT_KEY_DOWN, self.onKeyDown) self.Bind(wx.EVT_KEY_UP, self.onKeyUp) self.Bind(wx.EVT_MOUSE_EVENTS, self.onMouse)
def addUrl(self,url,name=""): print "addurl ",url if(".py"==os.path.splitext(url)[1]): print "processing python file -->",url d={} d['__file__']=os.path.abspath(url) try: execfile(d['__file__'],globals(),d) except: print "some errors while executing -->",url if(d.has_key('loaded_node')): n=d['loaded_node'] else: print "file -->",url,"<-- has not set the variable >>loaded_node<<" n=None else: n = osgDB.readNodeFile(url) if(n): self.grpnode.addChild(n,True) ind=self.grpnode.getChildIndex(n) if(name==""): if(n.getName()): key=n.getName() count = 0 while(self.components.has_key(key)): key=key + "_" + str(count) count = count +1 else: key=url else : key=name self.components[key]=(n,ind,url) print "added key-->",key return key else: return ""
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()
def plant_on_tiles(log_file,tile_dir,out_dir): forest = TreeGeometry(30000) cur_tile = "" log_reader = csv.DictReader(open(log_file, "rb")) for row in log_reader: if("" == cur_tile): cur_tile = row['Nome_Tile'] n = osgDB.readNodeFile(os.path.join(tile_dir,cur_tile))
def osgViewerAndCow(self, testStateSet): print "-"*40 print "Testing osgViewer with cow.osg" cow = osgDB.readNodeFile("cow.osg") if (testStateSet): print "Will disable texturing" s = cow.stateSet s.setTextureMode(0, osg.GL_TEXTURE_2D, osg.StateAttribute.OFF + osg.StateAttribute.OVERRIDE) runViewer(cow) self.failUnless(True)
def __init__( self, threadingModel = osgViewer.ViewerBase.SingleThreaded ): self.viewer = osgViewer.CompositeViewer( ) self.viewer.threadingModel = threadingModel self._timer = QTimer() camera1 = self.createCamera(0,0,100,100) model1 = osgDB.readNodeFile("cow.osgt") widget1 = self.addViewWidget( camera1, model1 ) camera2 = self.createCamera(0,0,100,100) model2 = osgDB.readNodeFile("glider.osgt") widget2 = self.addViewWidget( camera2, model2 ) camera3 = self.createCamera(0,0,100,100) model3 = osgDB.readNodeFile("axes.osgt") widget3 = self.addViewWidget( camera3, model3 ) camera4 = self.createCamera(0,0,100,100) model4 = osgDB.readNodeFile("fountain.osgt") widget4 = self.addViewWidget( camera4, model4 ) camera5 = self.createCamera(900,100,320,240,"Popup Window", True) model5 = osgDB.readNodeFile("dumptruck.osgt") popupWidget = self.addViewWidget( camera5, model5 ) popupWidget.show() grid = QGridLayout() grid.addWidget( widget1, 0,0) grid.addWidget( widget2, 0,1) grid.addWidget( widget3, 1,0) grid.addWidget( widget4, 1,1) self.setLayout( grid ) # figure this out later #self.connect( self._timer, SIGNAL("timeout()"), self, ) self._timer.start( 10 )
def test_009_osgViewerAndOverriddenNodeCallback(self): print "-"*40 print "Will add a trivial CullCallback to the model - since traverse() is called the model should still be rendered." class DerivedCallback(osg.NodeCallback): def call(self, node, nv): print "python callback" self.traverse(node, nv) cow = osgDB.readNodeFile("cow.osg") cb = DerivedCallback() cow.setCullCallback(cb) runViewer(cow) self.failUnless(True)
def __init__(self,parent,id): style = wx.WANTS_CHARS | wx.FULL_REPAINT_ON_RESIZE wx.glcanvas.GLCanvas.__init__(self, parent, id, wx.DefaultPosition, wx.DefaultSize, style ) # --- Timer --------------------------------- self.timer = wx.Timer(self,-1) self.timer.Start(1) # --- Viewer --------------------------------- self.viewer = osgViewer.Viewer() self.viewer.addEventHandler(osgViewer.StatsHandler()) self.gw = None self.gw = self.viewer.setUpViewerAsEmbeddedInWindow(0,0,800,600) #print self.gw self.manipulator = osgGA.TrackballManipulator() self.viewer.setThreadingModel(osgViewer.ViewerBase.SingleThreaded) self.viewer.setCameraManipulator(self.manipulator) ss = self.viewer.getCamera().getOrCreateStateSet() self.viewer.addEventHandler( osgGA.StateSetManipulator(ss) ) self.root = osg.Group() self.viewer.setSceneData(self.root) (dir,scriptname) = os.path.split(os.path.abspath(os.path.realpath( __file__ ))) print dir self.cow = osgDB.readNodeFile(os.path.join(dir,'teapot.ive')) #self.cow = osgDB.readNodeFile("P:\\devel\\dowloads\\collada\\data\\Dining Room\\diningroomC.dae") #self.cow = osgDB.readNodeFile("http://3d.cineca.it/storage/osg4web/htdocs/virtual_data/projects/6/terreni/romano/vrome_final_02/noveg.ive") if not self.cow: print "could not find any cow --- please set the OSG_FILE_PATH env var" self.root.addChild( self.cow ) # --- Bindings --------------------------------- self.Bind(wx.EVT_TIMER, self.onTimer, id=self.timer.GetId() ) self.Bind(wx.EVT_ERASE_BACKGROUND, self.onEraseBackground) self.Bind(wx.EVT_PAINT, self.onPaint) self.Bind(wx.EVT_SIZE, self.onSize) self.Bind(wx.EVT_KEY_DOWN, self.onKeyDown) self.Bind(wx.EVT_KEY_UP, self.onKeyUp) self.Bind(wx.EVT_MOUSE_EVENTS, self.onMouse)
def test_000_segfaultOnShutdown(self): modelFile = 'cow.osg' #load the model loadedModel = osgDB.readNodeFile( modelFile ) if loadedModel == None: raise Exception('Loading model file failed') root = osg.Group() root.addChild(loadedModel) #create the viewer, set the scene and run viewer = osgViewer.Viewer() viewer.setUpViewInWindow(50, 50, 640,480); viewer.setSceneData(root) h = DerivedHandler() viewer.addEventHandler(h); #run the viewer viewer.frame() self._coll = CollectStdErr() #start error collection after viewer... self._coll.capture_output()
def test_002_testIntersectionOnCow(self): """ Setting up two linesegment tests on cow. One linesegment should hit the other should not. """ model = osgDB.readNodeFile('cow.osg') group = osg.Group() group.addChild(model) g1 = osgUtil.IntersectorGroup() l1 = osgUtil.LineSegmentIntersector(osg.Vec3d(0,0,0),osg.Vec3d(100,0,0)) g1.addIntersector(l1) v1 = osgUtil.IntersectionVisitor(g1) group.accept(v1) self.assert_(g1.containsIntersections()) # _____ cow should be hit _____ g2 = osgUtil.IntersectorGroup() l2 = osgUtil.LineSegmentIntersector(osg.Vec3d(90,0,0),osg.Vec3d(100,0,0)) g2.addIntersector(l2) v2 = osgUtil.IntersectionVisitor(g2) group.accept(v2) self.assert_(not g2.containsIntersections()) # _____ no hit ______ isect = l1.getFirstIntersection() isect.drawable n = isect.getLocalIntersectNormal() p = isect.getLocalIntersectPoint() wn = isect.getWorldIntersectNormal() wp = isect.getWorldIntersectPoint() #isect.indexList lin = isect.localIntersectionNormal lip = isect.localIntersectionPoint #isect.matrix npath = isect.nodePath pi = isect.primitiveIndex r = isect.ratio #isect.ratioList (str(n),str(p),str(wn),str(wp))
def test_003_testIntersectionPerformance(self): osgDB.Registry().setBuildKdTreesHint(osgDB.Options.BUILD_KDTREES); # osgDB.Registry().setBuildKdTreesHint(osgDB.Options.DO_NOT_BUILD_KDTREES); group = osg.Group() for name in ['cow.osg', 'cessna.osg', 'spaceship.osg', 'dumptruck.osg']: model = osgDB.readNodeFile(name) group.addChild(model) g1 = osgUtil.IntersectorGroup() for x in range(100): for y in range(100): lsi = osgUtil.LineSegmentIntersector(osg.Vec3d(x*0.02,y*0.02,-5),osg.Vec3d(x*0.1,y*0.1,5)) g1.addIntersector(lsi) v1 = osgUtil.IntersectionVisitor(g1) v1.setUseKdTreeWhenAvailable(True) start = time.clock() for i in range(1): group.accept(v1) end = time.clock() seconds_needed = end - start #print 'Needed %f seconds.' % seconds_needed self.assert_(seconds_needed < 1.0) #without kdtree it should take 50x longer...
def walk(self,filename,level): #print "walk ",filename if (level > self.maxlevel): print "MAX LEVEL ", level, " EXEEDED" self.handler.leaf(filename,level) return if(os.path.exists(filename)): tile_dir=os.path.normpath(os.path.abspath(os.path.dirname(filename))) if(os.path.normpath(os.path.abspath(os.path.curdir)) != tile_dir): print "warning: resetting tile_dir from ",os.path.normpath(os.path.abspath(os.path.curdir)), " to ",os.path.normpath(os.path.abspath(os.path.dirname(filename))) tile_dir=os.path.normpath(os.path.abspath(os.path.dirname(filename))) os.chdir(tile_dir) file_to_open = os.path.basename(filename) node_tile = osgDB.readNodeFile(file_to_open) ##tparse = TileParse() ##tparse.walk(node_tile," ") ##plod_list = tparse.get_paged() self.handler.process(node_tile,level) #devo fare unref, se no fa esplodere la memoria node_tile.unref() child_list = self.handler.to_walk() if(child_list.__len__()): for t in child_list: self.walk(t,level + 1) ##for t in plod_list.keys(): ## bs = plod_list[t]['trasf'].getBound() ## bb = plod_list[t]['bbox'] ## print t, " -->",plod_list[t]['filename']," ",bb.corner(0).x()," ",bb.corner(0).y()," ",bb.corner(7).x()," ",bb.corner(7).y() ## self.walk(plod_list[t]['filename'],level + 1) os.chdir(tile_dir) #print gc.get_count() else: self.handler.leaf(filename,level) else: print "missed file ",filename, " in ", os.path.normpath(os.path.abspath(os.path.curdir))
def main(argv): # use an ArgumentParser object to manage the program arguments. viewer = osgViewer.Viewer() # viewer.setThreadingModel(osgViewer.Viewer.SingleThreaded) # read the scene from the list of file specified commandline args. loadedModel = osgDB.readNodeFile("cessna.osg") if loadedModel == None: raise Exception('Could not load model file (is OSG_FILE_PATH set and correct?)') # create a transform to spin the model. loadedModelTransform = osg.MatrixTransform() loadedModelTransform.addChild(loadedModel) print loadedModelTransform.getBound()._center #todo: nc = osg.AnimationPathCallback(loadedModelTransform.getBound()._center,osg.Vec3(0.0,0.0,1.0),osg.inDegrees(45.0)); # loadedModelTransform.setUpdateCallback(nc) rootNode = osg.Group() rootNode.stateSet.dataVariance = osg.Object.DYNAMIC rootNode.addChild(createMirroredScene(loadedModelTransform)) viewer.addEventHandler(osgViewer.HelpHandler()) viewer.addEventHandler(osgViewer.StatsHandler()) viewer.addEventHandler(osgGA.StateSetManipulator(rootNode.stateSet)) viewer.setSceneData(rootNode) print "set scene data" #hint to tell viewer to request stencil buffer when setting up windows osg.DisplaySettings().setMinimumNumStencilBits(8) # osg.DisplaySettings.instance().setMinimumNumStencilBits(8); osgDB.writeNodeFile(rootNode, "test_reflect.osg"); viewer.run() #we need run, because that sets up a trackballmanipulator and so we have the correct "look" into the scene. return 0
#!/usr/bin/env python # the order of import is important here import osg import osgDB import osgGA import osgViewer from math import pi model = osgDB.readNodeFile("cessna.osg") model2 = osgDB.readNodeFile("cessnafire.osg") transform1 = osg.PositionAttitudeTransform() transform1.position = osg.Vec3d( -25, 0, 0 ) transform1.attitude = osg.Quat( pi, osg.Vec3d( 0,0,1 ) ) transform1.addChild( model ) switch = osg.Switch() switch.addChild( model ) switch.addChild( model2 ) switch[0] = False switch[1] = True transform2 = osg.PositionAttitudeTransform() transform2.position = osg.Vec3d( 25, 0, 0 ) transform2.addChild( switch ) viewer = osgViewer.Viewer() root = osg.Group()
viewer = osgViewer.Viewer() # needed for Python osgDB.setLibraryFilePathList(sys.path) # create a viewer viewer = osgViewer.Viewer() # configure viewer.setThreadingModel(osgViewer.Viewer.SingleThreaded) # scene scene = osg.Group() # open a file cow = osgDB.readNodeFile('cow.osg') # add to the scene viewer.setSceneData(scene) # create a tracker - in HITLabNZ we use this one tracker = osgVRPN.Tracker("DTrack@HITLVSTRACKER") # create a ref ptr for the tracker tracker_ref = osgVRPN.TrackerRef() # add the tracker tracker_ref = tracker # create a transform trkXform = osgVRPN.TrackerTransform()
def __init__(self): super(InfoVisitor, self).__init__() self.level = 0 self.traversalMode = osg.NodeVisitor.TRAVERSE_ALL_CHILDREN def apply_Node( self, node ): print self.level * 2 * " ", node.className self.level += 1 super(InfoVisitor, self).traverse( node ) self.level -= 1 def apply_Geode( self, node ): print self.level * 2 * " ", node.className self.level += 1 # iterate over drawables for n in node.getDrawableList() : print self.level * 2 * " ", n.className super(InfoVisitor, self).traverse( node ) self.level -= 1 root = osgDB.readNodeFile("cessna.osg") infoVisitor = InfoVisitor() root.accept( infoVisitor ) viewer = osgViewer.Viewer() viewer.setSceneData( root ) viewer.run()
def build_vegetation_tiles(self,filename,terrain_dir="",out_dir=""): def write_tile(tile_name,node_tile,trasf,veg,out_dir,suffix): #write previous tile ##print "writing tile ",prev," num trees ",tile_tree_count for t in trasf.keys(): ##trasf[t].removeChild(0) trasf[t].addChild(veg[t].get_geom()) outfile = os.path.join(out_dir,os.path.splitext(tile_name)[0]+suffix) osgDB.writeNodeFile(node_tile,outfile) #devo fare unref, se no fa esplodere la memoria node_tile.unref() ###### parse Andrea log files and plant trees in tiles file_to_open = filename if(os.path.isabs(filename)): if(terrain_dir == ""): terrain_dir = os.path.dirname(os.path.normpath(filename)) print "setting terrain_dir to -->",terrain_dir else: if(terrain_dir == ""): terrain_dir = self.base_data_dir file_to_open = os.path.join(terrain_dir,filename) if(out_dir == ""): out_dir = terrain_dir if(os.path.exists(file_to_open)): print "opening ",file_to_open os.chdir(out_dir) self.mosaic.save("tmp.png") write_top_group_texture("tmp.png","romano_L0_X0_Y0_subtile.ive","tmp.osg") os.system("osgconv --compressed tmp.osg tmp.ive") tree_log_reader = csv.DictReader(open(file_to_open, "rb")) prev = "" for row in tree_log_reader : tree_id = int(row['ID_Pianta']) tile_name = row['Nome_Tile'] id_foglia = int(row['Numero_Tile_Figlia']) x = float(row['x']) y = float(row['y']) z = float(row['z']) if(prev != tile_name): if(prev != ""): #write previous tile print "writing tile ",prev," num trees ",tile_tree_count #write_tile(prev,node_tile,trasf,veg,out_dir,"_newveg.ive") write_tile(prev,node_tile,trasf,veg,out_dir,".ive") ## for t in trasf.keys(): ## trasf[t].removeChild(0) ## trasf[t].addChild(veg[t].get_geom()) ## outfile = os.path.join(out_dir,os.path.splitext(prev)[0]+"_newveg.ive") ## osgDB.writeNodeFile(node_tile,outfile) ## #devo fare unref, se no fa esplodere la memoria ## node_tile.unref() full_tile_name = os.path.join(terrain_dir,tile_name) if(os.path.exists(full_tile_name)): tile_tree_count = 0 veg = dict() trasf = dict() os.chdir(os.path.dirname(full_tile_name)) node_tile = osgDB.readNodeFile(os.path.basename(full_tile_name)) g = node_tile.asGroup() for i in range(g.getNumChildren()): ##print tile_name, " ->",i child = g.getChild(i) if(child.className() == 'PagedLOD'): p = child.asLOD().asPagedLOD() for j in range(p.getNumFileNames()): if(p.getFileName(j) == ''): tt = osg.NodeToMatrixTransform(p.getChild(j)) else: ##print "pagedlod -->",p.getFileName(j) #p.setFileName(j,os.path.splitext(p.getFileName(j))[0]+"_newveg.ive") p.setFileName(j,os.path.splitext(p.getFileName(j))[0]+".ive") else: tt = osg.NodeToMatrixTransform(child) if(tt): ##print tt.className() gg = osg.NodeToGeode(tt.getChild(0)) if(gg): ##print "tile ",tile_name," matched geode ",i veg[i] = TreeGeometry(5000) trasf[i] = tt prev = tile_name tile_tree_count = tile_tree_count + 1 ##print "insert tree ",tree_id," ",self.trees[int(tree_id)]['Height'] if veg.has_key(id_foglia) : #print "sono qui ",id_foglia veg[id_foglia].addtree(x,y,z,10.0,self.trees[tree_id]['Height'],30.0,self.tree_types[self.tree_types_rev[self.trees[tree_id]['tree_id']]]['tex_box']) print "writing ultimo tile ",prev," num trees ",tile_tree_count #write_tile(prev,node_tile,trasf,veg,out_dir,"_newveg.ive") write_tile(prev,node_tile,trasf,veg,out_dir,".ive")
import sys import os from utility import * from lod_visitor import FindNamePattern # locate the DataDir dir = os.getenv('DATADIR') if not dir: print 'env-var "DATADIR" not found, exiting' sys.exit() # there are good and bad data :-) dir = dir + 'bad\\' # open the test file filename = dir + 'f_pace_col_b.osg' node = osgDB.readNodeFile(filename) v = FindNamePattern('(.*low-GEODE)$') node.accept(v) # print results myroot=osg.Group() # open the ref file filename = dir + 'f_pace_col_b.obj' node_obj = osgDB.readNodeFile(filename) #myroot.addChild(node_obj) for n in v.NodesHash.keys(): print ">",n,"<-->",v.NodesHash[n][0],"<--" count=0 for name in v.names.keys(): print "searching for -->"+name+"<--"
def loadfiles(self,list): for path in list: print "loading-->" + path n = osgDB.readNodeFile(path) self._rootnode.addChild(n)
def __init__(self,file): self.filename = file self.main_n = osgDB.readNodeFile(file) self.splitmode = 0 #bad split
import sys import os app = App(0) # locate the DataDir dir = os.getenv('DATADIR') if not dir: print 'env-var "DATADIR" not found, exiting' sys.exit() # there are good and bad data :-) dir = dir + 'bad\\' # open the test file filename = dir + 'f_pace.osg' node = osgDB.readNodeFile(filename) if not node : print 'error loading', filename sys.exit() app.tree.AddSettings(1,'config1') app.tree.AddSettings(2,'config2') app.tree.AddFile(3,'file1') app.tree.AddFile(4,'file2') app.tree.ReadSceneGraph(node) app.MainLoop()
geode = osg.NodeToGeode(node) if geode: #create a wirebox and safe it, the wire box #will be attached to the parental transform node self.wb = createWireBox(geode) self._selectedNode.addChild(self.wb) self.wb.thisown = False return True return False else: print "No Intersection Found" return False #load the model loadedModel = osgDB.readNodeFile("cow.osg") root = osg.Group() #create some dynamic transformation nodes dynamicTransform1 = osg.PositionAttitudeTransform() dynamicTransform2 = osg.PositionAttitudeTransform() dynamicTransform3 = osg.PositionAttitudeTransform() dynamicTransform4 = osg.PositionAttitudeTransform() #add the loaded model to the transform nodes dynamicTransform1.addChild(loadedModel) dynamicTransform1.setPosition(osg.Vec3d(-10, 0, -10)) dynamicTransform2.addChild(loadedModel) dynamicTransform2.setPosition(osg.Vec3d(-10, 0, 10)) dynamicTransform3.addChild(loadedModel)
print n,'--->',p.hier[i] #-------------------------------------------------------------------------- if __name__ == "__main__": # DataDir import testdata dir = testdata.dir # test ProcessDef ## definition = dir + "fori\\f_tr.definition" ## p = ProcessDef(definition, True,False) ## print '--------------------------' ## print '--------------------------' ## print '--------------------------' ## p.PrintHier() g=osg.Group() for tempio in ('augusto','tr','pace'): definition = dir + "fori\\f_"+tempio+".definition" print '----------------------------- processing -->',definition p = ProcessDef(definition, True,False) tempiotop = osgDB.readNodeFile( p.GetIveRoot()) g.addChild(tempiotop) osgDB.writeNodeFile_s( g, dir + "fori\\tmp\\f_top.ive", "noTexturesInIVEFile useOriginalExternalReferences" ) osgDB.writeNodeFile_s( g, dir + "fori\\tmp\\f_top.osg", "noTexturesInIVEFile useOriginalExternalReferences" )
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()
def load_file(self, pFileName): print "Opening file ", pFileName if self.rootnode.getNumChildren > 0: self.rootnode.removeChild(0) self.objnode = osgDB.readNodeFile(pFileName) self.rootnode.addChild(self.objnode)
import osg_setup import osg import osgDB import osgGA import osgViewer import wx_osg_console import pick_module viewer = osgViewer.Viewer() viewer.setThreadingModel(osgViewer.Viewer.SingleThreaded) #set the scene data #n = osgDB.readNodeFile('cow.osg') root = osg.Group() #n = osgDB.readNodeFile("D:/models/demo_virtrome/piante/frassino.ive") #n = osgDB.readNodeFile("Q:/virtualrome/web/modelli/romano/villa/prove_stanze/tmp/prove_stanze_mod.osg") n = osgDB.readNodeFile("../../../testData/teapot.ive") #n = osgDB.readNodeFile("Q:/vrome/web/modelli/attuale/generati/Malborghetto_attuale_osg/osg_exp_tiny_full.ive") root.addChild(n) viewer.setSceneData(root.__disown__()) pickhandler = pick_module.PickHandler() viewer.addEventHandler(pickhandler.__disown__()); wx_osg_console.OpenConsole(viewer)
mt = osg.NodeToMatrixTransform(node) if mt: mt.setMatrix(osg.Matrixd_rotate(self._quat)) else: pot = osg.NodeToPositionAttitudeTransform(node) if pot: pot.setAttitude(self._quat) # Increment the angle. self._angle += 0.01; # call traverse self.traverse(node,nv) #load the model loadedModel = osgDB.readNodeFile("cow.osg") #create a dynamic transformation node, we can use a MatrixTransform dynamicTransform = osg.MatrixTransform() #or we can use a PositionAttitudeTransform: dynamic = osg.PositionAttitudeTransform() #add the loaded model to the transform node dynamicTransform.addChild(loadedModel) #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__())
import osgDB import sys import os from utility import * # locate the DataDir dir = os.getenv('DATADIR') if not dir: print 'env-var "DATADIR" not found, exiting' sys.exit() # there are good and bad data :-) dir = dir + 'bad\\' # open the test file filename = dir + 'f_pace_mi_SIL.osg' node = osgDB.readNodeFile(filename) if not node : print 'error loading', filename sys.exit() # if(node): # optim=osgUtil.Optimizer() # optim.optimize(node,osgUtil.Optimizer.FLATTEN_STATIC_TRANSFORMS) # test a Visitor Subclass print '------- testing FindNamePattern --------' #v = FindNamePattern('(.*)_mi_RIF') # v = FindNamePattern('(.*)(?:_low?|_mid?|_hig?h?)_RIF[0-9]?[0-9]?-GEODE') v = FindNamePattern('(.*_c_low[0-9]+)$') node.accept(v) # print results