# User-defined viewport layers

OVITO provides a collection of viewport overlays, which are a powerful way to enhance the visual interpretation of your data by adding custom annotations, labels, diagrams, or graphics on top of the rendered 3d view. If you have specific requirements for visualizing your data that are not covered by the built-in overlay options, you can create your own custom viewport overlays using OVITO’s Python programming interface.

To develop custom viewport overlays, the API offers the `ViewportOverlayInterface` abstract class. This interface serves as a foundation for creating overlays that can be added to 3d viewports in OVITO. Creating a custom viewport overlay involves defining a new Python class that inherits from the `ViewportOverlayInterface` class. This class will encapsulate the logic for rendering the overlay graphics and can define adjustable parameters through which a user can control the overlay.

## Code examples

- Example O1: Scale bar

- Example O2: Add a data plot to rendered images

- Example O3: Highlight a particle

See also

- `ovito.vis.ViewportOverlayInterface`

- Packaging and installation of user extensions for OVITO