PyVista3DViewer

Aliases:

  • petres.viewers.Viewer3D


class petres.viewers.PyVista3DViewer[source]

Bases: Base3DViewer

Render and manage 3D geoscience scenes using PyVista.

This viewer configures a PyVista plotter with a scene theme and camera, and provides helpers to add domain objects such as corner-point grids, zones, and horizons.

Parameters:
  • plotter (pyvista.Plotter or None, default=None) – Existing PyVista plotter to use. If None, a new plotter is created.

  • theme (PyVista3DViewerTheme or None, default=None) – Visual scene configuration. If None, a default theme is used.

  • camera (Camera3D or None, default=None) – Camera configuration. If None, an isometric default camera setup is used.

  • title (str, default="Petres 3D Viewer") – Optional title text shown in the viewer window.

Initialize viewer state with plotter, theme, and camera defaults.

Raises:

AssertionError – If resolved plotter, theme, or camera has an invalid type.

theme: PyVista3DViewerTheme
camera: Camera3D
plotter: Plotter
__init__(plotter=None, theme=None, camera=None, title='Petres 3D Viewer')[source]

Initialize viewer state with plotter, theme, and camera defaults.

Raises:

AssertionError – If resolved plotter, theme, or camera has an invalid type.

set_plotter(plotter)[source]

Assign the underlying PyVista plotter.

Parameters:

plotter (pyvista.Plotter) – Plotter instance used for all rendering operations.

Raises:

AssertionError – If plotter is not a pyvista.Plotter instance.

set_theme(theme)[source]

Assign the active scene theme.

Parameters:

theme (PyVista3DViewerTheme) – Theme containing background, axes, and title display settings.

Raises:

AssertionError – If theme is not a PyVista3DViewerTheme instance.

set_camera(camera)[source]

Assign the active camera configuration.

Parameters:

camera (Camera3D) – Camera preset and relative view adjustments used for rendering.

Raises:

AssertionError – If camera is not a Camera3D instance.

apply_theme(theme)[source]

Apply scene styling options to the active plotter.

Parameters:

theme (PyVista3DViewerTheme) – Theme values controlling background color and axes visibility.

reset_camera()[source]

Reset camera position and clipping range to defaults.

show(*, title=None)[source]

Render the current scene and open the interactive viewer window.

Parameters:

title (str or None, default=None) – Optional scene title text displayed at the configured theme position.

add_grid(grid, *, show_inactive=False, color=None, scalars=None, cmap=None, **kwargs)[source]

Add a supported grid to the current 3D scene.

Parameters:
  • grid (CornerPointGrid) – Grid object to visualize.

  • show_inactive (bool, default=False) – If True, include inactive cells in the rendered geometry.

  • color (Any, default=None) – Optional fixed color override for the grid mesh.

  • scalars (numpy.ndarray or None, default=None) – Optional scalar values for per-cell or per-point colormapping.

  • cmap (str or None, default=None) – Matplotlib-compatible colormap name used when scalars is provided.

  • **kwargs (Any) – Additional keyword arguments forwarded to the grid layer renderer.

Returns:

The current viewer instance for fluent chaining.

Return type:

PyVista3DViewer

Raises:

TypeError – If grid is not a supported grid type.

add_pillars(pillars, *, color='black', line_width=2.5, **kwargs)[source]

Add a pillar grid to the current 3D scene.

Parameters:
  • pillars (PillarGrid) – Pillar grid model to render.

  • color (Any, default="black") – Color used for the pillar lines and direction arrows.

  • line_width (float, default=2.5) – Width used when rendering the pillar line.

  • **kwargs (Any) – Additional keyword arguments forwarded to the pillar layer renderer.

Returns:

The current viewer instance for fluent chaining.

Return type:

PyVista3DViewer

add_wells(wells, *, label_font_size=15, label_color='red', line_color='red', line_width=2.0, **kwargs)[source]
apply_camera(cam)[source]

Apply a camera preset and relative camera adjustments.

Parameters:

cam (Camera3D) – Camera configuration containing a view preset and optional turn, tilt, roll, zoom, and depth orientation adjustments.

Raises:

ValueError – If cam.view is not a recognized view preset.

add_zones(zones, *, x=None, y=None, xlim=None, ylim=None, ni=None, nj=None, dx=None, dy=None, show_layers=True, cmap='gist_rainbow', **kwargs)[source]

Add multiple zones to the scene using a discrete colormap.

