def make_mc_values_grid(iobj, RANGE_MIN, RANGE_MAX, STEPSIZE, old=True): rng = np.arange(RANGE_MIN, RANGE_MAX, STEPSIZE) import mc_utils vgrid = mc_utils.make_grid(iobj, rng, old=old) if old: return np.swapaxes(vgrid, 0, 1) else: print ("*********************************************") vgrid = np.swapaxes(vgrid, 1, 2) vgrid = np.swapaxes(vgrid, 0, 1) return vgrid
def make_mc_mesh_scikit(iobj, RANGE_MIN, RANGE_MAX, STEPSIZE): """ Uses Scikit's MC algorithm,which has minor bugs. """ rng = np.arange(RANGE_MIN, RANGE_MAX, STEPSIZE) import mc_utils vgrid = mc_utils.make_grid(iobj, rng, old=True) verts, faces = vtk_mc(vgrid, (RANGE_MIN, RANGE_MAX, STEPSIZE)) verts = ((verts) * STEPSIZE + rng[0]) print("OLD: swapping x,y") verts = np.concatenate( (verts[:, 1, np.newaxis], verts[:, 0, np.newaxis], verts[:, 2, np.newaxis]), axis=1) return verts, faces
def make_mc_values_grid(iobj, RANGE_MIN, RANGE_MAX, STEPSIZE, old=None): rng = np.arange(RANGE_MIN, RANGE_MAX, STEPSIZE) import mc_utils vgrid = mc_utils.make_grid(iobj, rng, old=old) assert old is not "unspecified" # if Unspecified, use old=True in the function call (ont change this function) if old == "3": return vgrid if old: return np.swapaxes(vgrid, 0, 1) else: print("*********************************************") vgrid = np.swapaxes(vgrid, 1, 2) vgrid = np.swapaxes(vgrid, 0, 1) return vgrid
def make_mc_values_grid_mayavi(iobj, RANGE_MIN, RANGE_MAX, STEPSIZE): rng = np.arange(RANGE_MIN, RANGE_MAX, STEPSIZE) import mc_utils vgrid = mc_utils.make_grid(iobj, rng, old=True) return np.swapaxes(vgrid, 0, 1)
""" Choose the object """ #exname = "bowl_15_holes" # "blend_example2_discs" "french_fries_vectorized" "cube_example" #exname = "blend_example2_discs" # #exname ="ell_example1" # #exname = "first_csg" #exname = "bowl_15_holes" iobj = example_objects.make_example_vectorized(exname) #iobj = example_objects.make_example_nonvec(exname) #import vectorized #iobj = cube1(vectorized) print("Starting evaluation of implicit on the Grid.") sys.stdout.flush() t1s = dtimer() vgrid = mc_utils.make_grid(iobj, rng, old=True) #vgrid = mc_utils.make_grid_pointwise(iobj, rng) assert vgrid.shape == (len(rng), len(rng), len(rng)) t1 = dtimer() - t1s print('done grid') sys.stdout.flush() """ Use the marching cubes: Usually very fast """ t2s = dtimer() verts, faces = measure.marching_cubes(vgrid, 0) #print(verts) #verts = (verts) * STEPSIZE + RANGE_MIN #verts = (verts) * (rng[1]-rng[0]) + rng[0] verts = ((verts) * STEPSIZE + rng[0]) verts = np.concatenate( (verts[:, 1, np.newaxis], verts[:, 0, np.newaxis], verts[:, 2, np.newaxis]),
#"rdice_vec" # #"cube_example" # problem: zero facet areas. otherwise, it works. #"ell_example1" #+ #"bowl_15_holes" # works too. But too many faces => too slow, too much memory. 32K? #"french_fries_vectorized" global STEPSIZE from example_objects import make_example_vectorized iobj = make_example_vectorized(objname) (RANGE_MIN, RANGE_MAX, STEPSIZE) = (-3, +5, 0.2 / 2.) #STEPSIZE = STEPSIZE / 2. rng = np.arange(RANGE_MIN, RANGE_MAX, STEPSIZE) #vgrid = mc_utils.make_grid(iobj, rng, old=old) gridvals, xyz = mc_utils.make_grid(iobj, rng, old=False, return_xyz=True) v_xyz = gridvals.ravel() print "grid size", gridvals.shape, np.prod(gridvals.shape) #from stl_tests import make_mc_values_grid #gridvals = make_mc_values_grid(iobj, RANGE_MIN, RANGE_MAX, STEPSIZE, old="3") verts, facets = vtk_mc(gridvals, (RANGE_MIN, RANGE_MAX, STEPSIZE)) print("MC calculated.") sys.stdout.flush() if False: import visual5 visual5.display_simple_using_mayavi_2( [(verts, facets), (verts, facets)], mayavi_wireframe=[False, True], opacity=[0.4, 0.3],