def add_dataset(dataset, name='', **kwargs): """Add a dataset object to the Mayavi pipeline. **Parameters** :dataset: a tvtk/vtk dataset/tvtk/VTK Algorithm, or a Mayavi source. The dataset added to the Mayavi pipeline :figure: a figure identifier number or string, None or False, optional. If no `figure` keyword argument is given, the data is added to the current figure (a new figure if created if necessary). If a `figure` keyword argument is given, it should either the name the number of the figure the dataset should be added to, or None, in which case the data is not added to the pipeline. If figure is False, a null engine is created. This null engine does not create figures, and is mainly usefull for tensting, or using the VTK algorithms without visualization. **Returns** The corresponding Mayavi source is returned. """ if isinstance(dataset, (tvtk.DataSet, vtk.vtkDataSet)): d = VTKDataSource() d.data = tvtk.to_tvtk(dataset) elif isinstance(dataset, (tvtk.DataObject, vtk.vtkDataObject)): d = VTKObjectSource() tp = tvtk.TrivialProducer() tp.set_output(tvtk.to_tvtk(dataset)) d.object = tp elif isinstance(dataset, (tvtk.Object, vtk.vtkObject)): d = VTKObjectSource() d.object = tvtk.to_tvtk(dataset) elif isinstance(dataset, Source): d = dataset else: raise TypeError( "first argument should be either a TVTK object" " or a mayavi source") if len(name) > 0: d.name = name engine = _get_engine_from_kwarg(kwargs) if engine is None: # Return early, as we don't want to add the source to an engine. return d engine.add_source(d) return d
def add_dataset(dataset, name='', **kwargs): """Add a dataset object to the Mayavi pipeline. **Parameters** :dataset: a tvtk dataset, or a Mayavi source. The dataset added to the Mayavi pipeline :figure: a figure identifier number or string, None or False, optionnal. If no `figure` keyword argument is given, the data is added to the current figure (a new figure if created if necessary). If a `figure` keyword argument is given, it should either the name the number of the figure the dataset should be added to, or None, in which case the data is not added to the pipeline. If figure is False, a null engine is created. This null engine does not create figures, and is mainly usefull for tensting, or using the VTK algorithms without visualization. **Returns** The corresponding Mayavi source is returned. """ if isinstance(dataset, tvtk.Object): d = VTKDataSource() d.data = dataset elif isinstance(dataset, Source): d = dataset else: raise TypeError( "first argument should be either a TVTK object"\ " or a mayavi source") if len(name) > 0: d.name = name if not 'figure' in kwargs: # No figure has been specified, retrieve the default one. gcf() engine = get_engine() elif kwargs['figure'] is False: # Get a null engine that we can use. engine = get_null_engine() elif kwargs['figure'] is not None: figure = kwargs['figure'] engine = engine_manager.find_figure_engine(figure) engine.current_scene = figure else: # Return early, as we don't want to add the source to an engine. return d engine.add_source(d) return d
def add_dataset(dataset, name='', **kwargs): """Add a dataset object to the Mayavi pipeline. **Parameters** :dataset: a tvtk/vtk dataset/tvtk/VTK Algorithm, or a Mayavi source. The dataset added to the Mayavi pipeline :figure: a figure identifier number or string, None or False, optionnal. If no `figure` keyword argument is given, the data is added to the current figure (a new figure if created if necessary). If a `figure` keyword argument is given, it should either the name the number of the figure the dataset should be added to, or None, in which case the data is not added to the pipeline. If figure is False, a null engine is created. This null engine does not create figures, and is mainly usefull for tensting, or using the VTK algorithms without visualization. **Returns** The corresponding Mayavi source is returned. """ if isinstance(dataset, (tvtk.DataSet, vtk.vtkDataSet)): d = VTKDataSource() d.data = tvtk.to_tvtk(dataset) elif isinstance(dataset, (tvtk.DataObject, vtk.vtkDataObject)): d = VTKObjectSource() tp = tvtk.TrivialProducer() tp.set_output(tvtk.to_tvtk(dataset)) d.object = tp elif isinstance(dataset, (tvtk.Object, vtk.vtkObject)): d = VTKObjectSource() d.object = tvtk.to_tvtk(dataset) elif isinstance(dataset, Source): d = dataset else: raise TypeError( "first argument should be either a TVTK object" " or a mayavi source") if len(name) > 0: d.name = name engine = _get_engine_from_kwarg(kwargs) if engine is None: # Return early, as we don't want to add the source to an engine. return d engine.add_source(d) return d
def setUp(self): """Initial setting up of test fixture, automatically called by TestCase before any other test method is invoked""" e = NullEngine() # Uncomment to see visualization for debugging etc. #e = Engine() e.start() s = e.new_scene() self.e = e self.s = s ############################################################ # Create a new scene and set up the visualization. #Make the grid grid = self.make_grid4scatter() e.add_source(grid) eg = ExtractGrid() e.add_filter(eg) nb_ticks = 6 eg.x_ratio = eg.y_ratio = eg.z_ratio = 100 / (nb_ticks - 1) / 2 gpx = GridPlane() e.add_module(gpx) gpx.grid_plane.axis = 'x' gpy = GridPlane() e.add_module(gpy) gpy.grid_plane.axis = 'y' gpz = GridPlane() e.add_module(gpz) gpz.grid_plane.axis = 'z' #Add the scatter d = VTKDataSource() d.data = self.make_scatter() e.add_source(d) if is_old_pipeline(): a = Axes() e.add_module(a) a.axes.number_of_labels = nb_ticks self.eg = eg self.gpx = gpx self.gpy = gpy self.gpz = gpz self.scene = e.current_scene return
def setUp(self): """Initial setting up of test fixture, automatically called by TestCase before any other test method is invoked""" e = NullEngine() # Uncomment to see visualization for debugging etc. #e = Engine() e.start() s=e.new_scene() self.e=e self.s=s ############################################################ # Create a new scene and set up the visualization. #Make the grid grid = self.make_grid4scatter() e.add_source(grid) eg = ExtractGrid() e.add_filter(eg) nb_ticks = 6 eg.x_ratio = eg.y_ratio = eg.z_ratio = 100/(nb_ticks-1)/2 gpx = GridPlane() e.add_module(gpx) gpx.grid_plane.axis = 'x' gpy = GridPlane() e.add_module(gpy) gpy.grid_plane.axis = 'y' gpz = GridPlane() e.add_module(gpz) gpz.grid_plane.axis = 'z' #Add the scatter d = VTKDataSource() d.data = self.make_scatter() e.add_source(d) if is_old_pipeline(): a = Axes() e.add_module(a) a.axes.number_of_labels = nb_ticks self.eg = eg self.gpx = gpx self.gpy = gpy self.gpz = gpz self.scene = e.current_scene return
def make_grid4scatter(self): src = VTKDataSource() xmin, xmax, dx = 100, 200, 2 nx = int((xmax-xmin)/dx)+1 ymin, ymax, dy = 100, 200, 2 ny = int((ymax-ymin)/dy)+1 zmin, zmax, dz = 100, 200, 2 nz = int((zmax-zmin)/dz)+1 image_data = tvtk.ImageData(origin=(xmin, ymin, zmin), spacing=(dx, dy, dz), extent=(0, nx-1, 0, ny-1, 0, nz-1)) src.data = image_data return src
def make_grid4scatter(self): src = VTKDataSource() xmin, xmax, dx = 100, 200, 2 nx = int((xmax-xmin)/dx)+1 ymin, ymax, dy = 100, 200, 2 ny = int((ymax-ymin)/dy)+1 zmin, zmax, dz = 100, 200, 2 nz = int((zmax-zmin)/dz)+1 image_data = tvtk.ImageData(origin=(xmin, ymin, zmin), spacing=(dx, dy, dz), extent=(0, nx-1, 0, ny-1, 0, nz-1)) image_data.whole_extent = image_data.extent src.data = image_data return src
def drawCubeMesh(): from mayavi.sources.vtk_data_source import VTKDataSource from enthought.mayavi.modules.outline import Outline from enthought.mayavi.modules.grid_plane import GridPlane from mayavi.modules.surface import Surface center = [0., 0., 0.] # mlab.points3d(center[0], center[1], center[2]) corners = np.matrix(np.zeros((8, 3))) print corners print corners[0:4, 2] radius = 1. corners[0:4, 2] = center[2] - radius corners[4:, 2] = center[2] + radius corners[::2, 0] = center[0] - radius corners[1::2, 0] = center[0] + radius corners[np.ix_([2,3,6,7],[1])] = center[1] - radius corners[np.ix_([0,1,4,5],[1])] = center[1] + radius print corners # mlab.points3d(corners[:, 0], corners[:, 1], corners[:, 2]) # mlab.show() squares = np.array([[0,1,2,3], [4,5,7,6], [0,1,5,4], [2,3,7,6], [1,3,7,5], [0,2,6,4]]) mesh = tvtk.PolyData(points = np.array(corners, 'f'), polys = squares) ##mesh.point_data.scalar_mul() #mesh.point_data.scalars = self.rgb #mesh.point_data.scalars.name = 'rgb' ##mesh.point_data.scalars = self.intensity ##mesh.point_data.scalars.name = 'Intensity' # #verts = np.arange(0, corners.shape[0], 1) #verts.shape = (corners.shape[0], 1) #mesh.verts = verts # mayavi.new_scene() d = VTKDataSource() d.data = mesh mayavi.add_source(d) s = Surface() mayavi.add_module(s) s.actor.property.set(representation = 'p', point_size = 2)
def Render(self): from mayavi.sources.vtk_data_source import VTKDataSource from enthought.mayavi.modules.outline import Outline from mayavi.modules.surface import Surface #import enthought.mayavi as mayavi # The TVTK dataset. mesh = tvtk.PolyData(points = array(self.xyz, 'f')) #mesh.point_data.scalar_mul() mesh.point_data.scalars = self.rgb mesh.point_data.scalars.name = 'rgb' #mesh.point_data.scalars = self.intensity #mesh.point_data.scalars.name = 'Intensity' verts = np.arange(0, self.xyz.shape[0], 1) verts.shape = (self.xyz.shape[0], 1) mesh.verts = verts mayavi.new_scene() d = VTKDataSource() d.data = mesh mayavi.add_source(d) #mayavi.add_module(Outline()) s = Surface() mayavi.add_module(s) s.actor.property.set(representation = 'p', point_size = 2) # You could also use glyphs to render the points via the Glyph module. dataset = self.Outline() fig = mlab.figure(bgcolor = (1, 1, 1), fgcolor = (0, 0, 0), figure = dataset.class_name[3:]) surf = mlab.pipeline.surface(dataset, opacity=.01) mlab.pipeline.surface(mlab.pipeline.extract_edges(surf), color = (0, 0, 0), ) s = [0.1] center = self.boundingCube.center print center[0] pts = mlab.points3d([center[0]], [center[1]], [center[2]], s, color = (1, 0, 0), ) pts.glyph.glyph.clamping = False
def main(): # Create some random points to view. pd = tvtk.PolyData() pd.points = np.random.random((1000, 3)) verts = np.arange(0, 1000, 1) verts.shape = (1000, 1) pd.verts = verts pd.point_data.scalars = np.random.random(1000) pd.point_data.scalars.name = 'scalars' # Now visualize it using mayavi2. from mayavi.sources.vtk_data_source import VTKDataSource from mayavi.modules.outline import Outline from mayavi.modules.surface import Surface mayavi.new_scene() d = VTKDataSource() d.data = pd mayavi.add_source(d) mayavi.add_module(Outline()) s = Surface() mayavi.add_module(s) s.actor.property.trait_set(representation='p', point_size=2)
def main(): # Create some random points to view. pd = tvtk.PolyData() pd.points = np.random.random((1000, 3)) verts = np.arange(0, 1000, 1) verts.shape = (1000, 1) pd.verts = verts pd.point_data.scalars = np.random.random(1000) pd.point_data.scalars.name = 'scalars' # Now visualize it using mayavi2. from mayavi.sources.vtk_data_source import VTKDataSource from mayavi.modules.outline import Outline from mayavi.modules.surface import Surface mayavi.new_scene() d = VTKDataSource() d.data = pd mayavi.add_source(d) mayavi.add_module(Outline()) s = Surface() mayavi.add_module(s) s.actor.property.set(representation='p', point_size=2)
def add_data(tvtk_data): """Add a TVTK data object `tvtk_data` to the mayavi pipleine. """ d = VTKDataSource() d.data = tvtk_data mayavi.add_source(d)
def add_data(tvtk_data): """Add a TVTK data object `tvtk_data` to the mayavi pipleine. """ d = VTKDataSource() d.data = tvtk_data mayavi.add_source(d)