Depth Peeling#

Depth peeling is a technique to correctly render translucent geometry. This is not enabled by default in pyvista.global_theme as some operating systems and versions of VTK have issues with this routine.

For this example, we will showcase the difference that depth peeling provides.

import pyvista as pv
from pyvista import examples
centers = [(0, 0, 0), (1, 0, 0), (-1, 0, 0), (0, 1, 0), (0, -1, 0)]
radii = [1, 0.5, 0.5, 0.5, 0.5]

spheres = pv.MultiBlock()
for i, c in enumerate(centers):
    spheres.append(pv.Sphere(center=c, radius=radii[i]))
dargs = dict(opacity=0.5, color="red", smooth_shading=True)

p = pv.Plotter(shape=(1, 2))

p.add_mesh(spheres, **dargs)
p.enable_depth_peeling(10)
p.add_text("Depth Peeling")

p.subplot(0, 1)
p.add_text("Standard")
p.add_mesh(spheres.copy(), **dargs)

p.link_views()
p.camera_position = [(11.7, 4.7, -4.33), (0.0, 0.0, 0.0), (0.3, 0.07, 0.9)]
p.show()
depth peeling

The following room surfaces example mesh, provided courtesy of Sam Potter has coincident topology and depth rendering helps correctly render those geometries when a global opacity value is used.

room = examples.download_room_surface_mesh()

p = pv.Plotter(shape=(1, 2))

p.enable_depth_peeling(number_of_peels=4, occlusion_ratio=0)
p.add_mesh(room, opacity=0.5, color='lightblue')
p.add_text("Depth Peeling")

p.subplot(0, 1)
p.add_text("Standard")
p.add_mesh(room.copy(), opacity=0.5, color='lightblue')

p.link_views()
p.camera_position = [(43.6, 49.5, 19.8), (0.0, 2.25, 0.0), (-0.57, 0.70, -0.42)]

p.show()
depth peeling

And here is another example wheen rendering many translucent contour surfaces.

mesh = examples.download_brain().contour(5)
cmap = "viridis_r"

p = pv.Plotter(shape=(1, 2))

p.add_mesh(mesh, opacity=0.5, cmap=cmap)
p.enable_depth_peeling(10)
p.add_text("Depth Peeling")

p.subplot(0, 1)
p.add_text("Standard")
p.add_mesh(mesh.copy(), opacity=0.5, cmap=cmap)

p.link_views()
p.camera_position = [(418.3, 659.0, 53.8), (90.2, 111.5, 90.0), (0.03, 0.05, 1.0)]
p.show()
depth peeling

Total running time of the script: (0 minutes 36.855 seconds)

Gallery generated by Sphinx-Gallery