Пример #1
0
 def add_to_pdata(self, array, name):
     if len(array.shape) > 3:
         vtk_order = quick_convert_rgba_to_vtk(array)
         flat_shape = (np.prod(vtk_order.shape[:3]), vtk_order.shape[3])
     else:
         vtk_order = array
         flat_shape = (np.prod(vtk_order.shape),)
     self.db[name] = vtk_order.shape
     arr = self.pd.get_array(name)
     if arr is None:
         n = self.pd.add_array(vtk_order.reshape(flat_shape))
         self.pd.get_array(n).name = name
     else:
         arr.from_array(vtk_order.reshape(flat_shape))
Пример #2
0
    def _change_primary_scalars(self, arr, name):
        """

        Parameters
        ----------

        arr: ndarray, shape (Nx, Ny, Nz, 4)
           If this is going in as primary scalars, it is definitely an RGBA
           vector array provided by a BlendedImages. Therefore is needs to
           be reshaped to C-order (Nz, Ny, Nx, 4)

        name: str
           array label
        """
        pd = self.data.point_data
        if pd.scalars is not None \
               and pd.scalars.size != arr.size:
            #self.flush_arrays(update=False)
            self.safe_remove_arrays()
        rgba = quick_convert_rgba_to_vtk(arr)
        xyz_shape = rgba.shape[:3]
        flat_shape = (np.prod(xyz_shape), 4)
        dataset = self.data


        # set the ImageData metadata
        dataset.origin = self.blender.img_origin
        dataset.spacing = self.blender.img_spacing
        dataset.dimensions = xyz_shape[::-1]
        dataset.extent = 0, xyz_shape[2]-1, 0, xyz_shape[1]-1, 0, xyz_shape[0]-1
        dataset.update_extent = dataset.extent

        dataset.number_of_scalar_components = 4
        dataset.scalar_type = get_vtk_array_type(arr.dtype)

        # set the scalars and name
        self.set_new_array(rgba, name, update=False)
##         pd.scalars = rgba.reshape(flat_shape)
##         pd.scalars.name = name

        dataset.update()
        dataset.update_traits()
        self._check_aa()
        self._update_data()
        self._push_changes()
        self.point_scalars_name = name