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

ensure_import / AUTODEPS(or pip install xyzrender)

ASE

Space-filling

Fast

Built-in, no extra deps

Built-in

solvis

Ball-and-stick

Medium

Transparent bg, PyVista 3D

pip install solvis-tools

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

default

Standard CPK radii

paton

Publication-style, smaller atoms (used by rgpycrumbs)

flat

Flat 2D style

bubble

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 --rotation directly)

  • 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

--rotation "auto"

xyzrender auto-orients; others use side view

--rotation "Xx,Yy,Zz"

Manual rotation for all backends

--perspective-tilt N

Rodrigues off-axis tilt (degrees)

--strip-spacing N

Horizontal gap between images

--strip-dividers

Vertical separator lines

--xyzrender-config NAME

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