sample_function(function: ~vtkmodules.vtkCommonDataModel.vtkImplicitFunction, bounds: ~typing.Sequence[float] = (-1.0, 1.0, -1.0, 1.0, -1.0, 1.0), dim: ~typing.Sequence[int] = (50, 50, 50), compute_normals: bool = False, output_type: ~numpy.dtype = <class 'numpy.float64'>, capping: bool = False, cap_value: float = 1.7976931348623157e+308, scalar_arr_name: str = 'scalars', normal_arr_name: str = 'normals', progress_bar: bool = False)[source]#

Sample an implicit function over a structured point set.

Uses vtk.vtkSampleFunction

This method evaluates an implicit function and normals at each point in a vtk.vtkStructuredPoints. The user can specify the sample dimensions and location in space to perform the sampling.

To create closed surfaces (in conjunction with the vtkContourFilter), capping can be turned on to set a particular value on the boundaries of the sample space.


Implicit function to evaluate. For example, the function generated from perlin_noise().

boundssequence[float], default: (-1.0, 1.0, -1.0, 1.0, -1.0, 1.0)

Specify the bounds in the format of:

  • (xmin, xmax, ymin, ymax, zmin, zmax).

dimsequence[float], default: (50, 50, 50)

Dimensions of the data on which to sample in the format of (xdim, ydim, zdim).

compute_normalsbool, default: False

Enable or disable the computation of normals.

output_typenumpy.dtype, default: numpy.double

Set the output scalar type. One of the following:

  • np.float64

  • np.float32

  • np.int64

  • np.uint64

  • np.int32

  • np.uint32

  • np.int16

  • np.uint16

  • np.int8

  • np.uint8

cappingbool, default: False

Enable or disable capping. If capping is enabled, then the outer boundaries of the structured point set are set to cap value. This can be used to ensure surfaces are closed.

cap_valuefloat, default: sys.float_info.max

Capping value used with the capping parameter.

scalar_arr_namestr, default: “scalars”

Set the scalar array name for this data set.

normal_arr_namestr, default: “normals”

Set the normal array name for this data set.

progress_barbool, default: False

Display a progress bar to indicate progress.


Uniform grid with sampled data.


Sample Perlin noise over a structured grid in 3D.

>>> import pyvista as pv
>>> noise = pv.perlin_noise(0.1, (1, 1, 1), (0, 0, 0))
>>> grid = pv.sample_function(
...     noise, [0, 3.0, -0, 1.0, 0, 1.0], dim=(60, 20, 20)
... )
>>> grid.plot(
...     cmap='gist_earth_r', show_scalar_bar=False, show_edges=True
... )

Sample Perlin noise in 2D and plot it.

>>> noise = pv.perlin_noise(0.1, (5, 5, 5), (0, 0, 0))
>>> surf = pv.sample_function(noise, dim=(200, 200, 1))
>>> surf.plot()

See Sample Function: Perlin Noise in 2D for a full example using this function.