Parameters:
  • zones (Sequence[Zone]) – Zone models to render.

  • x (numpy.ndarray or None, default=None) – X-vertex coordinates. If None, computed from grid arguments.

  • y (numpy.ndarray or None, default=None) – Y-vertex coordinates. If None, computed from grid arguments.

  • xlim (tuple[float, float] or None, default=None) – X-axis bounds used when generating vertices.

  • ylim (tuple[float, float] or None, default=None) – Y-axis bounds used when generating vertices.

  • ni (int or None, default=None) – Number of cells along X used for vertex generation.

  • nj (int or None, default=None) – Number of cells along Y used for vertex generation.

  • dx (float or None, default=None) – Cell size along X used for vertex generation.

  • dy (float or None, default=None) – Cell size along Y used for vertex generation.

  • show_layers (bool, default=True) – Whether to render individual layers within each zone.

  • cmap (str, default="gist_rainbow") – Colormap name used to assign a distinct color per zone.

  • **kwargs (Any) – Additional keyword arguments forwarded to zone rendering.

Returns:

The current viewer instance for fluent chaining.

Return type:

PyVista3DViewer

add_zone(zone, *, x=None, y=None, xlim=None, ylim=None, ni=None, nj=None, dx=None, dy=None, color=None, show_layers=True, **kwargs)[source]

Add a single zone to the scene.

Parameters:
  • zone (Zone) – Zone model to render.

  • x (numpy.ndarray or None, default=None) – X-vertex coordinates. If None, computed from grid arguments.

  • y (numpy.ndarray or None, default=None) – Y-vertex coordinates. If None, computed from grid arguments.

  • xlim (tuple[float, float] or None, default=None) – X-axis bounds used when generating vertices.

  • ylim (tuple[float, float] or None, default=None) – Y-axis bounds used when generating vertices.

  • ni (int or None, default=None) – Number of cells along X used for vertex generation.

  • nj (int or None, default=None) – Number of cells along Y used for vertex generation.

  • dx (float or None, default=None) – Cell size along X used for vertex generation.

  • dy (float or None, default=None) – Cell size along Y used for vertex generation.

  • color (Any or None, default=None) – Optional color override, converted to RGB when provided.

  • show_layers (bool, default=True) – Whether to render individual zone layers.

  • **kwargs (Any) – Additional keyword arguments forwarded to zone rendering.

Returns:

The current viewer instance for fluent chaining.

Return type:

PyVista3DViewer

add_horizon(horizon, *, x=None, y=None, xlim=None, ylim=None, ni=None, nj=None, dx=None, dy=None, color=None, scalars=True, cmap=None, **kwargs)[source]

Add a single horizon surface to the scene.

Parameters:
  • horizon (Horizon) – Horizon model used to compute a depth surface.

  • x (numpy.ndarray or None, default=None) – X-vertex coordinates. If None, computed from grid arguments.

  • y (numpy.ndarray or None, default=None) – Y-vertex coordinates. If None, computed from grid arguments.

  • xlim (tuple[float, float] or None, default=None) – X-axis bounds used when generating vertices.

  • ylim (tuple[float, float] or None, default=None) – Y-axis bounds used when generating vertices.

  • ni (int or None, default=None) – Number of cells along X used for vertex generation.

  • nj (int or None, default=None) – Number of cells along Y used for vertex generation.

  • dx (float or None, default=None) – Cell size along X used for vertex generation.

  • dy (float or None, default=None) – Cell size along Y used for vertex generation.

  • color (Any or None, default=None) – Optional fixed surface color.

  • scalars (bool, default=True) – If True, scalar-based coloring is enabled for the surface.

  • cmap (str or None, default=None) – Colormap name used when scalar coloring is enabled.

  • **kwargs (Any) – Additional keyword arguments forwarded to surface rendering.

Returns:

The current viewer instance for fluent chaining.

Return type:

PyVista3DViewer

add_horizons(horizons, *, x=None, y=None, xlim=None, ylim=None, ni=None, nj=None, dx=None, dy=None, cmap='turbo', **kwargs)[source]

Add multiple horizons to the scene with distinct colors.

Parameters:
  • horizons (Sequence[Horizon]) – Horizon models to render.

  • x (numpy.ndarray or None, default=None) – X-vertex coordinates. If None, computed from grid arguments.

  • y (numpy.ndarray or None, default=None) – Y-vertex coordinates. If None, computed from grid arguments.

  • xlim (tuple[float, float] or None, default=None) – X-axis bounds used when generating vertices.

  • ylim (tuple[float, float] or None, default=None) – Y-axis bounds used when generating vertices.

  • ni (int or None, default=None) – Number of cells along X used for vertex generation.

  • nj (int or None, default=None) – Number of cells along Y used for vertex generation.

  • dx (float or None, default=None) – Cell size along X used for vertex generation.

  • dy (float or None, default=None) – Cell size along Y used for vertex generation.

  • cmap (str, default="turbo") – Colormap name used to assign a distinct color per horizon.

  • **kwargs (Any) – Additional keyword arguments forwarded to horizon rendering.

Returns:

The current viewer instance for fluent chaining.

Return type:

PyVista3DViewer