Rendering Backends Guide¶
This guide covers the four structure rendering backends and their unique features. Each backend has different strengths.
Quick Comparison¶
Backend |
Style |
Speed |
Features |
Install |
|---|---|---|---|---|
xyzrender |
Ball-and-stick |
Fast |
Auto-orient, TS bonds, NCI, VdW |
|
ASE |
Space-filling |
Fast |
Built-in, no extra deps |
Built-in |
solvis |
Ball-and-stick |
Medium |
Transparent bg, PyVista 3D |
|
ovito |
Configurable |
Slow |
Full MD viz, modifiers |
conda-forge / separate heavy install |
xyzrender¶
The default backend. Structure strips call the xyzrender
**Python API** (xyzrender.render) with the paton preset. The package is
staged via ensure_import("xyzrender") when RGPYCRUMBS_AUTO_DEPS=1 (library
plot entry points enable that by default). You do not need a xyzrender
binary on PATH for rgpycrumbs eon plt-* / plot_neb.
Auto-orientation¶
By default, xyzrender auto-orients each structure using PCA to find
the best viewing angle. This is usually good for small molecules.
Override with --rotation "45x,30y,0z" for manual control.
Transition State Bonds¶
xyzrender can highlight forming/breaking bonds at transition states:
# Auto-detect TS bonds (dashed lines for partially formed bonds)
rgpycrumbs eon plt-neb ... --strip-renderer xyzrender
The --ts flag in xyzrender auto-detects bonds being formed or broken
using graphRC analysis. This is built into the paton preset.
Bond Orders and NCI¶
xyzrender supports bond order display and non-covalent interaction detection:
# Advanced one-off renders: optional CLI (same package as the Python API)
xyzrender structure.xyz -o output.png --config paton --hy --bo --nci
For strips inside plt-neb / plot_neb, only --strip-renderer /
--xyzrender-config (or TOML) matter; deps resolve lazily.
VdW Spheres¶
Show van der Waals radii as translucent spheres:
xyzrender structure.xyz -o output.png --vdw --vdw-opacity 0.3
Presets¶
Preset |
Description |
|---|---|
|
Standard CPK radii |
|
Publication-style, smaller atoms (used by rgpycrumbs) |
|
Flat 2D style |
|
Large translucent spheres |
ASE¶
The ASE backend uses ase.io.write(format="png") for space-filling
sphere rendering. No bonds are drawn.
When to Use ASE¶
No extra dependencies needed
Good for periodic systems where bonds are ambiguous
Fast rendering for large systems
Limitations¶
No bond rendering
No auto-orientation (uses
--rotationdirectly)All atoms same style (no ball-and-stick option)
solvis¶
The solvis backend uses PyVista for 3D rendering with transparent backgrounds.
Ball-and-Stick with Bonds¶
solvis renders atoms as spheres and bonds as cylinders. Bonds are detected using ASE’s neighbor list with natural cutoffs.
Transparent Background¶
solvis renders with RGBA transparent backgrounds, so structures blend seamlessly into plots without white rectangles.
When to Use solvis¶
When you need transparent backgrounds for overlaying on colored plots
When you want 3D depth effects (shadows, lighting)
For PyVista-based workflows
ovito¶
The OVITO Python backend provides off-screen rendering with orthographic projection.
When to Use ovito¶
For crystalline systems where OVITO modifiers are useful
When you need OVITO’s bond computation
For consistency with OVITO Desktop visualizations
Limitations¶
Large dependency (~2-3 GB)
No auto-orientation (uses pre-rotation like ASE/solvis)
Requires OpenGL (headless via osmesa)
Unified Controls¶
All backends share these controls:
Flag |
Effect |
|---|---|
|
xyzrender auto-orients; others use side view |
|
Manual rotation for all backends |
|
Rodrigues off-axis tilt (degrees) |
|
Horizontal gap between images |
|
Vertical separator lines |
|
xyzrender preset when that backend is active |
All three eOn plotting CLIs (plt-neb, plt-min, and plt-saddle) now use
the same renderer-option bundle, so these controls behave consistently across
NEB, minimization, and saddle-search figure generation.
See Also¶
Goswami, “Two-dimensional RMSD projections for reaction path visualization and validation,” MethodsX, p. 103851, Mar. 2026, doi:10.1016/j.mex.2026.103851
xyzrender – ball-and-stick molecular renderer
ASE – Atomic Simulation Environment
solvis – PyVista molecular visualization
OVITO Python – scientific visualization and analysis