def main(filename="frame/f.png", yc=6, n=0): f = ocl.Ocode() f.set_depth(8) myscreen = camvtk.VTKScreen() myscreen.camera.SetPosition(50, 22, 40) myscreen.camera.SetFocalPoint(0, 0, 0) myscreen.camera.Azimuth(n * 0.5) # screenshot writer w2if = vtk.vtkWindowToImageFilter() w2if.SetInput(myscreen.renWin) lwr = vtk.vtkPNGWriter() lwr.SetInput(w2if.GetOutput()) xar = camvtk.Arrow(color=camvtk.red, center=(10, 20, 0), rotXYZ=(0, 0, 0)) myscreen.addActor(xar) yar = camvtk.Arrow(color=camvtk.green, center=(10, 20, 0), rotXYZ=(0, 0, 90)) myscreen.addActor(yar) zar = camvtk.Arrow(color=camvtk.blue, center=(10, 20, 0), rotXYZ=(0, -90, 0)) myscreen.addActor(zar) t = ocl.LinOCT() t2 = ocl.LinOCT() t.init(3) t2.init(3) print " after init() t :", t.str() print " after init() t2 :", t2.str() svol = ocl.SphereOCTVolume() svol.radius = 3 svol.center = ocl.Point(1, 0, 3) cube1 = ocl.CubeOCTVolume() cube1.side = 6 cube1.center = ocl.Point(0, 0, 0) cube2 = ocl.CubeOCTVolume() cube2.center = ocl.Point(1, 2, 0) cube2.side = 30 print "t build()" t.build(svol) print " t after build() ", t.size() t.condense() print " t after condense() ", t.size() print "t2 build()" t2.build(cube1) print " t2 after build() ", t2.size() t2.condense() print " t2 after condense() ", t2.size() # original trees drawTree(myscreen, t, opacity=1, color=camvtk.green) drawTree(myscreen, t2, opacity=1, color=camvtk.red) print " diff12()...", t3 = t2.operation(1, t) print "done." print " diff21()...", t4 = t2.operation(2, t) print "done." print " intersection()...", t5 = t2.operation(3, t) print "done." print " sum()...", t6 = t2.operation(4, t) print "done." print " difference 1-2 t3 (blue) =", t3.size() print " difference 2-1 t4 (yellow)=", t4.size() print " intersection t5 (pink) =", t5.size() print " union t6 (grey) =", t6.size() drawTree(myscreen, t3, opacity=1, color=camvtk.blue, offset=(0, 15, 0)) drawTree(myscreen, t4, opacity=1, color=camvtk.yellow, offset=(0, -15, 0)) drawTree(myscreen, t5, opacity=1, color=camvtk.pink, offset=(-15, 0, 0)) drawTree(myscreen, t6, opacity=1, color=camvtk.grey, offset=(-15, -15, 0)) title = camvtk.Text() title.SetPos((myscreen.width - 350, myscreen.height - 30)) title.SetText("OpenCAMLib " + datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")) myscreen.addActor(title) st2 = camvtk.Text() ytext = "Linear OCTree set operations: difference, intersection, union" st2.SetText(ytext) st2.SetPos((50, myscreen.height - 30)) myscreen.addActor(st2) st3 = camvtk.Text() text = "Original OCTrees\n Ball:%d nodes\n Cube: %d nodes" % (t.size(), t2.size()) st3.SetText(text) st3.SetPos((50, 200)) myscreen.addActor(st3) st4 = camvtk.Text() un = " Union (grey): %d nodes\n" % (t6.size()) int = " Intersection (pink): %d nodes\n" % (t5.size()) diff1 = " difference Cube-Ball (blue): %d nodes\n" % (t3.size()) diff2 = " difference Ball-Cube (yellow): %d nodes\n" % (t4.size()) text = un + int + diff1 + diff2 st4.SetText(text) st4.SetPos((50, 100)) myscreen.addActor(st4) myscreen.render() lwr.SetFileName(filename) time.sleep(0.2) #lwr.Write() myscreen.iren.Start()
def main(filename="frame/f.png", yc=6, n=0): f = ocl.Ocode() f.set_depth(10) myscreen = camvtk.VTKScreen() myscreen.camera.SetPosition(50, 22, 40) myscreen.camera.SetFocalPoint(0, 0, 0) myscreen.camera.Azimuth(n * 0.5) # box around octree oct_cube = camvtk.Cube(center=(0, 0, 0), length=40, color=camvtk.white) oct_cube.SetWireframe() myscreen.addActor(oct_cube) # screenshot writer w2if = vtk.vtkWindowToImageFilter() w2if.SetInput(myscreen.renWin) lwr = vtk.vtkPNGWriter() lwr.SetInput(w2if.GetOutput()) arrowcenter = (1, 2, 0) xar = camvtk.Arrow(color=camvtk.red, center=arrowcenter, rotXYZ=(0, 0, 0)) myscreen.addActor(xar) yar = camvtk.Arrow(color=camvtk.green, center=arrowcenter, rotXYZ=(0, 0, 90)) myscreen.addActor(yar) zar = camvtk.Arrow(color=camvtk.blue, center=arrowcenter, rotXYZ=(0, -90, 0)) myscreen.addActor(zar) t = ocl.LinOCT() #t2 = ocl.LinOCT() t.init(3) #t2.init(3) print " after init() t :", t.str() #print " after init() t2 :", t2.str() # sphere svol = ocl.SphereOCTVolume() svol.radius = 3.2 svol.center = ocl.Point(1, 0, 3) # cube cube1 = ocl.CubeOCTVolume() cube1.side = 69 cube1.center = ocl.Point(0, 0, 0) #cylinder cylvol = ocl.CylinderOCTVolume() cylvol.p2 = ocl.Point(0, 0, 4) cylvol.radius = 4 c = ocl.CylCutter(1) c.length = 3 print "cutter length=", c.length p1 = ocl.Point(0, 0, 0) p2 = ocl.Point(1, 1.4, 0) g1vol = ocl.CylMoveOCTVolume(c, p1, p2) cyl1 = camvtk.Cylinder(center=(p1.x, p1.y, p1.z), radius=c.radius, height=c.length, rotXYZ=(90, 0, 0), color=camvtk.grey) cyl1.SetWireframe() myscreen.addActor(cyl1) cyl2 = camvtk.Cylinder(center=(p2.x, p2.y, p2.z), radius=c.radius, height=c.length, rotXYZ=(90, 0, 0), color=camvtk.grey) cyl2.SetWireframe() myscreen.addActor(cyl2) startp = camvtk.Sphere(center=(p1.x, p1.y, p1.z), radius=0.1, color=camvtk.green) myscreen.addActor(startp) endp = camvtk.Sphere(center=(p2.x, p2.y, p2.z), radius=0.1, color=camvtk.red) myscreen.addActor(endp) t.build(g1vol) #print "t2 build()" #t2.build(cube1) #print " t2 after build() ", t2.size() #t2.condense() #print " t2 after condense() ", t2.size() # original trees drawTree(myscreen, t, opacity=1, color=camvtk.green) #drawTree(myscreen,t2,opacity=1, color=camvtk.red) #print " diff12()...", #t3 = t2.operation(1,t) #print "done." #print " diff21()...", #t4 = t2.operation(2,t) #print "done." #print " intersection()...", #t5 = t2.operation(3,t) #print "done." #print " sum()...", #t6 = t2.operation(4,t) #print "done." #print " difference 1-2 t3 (blue) =", t3.size() #print " difference 2-1 t4 (yellow)=", t4.size() #print " intersection t5 (pink) =", t5.size() #print " union t6 (grey) =", t6.size() #drawTree(myscreen,t3,opacity=1, color=camvtk.blue, offset=(0,15,0)) #drawTree(myscreen,t4,opacity=1, color=camvtk.yellow,offset=(0,-15,0)) #drawTree(myscreen,t5,opacity=1, color=camvtk.pink,offset=(-15,0,0)) #drawTree(myscreen,t6,opacity=1, color=camvtk.grey,offset=(-15,-15,0)) title = camvtk.Text() title.SetPos((myscreen.width - 350, myscreen.height - 30)) title.SetText("OpenCAMLib " + datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")) myscreen.addActor(title) #st2 = camvtk.Text() #ytext = "Linear OCTree set operations: difference, intersection, union" #st2.SetText(ytext) #st2.SetPos( (50, myscreen.height-30) ) #myscreen.addActor( st2) #st3 = camvtk.Text() #text = "Original OCTrees\n Ball:%d nodes\n Cube: %d nodes" % ( t.size(), t2.size() ) #st3.SetText(text) #st3.SetPos( (50, 200) ) #myscreen.addActor( st3) #st4 = camvtk.Text() #un = " Union (grey): %d nodes\n" % (t6.size()) #int = " Intersection (pink): %d nodes\n" % (t5.size()) #diff1 = " difference Cube-Ball (blue): %d nodes\n" % (t3.size()) #diff2 = " difference Ball-Cube (yellow): %d nodes\n" % (t4.size()) #text= un+int+diff1+diff2 #st4.SetText(text) #st4.SetPos( (50, 100) ) #myscreen.addActor( st4) myscreen.render() lwr.SetFileName(filename) time.sleep(0.2) #lwr.Write() myscreen.iren.Start()
print "id=%i" % (n), print p1.str() """ xar = camvtk.Arrow(color=red, rotXYZ=(0, 0, 0)) myscreen.addActor(xar) yar = camvtk.Arrow(color=green, rotXYZ=(0, 0, 90)) myscreen.addActor(yar) zar = camvtk.Arrow(color=blue, rotXYZ=(0, -90, 0)) myscreen.addActor(zar) oc2 = cam.OCTest() oc2.set_max_depth(5) svol = cam.SphereOCTVolume() svol.radius = 3.1415 svol.center = cam.Point(-1, 2, -1) oc2.setVol(svol) oc2.build_octree() oc3 = cam.OCTest() svol3 = cam.SphereOCTVolume() svol3.radius = 2 svol3.center = cam.Point(-1, 2, 1) cvol = cam.CubeOCTVolume() cvol.side = 3
def main(filename="frame/f.png",yc=6, n=0): print(ocl.revision()) f=ocl.Ocode() f.set_depth(7) # depth and scale set here. f.set_scale(1) myscreen = camvtk.VTKScreen() myscreen.camera.SetPosition(50, 22, 40) myscreen.camera.SetFocalPoint(0,0, 0) myscreen.camera.Azimuth( n*0.5 ) # box around octree oct_cube = camvtk.Cube(center=(0,0,0), length=4*f.get_scale(), color=camvtk.white) oct_cube.SetWireframe() myscreen.addActor(oct_cube) # screenshot writer w2if = vtk.vtkWindowToImageFilter() w2if.SetInput(myscreen.renWin) lwr = vtk.vtkPNGWriter() lwr.SetInput( w2if.GetOutput() ) # X Y Z arrows arrowcenter=(1,2,0) xar = camvtk.Arrow(color=camvtk.red, center=arrowcenter, rotXYZ=(0,0,0)) myscreen.addActor(xar) yar = camvtk.Arrow(color=camvtk.green, center=arrowcenter, rotXYZ=(0,0,90)) myscreen.addActor(yar) zar = camvtk.Arrow(color=camvtk.blue, center=arrowcenter, rotXYZ=(0,-90,0)) myscreen.addActor(zar) t = ocl.LinOCT() t2 = ocl.LinOCT() t.init(5) t2.init(4) print(" after init() t :", t.str()) print(" after init() t2 :", t2.str()) c = ocl.CylCutter(1) # cutter c.length = 3 print("cutter length=", c.length) p1 = ocl.Point(-0.2,-0.2,0.2) # start of move p2 = ocl.Point(1.5,1.5,-1) # end of move # volume of g1 move g1vol = ocl.CylMoveOCTVolume(c, p1, p2) # sphere svol = ocl.SphereOCTVolume() svol.radius=1 svol.center = ocl.Point(0,0,1) svol.calcBB() # cube cube1 = ocl.CubeOCTVolume() cube1.side=2.123 cube1.center = ocl.Point(0,0,0) cube1.calcBB() #cylinder volume at start of move cylvol = ocl.CylinderOCTVolume() cylvol.p1 = ocl.Point(p1) cylvol.p2 = ocl.Point(p1)+ocl.Point(0,0,c.length) cylvol.radius= c.radius cylvol.calcBB() # draw exact cylinder cp = 0.5*(cylvol.p1 + cylvol.p2) height = (cylvol.p2-cylvol.p1).norm() cylvolactor = camvtk.Cylinder(center=(cp.x, cp.y, cp.z-float(height)/2), radius = cylvol.radius, height=height, rotXYZ=(90,0,0)) cylvolactor.SetWireframe() myscreen.addActor(cylvolactor) # cylinder at start of move #drawCylCutter(myscreen, c, p1) # cylinder at end of move drawCylCutter(myscreen, c, p2) # green ball at start of move startp = camvtk.Sphere(center=(p1.x,p1.y,p1.z), radius=0.1, color=camvtk.green) myscreen.addActor(startp) # red ball at end of move endp = camvtk.Sphere(center=(p2.x,p2.y,p2.z), radius=0.1, color=camvtk.red) myscreen.addActor(endp) # build g1 tree t_before = time.time() t.build( g1vol ) t_after = time.time() print("g1 build took ", t_after-t_before," s") # build cube t_before = time.time() t2.build( cube1 ) t_after = time.time() print("cube build took ", t_after-t_before," s") #t.sort() #t2.sort() print("calling diff()...",) t_before = time.time() #dt = t2.operation(1,t) t2.diff(t) t_after = time.time() print("done.") print("diff took ", t_after-t_before," s") print("diff has ", t2.size()," nodes") # original trees print("drawing trees") drawTree2(myscreen,t,opacity=1, color=camvtk.green) drawTree2(myscreen,t2,opacity=0.2, color=camvtk.cyan) drawTree2(myscreen,t2,opacity=1, color=camvtk.cyan, offset=(5,0,0)) # elliptical tube pmax = p1 + 1.5* (p2-p1) pmin = p1 - 0.5* (p2-p1) myscreen.addActor( camvtk.Sphere(center=(pmax.x,pmax.y,pmax.z), radius=0.1, color=camvtk.lgreen) ) myscreen.addActor( camvtk.Sphere(center=(pmin.x,pmin.y,pmin.z), radius=0.1, color=camvtk.pink) ) aaxis = pmin + ocl.Point(-0.353553, 0.353553, 0) baxis = pmin + ocl.Point(0.0243494, 0.0243494, 0.126617) myscreen.addActor( camvtk.Sphere(center=(aaxis.x,aaxis.y,aaxis.z), radius=0.1, color=camvtk.orange) ) myscreen.addActor( camvtk.Sphere(center=(baxis.x,baxis.y,baxis.z), radius=0.1, color=camvtk.yellow) ) title = camvtk.Text() title.SetPos( (myscreen.width-350, myscreen.height-30) ) title.SetText("OpenCAMLib " + datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")) myscreen.addActor(title) print(" render()...",) myscreen.render() print("done.") lwr.SetFileName(filename) time.sleep(0.2) #lwr.Write() myscreen.iren.Start()
zar = camvtk.Arrow(color=camvtk.blue, rotXYZ=(0,-90,0)) myscreen.addActor(zar) t = ocl.LinOCT() print " created: ",t.str() #t.append(o2) t.init(3) t2 = ocl.LinOCT() t2.init(3) print " after init():", t.str() #printNodes(t) print "t.size=", t.size() svol = ocl.SphereOCTVolume() svol.radius=3 svol.center = ocl.Point(6,0,3) cube1 = ocl.CubeOCTVolume() cube1.side=6 cube1.center = ocl.Point(0,0,0) cube2 = ocl.CubeOCTVolume() cube2.center = ocl.Point(1,2,0) cube2.side = 30
def main(filename="frame/f.png",yc=6, n=0): f=ocl.Ocode() f.set_depth(9) f.set_scale(5) myscreen = camvtk.VTKScreen() myscreen.camera.SetPosition(50, 22, 40) myscreen.camera.SetFocalPoint(0,0, 0) myscreen.camera.Azimuth( n*0.5 ) # box around octree oct_cube = camvtk.Cube(center=(0,0,0), length=4*f.get_scale(), color=camvtk.white) oct_cube.SetWireframe() myscreen.addActor(oct_cube) # screenshot writer w2if = vtk.vtkWindowToImageFilter() w2if.SetInput(myscreen.renWin) lwr = vtk.vtkPNGWriter() lwr.SetInput( w2if.GetOutput() ) arrowcenter=(1,2,0) xar = camvtk.Arrow(color=camvtk.red, center=arrowcenter, rotXYZ=(0,0,0)) myscreen.addActor(xar) yar = camvtk.Arrow(color=camvtk.green, center=arrowcenter, rotXYZ=(0,0,90)) myscreen.addActor(yar) zar = camvtk.Arrow(color=camvtk.blue, center=arrowcenter, rotXYZ=(0,-90,0)) myscreen.addActor(zar) """ dl = myscreen.GetLights() print("original default light:") print(dl) print("nextitem()") l1 = dl.GetNextItem() print(" light:") print(l1) #print myscreen.GetLights() lights = vtk.vtkLightCollection() l = myscreen.MakeLight() l2 = myscreen.MakeLight() #myscreen.RemoveAllLights() l.SetAmbientColor(0.5, 0.5, 0.5) l.SetPosition(0,0,20) l.SetConeAngle(360) l2.SetPosition(0,0,-20) l2.SetConeAngle(360) l2.SetIntensity(0.5) myscreen.AddLight(l) myscreen.AddLight(l2) #myscreen.SetLightCollection(lights) llist = myscreen.GetLights() li = llist.GetNextItem() print(" new list of lights:") print(li) #for li in llist: # print(li) print(" newly created light:") print(l) dl = myscreen.GetLights() print("NEW light:") print(dl) """ t = ocl.LinOCT() t2 = ocl.LinOCT() t.init(0) t2.init(1) #drawTree2(myscreen, t, opacity=0.2) #myscreen.render() #myscreen.iren.Start() #exit() print(" after init() t :", t.str()) print(" after init() t2 :", t2.str()) # sphere svol = ocl.SphereOCTVolume() svol.radius=3.2 svol.center = ocl.Point(1,0,3) svol.calcBB() # cube cube1 = ocl.CubeOCTVolume() cube1.side=2.123 cube1.center = ocl.Point(0,0,0) cube1.calcBB() #cylinder cylvol = ocl.CylinderOCTVolume() cylvol.p2 = ocl.Point(3,4,-5) cylvol.radius= 2 cylvol.calcBB() # draw exact cylinder cp = 0.5*(cylvol.p1 + cylvol.p2) height = (cylvol.p2-cylvol.p1).norm() cylvolactor = camvtk.Cylinder(center=(cp.x, cp.y, cp.z-float(height)/2), radius = cylvol.radius, height=height, rotXYZ=(90,0,0)) cylvolactor.SetWireframe() #myscreen.addActor(cylvolactor) c = ocl.CylCutter(2) c.length = 3 print("cutter length=", c.length) p1 = ocl.Point(-1,-2,0) p2 = ocl.Point(1,2.0,0) g1vol = ocl.CylMoveOCTVolume(c, p1, p2) cyl1 = camvtk.Cylinder(center=(p1.x,p1.y,p1.z), radius=c.radius, height=c.length, rotXYZ=(90,0,0), color=camvtk.grey) cyl1.SetWireframe() myscreen.addActor(cyl1) cyl2 = camvtk.Cylinder(center=(p2.x,p2.y,p2.z), radius=c.radius, height=c.length, rotXYZ=(90,0,0), color=camvtk.grey) cyl2.SetWireframe() myscreen.addActor(cyl2) startp = camvtk.Sphere(center=(p1.x,p1.y,p1.z), radius=0.1, color=camvtk.green) myscreen.addActor(startp) endp = camvtk.Sphere(center=(p2.x,p2.y,p2.z), radius=0.1, color=camvtk.red) myscreen.addActor(endp) t.build( g1vol ) t2.build( cube1) print("calling diff()...",) dt = t2.operation(1,t) print("done.") # set Cylinde bounding-box """ cylvol.bb.maxx = 1.23 cylvol.bb.minx = -0.2 cylvol.bb.maxy = 1.23 cylvol.bb.miny = -0.2 cylvol.bb.maxz = 1.23 cylvol.bb.minz = -0.2 """ drawBB( myscreen, g1vol) #print cylvol.bb.maxx #print "t2 build()" #t2.build(cube1) #print " t2 after build() ", t2.size() #t2.condense() #print " t2 after condense() ", t2.size() # original trees drawTree2(myscreen,t,opacity=1, color=camvtk.green) drawTree2(myscreen,t2,opacity=1, color=camvtk.cyan) drawTree2(myscreen,dt,opacity=1, color=camvtk.cyan, offset=(5,0,0)) """ for n in range(0,30): tp = ocl.Point(2.5,2.5,2-n*0.3) tpc = camvtk.black if (cylvol.isInside(tp)): tpc = camvtk.red else: tpc = camvtk.cyan tp_sphere = camvtk.Sphere(center=(tp.x,tp.y,tp.z), radius=0.1, color= tpc) myscreen.addActor(tp_sphere) """ #drawTree(myscreen,t2,opacity=1, color=camvtk.red) #print " diff12()...", #t3 = t2.operation(1,t) #print "done." #print " diff21()...", #t4 = t2.operation(2,t) #print "done." #print " intersection()...", #t5 = t2.operation(3,t) #print "done." #print " sum()...", #t6 = t2.operation(4,t) #print "done." #print " difference 1-2 t3 (blue) =", t3.size() #print " difference 2-1 t4 (yellow)=", t4.size() #print " intersection t5 (pink) =", t5.size() #print " union t6 (grey) =", t6.size() #drawTree(myscreen,t3,opacity=1, color=camvtk.blue, offset=(0,15,0)) #drawTree(myscreen,t4,opacity=1, color=camvtk.yellow,offset=(0,-15,0)) #drawTree(myscreen,t5,opacity=1, color=camvtk.pink,offset=(-15,0,0)) #drawTree(myscreen,t6,opacity=1, color=camvtk.grey,offset=(-15,-15,0)) title = camvtk.Text() title.SetPos( (myscreen.width-350, myscreen.height-30) ) title.SetText("OpenCAMLib " + datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")) myscreen.addActor(title) #st2 = camvtk.Text() #ytext = "Linear OCTree set operations: difference, intersection, union" #st2.SetText(ytext) #st2.SetPos( (50, myscreen.height-30) ) #myscreen.addActor( st2) #st3 = camvtk.Text() #text = "Original OCTrees\n Ball:%d nodes\n Cube: %d nodes" % ( t.size(), t2.size() ) #st3.SetText(text) #st3.SetPos( (50, 200) ) #myscreen.addActor( st3) #st4 = camvtk.Text() #un = " Union (grey): %d nodes\n" % (t6.size()) #int = " Intersection (pink): %d nodes\n" % (t5.size()) #diff1 = " difference Cube-Ball (blue): %d nodes\n" % (t3.size()) #diff2 = " difference Ball-Cube (yellow): %d nodes\n" % (t4.size()) #text= un+int+diff1+diff2 #st4.SetText(text) #st4.SetPos( (50, 100) ) #myscreen.addActor( st4) print(" render()...",) myscreen.render() print("done.") lwr.SetFileName(filename) time.sleep(0.2) #lwr.Write() myscreen.iren.Start()
def main(): print ocl.revision() myscreen = camvtk.VTKScreen() myscreen.camera.SetPosition(-15, -8, 15) myscreen.camera.SetFocalPoint(0,0, 0) # axis arrows #camvtk.drawArrows(myscreen,center=(0,0,0)) s = ocl.SphereOCTVolume() s.center = ocl.Point(-2.50,-0.6,0) s.radius = 1.1345 # screenshot writer w2if = vtk.vtkWindowToImageFilter() w2if.SetInput(myscreen.renWin) lwr = vtk.vtkPNGWriter() lwr.SetInput( w2if.GetOutput() ) cp= ocl.Point(0,0,-16) #depths = [3, 4, 5, 6, 7, 8] max_depth = 8 root_scale = 16 t = ocl.Octree(root_scale, max_depth, cp) t.init(4) n = 0 # the frame number nmax=80 theta=0 dtheta=0.06 thetalift=-0.01 s.center = ocl.Point( 1.3*math.cos(theta),1.3*math.sin(theta),thetalift*theta) mc = ocl.MarchingCubes() while (n<=nmax): print "diff...", t_before = time.time() t.diff_negative(s) t_after = time.time() build_time = t_after-t_before print "done in ", build_time," s" if n==nmax: t_before = time.time() print "mc()...", tris = mc.mc_tree(t) #.mc_triangles() t_after = time.time() mc_time = t_after-t_before print "done in ", mc_time," s" print " mc() got ", len(tris), " triangles" mc_surf = camvtk.STLSurf( triangleList=tris, color=camvtk.red ) #mc_surf.SetWireframe() mc_surf.SetColor(camvtk.cyan) print " STLSurf()...", myscreen.addActor( mc_surf ) print "done." nodes = t.get_leaf_nodes() allpoints=[] #for no in nodes: # verts = no.vertices() # for v in verts: # allpoints.append(v) #oct_points = camvtk.PointCloud( allpoints ) print " PointCloud()...", #myscreen.addActor( oct_points ) print "done." print " render()...", myscreen.render() print "done." #lwr.SetFileName("frames/mc8_frame"+ ('%06d' % n)+".png") #myscreen.camera.Azimuth( 2 ) #myscreen.render() #w2if.Modified() #lwr.Write() #mc_surf.SetWireframe() #print "sleep...", #time.sleep(1.02) #print "done." if n is not nmax: myscreen.removeActor( mc_surf ) #myscreen.removeActor( oct_points ) # move forward theta = n*dtheta sp1 = ocl.Point(s.center) s.center = ocl.Point( 1.3*math.cos(theta),1.3*math.sin(theta),thetalift*theta) sp2 = ocl.Point(s.center) print "line from ",sp1," to ",sp2 if n is not nmax: myscreen.addActor( camvtk.Line( p1=(sp1.x,sp1.y,sp1.z),p2=(sp2.x,sp2.y,sp2.z), color=camvtk.red ) ) print "center moved to", s.center n=n+1 print "All done." myscreen.iren.Start()
def main(filename="frame/f.png", yc=6, n=0): print ocl.revision() f = ocl.Ocode() f.set_depth(7) f.set_scale(1) myscreen = camvtk.VTKScreen() myscreen.camera.SetPosition(50, 22, 40) myscreen.camera.SetFocalPoint(0, 0, 0) myscreen.camera.Azimuth(n * 0.5) # box around octree oct_cube = camvtk.Cube(center=(0, 0, 0), length=4 * f.get_scale(), color=camvtk.white) oct_cube.SetWireframe() myscreen.addActor(oct_cube) # screenshot writer w2if = vtk.vtkWindowToImageFilter() w2if.SetInput(myscreen.renWin) lwr = vtk.vtkPNGWriter() lwr.SetInput(w2if.GetOutput()) arrowcenter = (1, 2, 0) xar = camvtk.Arrow(color=camvtk.red, center=arrowcenter, rotXYZ=(0, 0, 0)) myscreen.addActor(xar) yar = camvtk.Arrow(color=camvtk.green, center=arrowcenter, rotXYZ=(0, 0, 90)) myscreen.addActor(yar) zar = camvtk.Arrow(color=camvtk.blue, center=arrowcenter, rotXYZ=(0, -90, 0)) myscreen.addActor(zar) t = ocl.LinOCT() t2 = ocl.LinOCT() t.init(0) #exit() t2.init(2) #drawTree2(myscreen, t, opacity=0.2) #myscreen.render() #myscreen.iren.Start() #exit() print " after init() t :", t.str() #print " after init() t2 :", t2.str() # sphere svol = ocl.SphereOCTVolume() svol.radius = 1 svol.center = ocl.Point(0, 0, 1) svol.calcBB() # cube cube1 = ocl.CubeOCTVolume() cube1.side = 2.123 cube1.center = ocl.Point(0, 0, 0) cube1.calcBB() #cylinder cylvol = ocl.CylinderOCTVolume() cylvol.p2 = ocl.Point(1, 5, -2) cylvol.radius = 0.4 cylvol.calcBB() # draw exact cylinder cp = 0.5 * (cylvol.p1 + cylvol.p2) height = (cylvol.p2 - cylvol.p1).norm() cylvolactor = camvtk.Cylinder(center=(cp.x, cp.y, cp.z - float(height) / 2), radius=cylvol.radius, height=height, rotXYZ=(90, 0, 0)) cylvolactor.SetWireframe() #myscreen.addActor(cylvolactor) c = ocl.CylCutter(1) c.length = 3 print "cutter length=", c.length p1 = ocl.Point(0.2, 0.2, 0) p2 = ocl.Point(1.5, 1.5, -1) g1vol = ocl.CylMoveOCTVolume(c, p1, p2) cyl1 = camvtk.Cylinder(center=(p1.x, p1.y, p1.z), radius=c.radius, height=c.length, rotXYZ=(90, 0, 0), color=camvtk.grey) cyl1.SetWireframe() myscreen.addActor(cyl1) cyl2 = camvtk.Cylinder(center=(p2.x, p2.y, p2.z), radius=c.radius, height=c.length, rotXYZ=(90, 0, 0), color=camvtk.grey) cyl2.SetWireframe() myscreen.addActor(cyl2) startp = camvtk.Sphere(center=(p1.x, p1.y, p1.z), radius=0.1, color=camvtk.green) myscreen.addActor(startp) endp = camvtk.Sphere(center=(p2.x, p2.y, p2.z), radius=0.1, color=camvtk.red) myscreen.addActor(endp) #t.build( g1vol ) t_before = time.time() #t.build( g1vol ) t.build(svol) t_after = time.time() print "build took ", t_after - t_before, " s" t_before = time.time() t2.build(cube1) t_after = time.time() print "build took ", t_after - t_before, " s" #t.sort() #t2.sort() print "calling diff()...", t_before = time.time() #dt = t2.operation(1,t) t2.diff(t) t_after = time.time() print "done." print "diff took ", t_after - t_before, " s" print "diff has ", t2.size(), " nodes" #drawBB( myscreen, g1vol) #print "drawBB() done" # original trees print "drawing trees" drawTree2(myscreen, t, opacity=1, color=camvtk.green) drawTree2(myscreen, t2, opacity=0.2, color=camvtk.cyan) drawTree2(myscreen, t2, opacity=1, color=camvtk.cyan, offset=(5, 0, 0)) # box-volume #cor = g1vol.box.corner #v1 = g1vol.box.v1 + cor #v2 = g1vol.box.v2 + cor #v3 = g1vol.box.v3 + cor #myscreen.addActor( camvtk.Sphere(center=(cor.x,cor.y,cor.z), radius=0.1, color=camvtk.red) ) #myscreen.addActor( camvtk.Sphere(center=(v1.x,v1.y,v1.z), radius=0.1, color=camvtk.blue) ) #myscreen.addActor( camvtk.Sphere(center=(v2.x,v2.y,v2.z), radius=0.1, color=camvtk.cyan) ) #myscreen.addActor( camvtk.Sphere(center=(v3.x,v3.y,v3.z), radius=0.1, color=camvtk.pink) ) # elliptical tube pmax = p1 + 1.5 * (p2 - p1) pmin = p1 - 0.5 * (p2 - p1) myscreen.addActor( camvtk.Sphere(center=(pmax.x, pmax.y, pmax.z), radius=0.1, color=camvtk.lgreen)) myscreen.addActor( camvtk.Sphere(center=(pmin.x, pmin.y, pmin.z), radius=0.1, color=camvtk.pink)) aaxis = pmin + ocl.Point(-0.353553, 0.353553, 0) baxis = pmin + ocl.Point(0.0243494, 0.0243494, 0.126617) myscreen.addActor( camvtk.Sphere(center=(aaxis.x, aaxis.y, aaxis.z), radius=0.1, color=camvtk.orange)) myscreen.addActor( camvtk.Sphere(center=(baxis.x, baxis.y, baxis.z), radius=0.1, color=camvtk.yellow)) ##camvtk.Cylinder(center=(pmin.x,pmin.y,pmin.z), radius=0.1, color=camvtk.pink) """ for n in xrange(0,30): tp = ocl.Point(2.5,2.5,2-n*0.3) tpc = camvtk.black if (cylvol.isInside(tp)): tpc = camvtk.red else: tpc = camvtk.cyan tp_sphere = camvtk.Sphere(center=(tp.x,tp.y,tp.z), radius=0.1, color= tpc) myscreen.addActor(tp_sphere) """ #drawTree(myscreen,t2,opacity=1, color=camvtk.red) #print " diff12()...", #t3 = t2.operation(1,t) #print "done." #print " diff21()...", #t4 = t2.operation(2,t) #print "done." #print " intersection()...", #t5 = t2.operation(3,t) #print "done." #print " sum()...", #t6 = t2.operation(4,t) #print "done." #print " difference 1-2 t3 (blue) =", t3.size() #print " difference 2-1 t4 (yellow)=", t4.size() #print " intersection t5 (pink) =", t5.size() #print " union t6 (grey) =", t6.size() #drawTree(myscreen,t3,opacity=1, color=camvtk.blue, offset=(0,15,0)) #drawTree(myscreen,t4,opacity=1, color=camvtk.yellow,offset=(0,-15,0)) #drawTree(myscreen,t5,opacity=1, color=camvtk.pink,offset=(-15,0,0)) #drawTree(myscreen,t6,opacity=1, color=camvtk.grey,offset=(-15,-15,0)) title = camvtk.Text() title.SetPos((myscreen.width - 350, myscreen.height - 30)) title.SetText("OpenCAMLib " + datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")) myscreen.addActor(title) #st2 = camvtk.Text() #ytext = "Linear OCTree set operations: difference, intersection, union" #st2.SetText(ytext) #st2.SetPos( (50, myscreen.height-30) ) #myscreen.addActor( st2) #st3 = camvtk.Text() #text = "Original OCTrees\n Ball:%d nodes\n Cube: %d nodes" % ( t.size(), t2.size() ) #st3.SetText(text) #st3.SetPos( (50, 200) ) #myscreen.addActor( st3) #st4 = camvtk.Text() #un = " Union (grey): %d nodes\n" % (t6.size()) #int = " Intersection (pink): %d nodes\n" % (t5.size()) #diff1 = " difference Cube-Ball (blue): %d nodes\n" % (t3.size()) #diff2 = " difference Ball-Cube (yellow): %d nodes\n" % (t4.size()) #text= un+int+diff1+diff2 #st4.SetText(text) #st4.SetPos( (50, 100) ) #myscreen.addActor( st4) print " render()...", myscreen.render() print "done." lwr.SetFileName(filename) time.sleep(0.2) #lwr.Write() myscreen.iren.Start()
def main(): print ocl.revision() myscreen = camvtk.VTKScreen() myscreen.camera.SetPosition(-15, -8, 15) myscreen.camera.SetFocalPoint(0, 0, 0) # axis arrows camvtk.drawArrows(myscreen, center=(0, 0, 0)) s = ocl.SphereOCTVolume() s.center = ocl.Point(-2.50, -0.6, 0) s.radius = 0.6345 #sphere = camvtk.Sphere( center=(s.center.x,s.center.y,s.center.z), radius=s.radius, color=camvtk.cyan) #sphere.SetOpacity(0.1) #myscreen.addActor( sphere ); # screenshot writer w2if = vtk.vtkWindowToImageFilter() w2if.SetInput(myscreen.renWin) lwr = vtk.vtkPNGWriter() lwr.SetInput(w2if.GetOutput()) # text camvtk.drawOCLtext(myscreen) octtext = camvtk.Text() octtext.SetPos((myscreen.width - 400, myscreen.height - 290)) myscreen.addActor(octtext) cp = ocl.Point(0, 0, -3) #depths = [3, 4, 5, 6, 7, 8] max_depth = 7 root_scale = 3 t = ocl.Octree(root_scale, max_depth, cp) t.init(4) n = 0 # the frame number nmax = 30 theta = 0 dtheta = 0.05 s.center = ocl.Point(1.5 * math.cos(theta), 0.3 * math.sin(theta), theta) mc = ocl.MarchingCubes() tris = [] while (n <= nmax): print "diff...", t_before = time.time() t.diff_negative(s) t_after = time.time() build_time = t_after - t_before print "done in ", build_time, " s" infotext = "Octree + Marching-Cubes test\nmax octree-depth:%i \ntriangles: %i \nbuild() time: %f ms" % ( max_depth, len(tris), build_time * 1e3) octtext.SetText(infotext) if n == nmax: t_before = time.time() print "mc()...", tris = mc.mc_tree(t) #.mc_triangles() t_after = time.time() mc_time = t_after - t_before print "done in ", mc_time, " s" print " mc() got ", len(tris), " triangles" mc_surf = camvtk.STLSurf(triangleList=tris, color=camvtk.red) mc_surf.SetWireframe() mc_surf.SetColor(camvtk.cyan) print " STLSurf()...", myscreen.addActor(mc_surf) print "done." #nodes = t.get_leaf_nodes() #allpoints=[] #for no in nodes: # verts = no.vertices() # for v in verts: # allpoints.append(v) #oct_points = camvtk.PointCloud( allpoints ) #print " PointCloud()...", #myscreen.addActor( oct_points ) #print "done." print " render()...", myscreen.render() print "done." #lwr.SetFileName("frames/mc8_frame"+ ('%06d' % n)+".png") #myscreen.camera.Azimuth( 2 ) #myscreen.render() #w2if.Modified() #lwr.Write() #mc_surf.SetWireframe() #print "sleep...", #time.sleep(1.02) #print "done." if n is not nmax: myscreen.removeActor(mc_surf) #myscreen.removeActor( oct_points ) # move forward theta = n * dtheta s.center = ocl.Point(1.5 * math.cos(theta), 0.3 * math.sin(theta), 0.01 * theta) print "center moved to", s.center n = n + 1 print "All done." myscreen.iren.Start()
def main(filename="frame/f.png"): print(ocl.revision()) myscreen = camvtk.VTKScreen() myscreen.camera.SetPosition(-15, -8, 15) myscreen.camera.SetFocalPoint(5, 5, 0) # axis arrows camvtk.drawArrows(myscreen, center=(0, 0, 0)) # screenshot writer w2if = vtk.vtkWindowToImageFilter() w2if.SetInput(myscreen.renWin) lwr = vtk.vtkPNGWriter() lwr.SetInput(w2if.GetOutput()) c = ocl.CylCutter(3, 10) # cutter c.length = 3 print("cutter length=", c.length) cp = ocl.Point(0, 0, 0) max_depth = 9 root_scale = 3 t = ocl.Octree(root_scale, max_depth, cp) print(t) nodes = t.get_leaf_nodes() t.init(1) #nodes=[] s = ocl.SphereOCTVolume() s.center = ocl.Point(0, 0, 0) s.radius = 2.6345 print("build...", ) t.build(s) print("done.") print(t) sphere = camvtk.Sphere(center=(s.center.x, s.center.y, s.center.z), radius=s.radius, color=camvtk.cyan) sphere.SetOpacity(0.1) myscreen.addActor(sphere) nodes = t.get_surface_nodes() print("got ", len(nodes), " surface nodes") points = [] for n in nodes: #n=nodes[0] verts = n.vertices() #c = n.center #print " node at depth=", n.depth," center=",c #myscreen.addActor( camvtk.Sphere( center=(c.x,c.y,c.z), radius=0.1, color=camvtk.yellow )) for v in verts: #print v #myscreen.addActor( camvtk.Sphere( center=(v.x,v.y,v.z), radius=0.1 )) # points.append(v) #myscreen.addActor( camvtk.PointCloud( pointlist= points)) tris = t.mc_triangles() mc_surf = camvtk.STLSurf(triangleList=tris, color=camvtk.red) #mc_surf.SetWireframe() myscreen.addActor(mc_surf) print(" render()...", ) myscreen.render() print("done.") #time.sleep(0.2) myscreen.iren.Start()
def main(): print(ocl.revision()) myscreen = camvtk.VTKScreen() myscreen.camera.SetPosition(-15, -8, 15) myscreen.camera.SetFocalPoint(0, 0, 0) # axis arrows camvtk.drawArrows(myscreen, center=(0, 0, 0)) s = ocl.SphereOCTVolume() s.center = ocl.Point(0, 0, 0) s.radius = 2.6345 sphere = camvtk.Sphere(center=(s.center.x, s.center.y, s.center.z), radius=s.radius, color=camvtk.cyan) sphere.SetOpacity(0.1) myscreen.addActor(sphere) # screenshot writer w2if = vtk.vtkWindowToImageFilter() w2if.SetInput(myscreen.renWin) lwr = vtk.vtkPNGWriter() lwr.SetInput(w2if.GetOutput()) # text camvtk.drawOCLtext(myscreen) octtext = camvtk.Text() octtext.SetPos((myscreen.width - 400, myscreen.height - 290)) myscreen.addActor(octtext) cp = ocl.Point(0, 0, 0) #depths = [3, 4, 5, 6, 7, 8] depths = [4, 5] root_scale = 3 n = 0 # the frame number for max_depth in depths: t = ocl.Octree(root_scale, max_depth, cp) t.init(1) print("build...", ) t_before = time.time() t.diff_positive(s) t_after = time.time() build_time = t_after - t_before print("done.") tris = t.mc_triangles() infotext = "Octree + Marching-Cubes test\nmax octree-depth:%i \ntriangles: %i \nbuild() time: %f ms" % ( max_depth, len(tris), build_time * 1e3) octtext.SetText(infotext) mc_surf = camvtk.STLSurf(triangleList=tris, color=camvtk.red) # myscreen.addActor(mc_surf) print(" render()...", ) myscreen.render() print("done.") for m in range(0, 180): # do a rotating animation lwr.SetFileName("frames/mc8_frame" + ('%06d' % n) + ".png") myscreen.camera.Azimuth(2) myscreen.render() w2if.Modified() #lwr.Write() if m > 90: mc_surf.SetWireframe() time.sleep(0.02) n = n + 1 myscreen.removeActor(mc_surf) myscreen.iren.Start()