What’s new

Version 3.8.4 (03-May-23)

  • Fix: ffmpeg video encoding crashes on Windows if output path contains non-ascii characters

  • Silence console message “Numeric mode unsupported in the posix collation implementation” on Linux by enabling ICU support in Qt build

  • pro Fix: Segfault in PySide6 package initialization on Linux when adding a Python layer to a viewport

  • pro Fix: Interchanged xz/yz simulation box shear components in lammps_to_ovito() Python function

Version 3.8.3 (16-Apr-23)

  • Further improved performance of sequential loading of compressed trajectory files

  • Fixed regression (since v3.8.0): Viewport.render_anim() renders only first animation frame

  • pro Python exceptions raised in user-defined modifier functions are now propagated up the call chain to where the pipeline evaluation was triggered

  • pro Included bz2 and sqlite3 standard modules, which were missing in embedded Python interpreter on Linux

Version 3.8.2 (04-Apr-23)

  • Implemented fast access to trajectory frames in compressed (gzipped) files

  • Fix: Segfault when using zoom function in viewport with an attached camera object

  • Fix: Segfault in Coordination polyhedra modifier on Linux

  • Fix: Function ‘load/save session state’ does not follow global working directory

Version 3.8.1 (27-Mar-23)

Identification of volumetric regions using the Gaussian density method pro

The Construct surface mesh modifier’s implementation of the Gaussian density method has been extended to support the identification of volumetric regions, e.g. pores, cavities, and filled spatial regions. Their respective surface areas and volumes are calculated and output by the modifier in tabulated form.

To make this possible, we have developed an extension to the Marching Cubes algorithm for isosurface construction, which provides the capability to identify disconnected spatial regions separated by the surface mesh and compute their enclosed volumes – of course with full support for periodic boundary conditions.

_images/surface_mesh_regions_gaussian_density_example.png _images/construct_surface_mesh_regions_example_table.jpg

New efficient Python method for computing neighbor lists pro

OVITO’s Python interface now offers the new CutoffNeighborFinder.find_all() method for vectorized computation of neighbor lists for many or all particles at once.

Further changes:

  • LAMMPS data file reader: Accept ‘#’ in type names, which are referenced in data sections of the file

Version 3.8.0 (03-Mar-23)

Develop custom modifiers with extended capabilities pro

A newly devised programming interface enables you to write advanced modifier functions in Python that

  • access more than one frame of a simulation trajectory,

  • perform computations that involve data from several input files, or

  • need control over the caching of computational results.

Take simulation post-processing to the next level! Develop your own trajectory analysis algorithms in Python, which are fully integrated into OVITO’s pipeline system and the interactive interface of OVITO Pro.

class CalculateIncrementalDisplacementsModifier(ModifierInterface):
    def modify(self, data, frame, input_slots, **kwargs):
        next_frame = input_slots['upstream'].compute(frame + 1)
        displacements = next_frame.particles.positions - data.particles.positions

Have a look at our completely revised introduction to user-defined modifiers and check out the new advanced programming interface for user-defined modifiers.

Improved color legends

OVITO can now render tick marks in color mapping legends to label intermediate values. Furthermore, the legend’s title may be rotated by 90 degrees:

_images/color_legend_ticks_horizontal.png _images/color_legend_ticks_vertical.png

File reader for ASE database files pro

Load atomic structures from database files of the Atomic Simulation Environment (ASE) into OVITO. The new file reader lets you scroll through all structures in a database or pick specific structures using a query string. Metadata associated with structures is made available in OVITO as global attributes.


New modifier: Identify fcc planar faults pro

Easily identify different planar defect types, such as stacking faults and coherent twin boundaries, in face-centered cubic (fcc) crystals. We have developed a powerful classification algorithm for hcp-like atoms that make up such planar defects:


New modifier: Render LAMMPS regions pro

Use this new tool to generate mesh-based representations of the parametric regions defined in your LAMMPS simulation, e.g., cylinders, spheres, or blocks, and visualize the boundaries of these spatial regions along with the particle model:


Spatial binning modifier: New unity input option pro

This options offers a shortcut for calculating particle density distributions, i.e. counting the particles per grid cell. Previous versions required first defining an auxiliary particle property with a uniform value of 1 to calculate the number density:


See Spatial binning modifier.

Support for LAMMPS dump grid files

OVITO can now read and visualize the new volumetric grid file format written by recent LAMMPS versions thanks to the newly added LAMMPS dump grid file reader:


Slice modifier on voxel grids

When you apply the Slice modifier to a voxel grid, cell values now get copied to the mesh faces and interpolated field values to the mesh vertices of the generated cross-section. This enables both discrete and interpolated visualizations of the field values along arbitrary planar cross-sections:

_images/volumetric_grid_slice_discrete.png _images/volumetric_grid_slice_interpolated.png

See Slice modifier and Voxel grids.

Support for point-based volumetric grids

In addition to the classical cell-based voxel grids, OVITO now also supports point-based volumetric grids, in which field values are associated with the grid points instead of the voxel cells. All functions in OVITO that operate on grids, e.g. the Create isosurface modifier, also support periodic and mixed boundary conditions.


See ovito.data.VoxelGrid.grid_type and Gaussian Cube file reader.

Load Trajectory modifier now supports removal of particles

Previously, the Load trajectory modifier required the trajectory file to contain coordinates for all particles that were initially present in the topology dataset. The improved version of the modifier can now deal with particles disappearing in later frames of a trajectory, e.g., when particles get removed from the simulation over time.

Further additions and changes in this program release:

  • Added dark mode UI support for Linux platform.

  • Spatial correlation function modifier: Added support for 2d simulations.

  • Wrap at periodic boundaries modifier: Added support for 2d simulations.

  • Save and restore maximized state of main window across program sessions.

  • LAMMPS data file reader & writer: Added support for extended Velocities file section for when using LAMMPS atom styles electron, ellipsoid, or sphere.

  • LAMMPS data file writer: Added the option to renumber all particle/bond/angle/dihedral/improper types during export. Avoids conversion problems from 0-based type IDs loaded from GSD files.

  • New option to clip surfaces at open box boundaries (see SurfaceMeshVis.clip_at_domain_boundaries).

  • Cluster analysis modifier: Abort calculation of center of mass and radius of gyration if masses of all input particles are zero.

  • pro Added user option that makes OVITO Pro import multiple files of the same kind as separate objects into the scene.

  • pro Accept os.PathLike objects in Python functions import_file() and export_file().

  • pro PropertyContainer.create_property: Accept data values that are broadcastable to shape of property array.

Previous versions

For a list of changes in previous version of OVITO, go to https://www.ovito.org/about/version-history/.