def load_mesh(filename, check=True, normalize=True, *args, **kwargs): ext = path.splitext(filename)[1].lower() if ext == '.obj': result = loadobj(filename, *args, **kwargs) elif ext == '.off': if not 'no_colors' in kwargs: kwargs['no_colors'] = True result = read_mesh(filename, *args, **kwargs) if len(result) == 3: result = [result[0], result[2], result[1]] elif ext == '.mat': result = load_nrw_mat(filename, *args, **kwargs) elif ext == '.ply': from tvtk.api import tvtk reader = tvtk.PLYReader(file_name=filename) reader.update() pd = reader.output faces = pd.polys.to_array().reshape((-1, 4)) assert np.all(faces[:, 0] == 3) # ensure triangles result = pd.points.to_array(), faces[:, 1:] else: raise ValueError("cannot load meshes with extension %s" % ext) if normalize: verts = result[0] verts[:] = verts - verts.mean(axis=0) verts[:] = verts / verts.std() if check: check_mesh(result[0], result[1], filename) return result
def __reader_dict_default(self): """Default value for reader dict.""" rd = {'stl':tvtk.STLReader(), 'stla':tvtk.STLReader(), 'stlb':tvtk.STLReader(), 'txt':tvtk.SimplePointsReader(), 'raw':tvtk.ParticleReader(), 'ply':tvtk.PLYReader(), 'pdb':tvtk.PDBReader(), 'slc':tvtk.SLCReader(), 'xyz':tvtk.XYZMolReader(), 'obj':tvtk.OBJReader(), 'facet':tvtk.FacetReader(), 'cube':tvtk.GaussianCubeReader(), 'g':tvtk.BYUReader(), } return rd