# logo

A scientific visualisation tool with a python interface for fast and flexible visual analysis.


LavaVu development is supported by the Monash Immersive Visualisation Plaform and the Simulation, Analysis & Modelling component of the NCRIS AuScope capability.

https://travis-ci.org/lavavu/LavaVu.svg?branch=master https://zenodo.org/badge/DOI/10.5281/zenodo.2585377.svg


The acronym stands for: Lightweight, Automatable Visualisation and Analysis Viewing Utility, but “lava” is also a reference to its origins as a viewer for geophysical simulations. It’s also unique enough to find the repository with google.

The project started in the gLucifer 1 framework for visualising geodynamics simulations. The OpenGL visualisation module was separated from the simulation and sampling libraries and became a more general purpose visualisation tool. gLucifer continues as a set of sampling tools for Underworld simulations as part of the Underworld2 code. LavaVu provides the rendering library for creating 2d and 3d visualisations to view this sampled data, inline within interactive IPython notebooks and offline through saved visualisation databases and images/movies.

As a standalone tool it is a scriptable 3D visualisation tool capable of producing publication quality high res images and video output from time varying data sets along with HTML5 3D visualisations in WebGL. Rendering features include correctly and efficiently rendering large numbers of opaque and transparent points and surfaces and volume rendering by GPU ray-marching. There are also features for drawing vector fields and tracers (streamlines).

Control is via python and a set of simple verbose scripting commands along with mouse/keyboard interaction. GUI components can be generated for use from a web browser via the python “control” module and a built in web server.

A native data format called GLDB is used to store and visualisations in a compact single file, using SQLite for storage and fast loading. A small number of other data formats are supported for import (OBJ surfaces, TIFF stacks etc). Further data import formats are supported with python scripts, with the numpy interface allowing rapid loading and manipulation of data.

A CAVE2 virtual reality mode is provided by utilising Omegalib (http://github.com/uic-evl/omegalib) to allow use in Virtual Reality and Immersive Visualisation facilities, such as the CAVE2 at Monash, see (https://github.com/mivp/LavaVR). Side-by-side and quad buffer stereoscopic 3D support is also provided for other 3D displays.

How do I get started?

See LavaVu Installation

Then to get started with the python API LavaVu: python API quickstart guide

The core of LavaVu is an OpenGL powered rendering engine written in C++, this library is accessible via the python API with interactive output in Jupyter notebooks or as a standalone application

Some of the documentation applies primarily to the standalone viewer application, but much of the content is still applicable when using via the python API.

Most important for both use cases is the Properties reference, these are values that can be changed globally or per object to modify the rendering parameters.

The Scripting Commands reference also still applies to the python API, but it has many more commands available through python functions that are not available to the standalone Viewer.

In python : all the properties available on the Viewer and Objects can be set in python using a dictionary style interface:

lv = lavavu.Viewer()
lv["background"] = "grey"

pts = lv.points()
pts["pointsize"] = 10

All the scripting commands can be run by calling them as functions on the Viewer object:

lv.rotate('x', 45)

For more information on the python and IPython interface, see

For more information on using the standalone viewer, see

Who do I talk to?

Included libraries

In order to avoid as many external dependencies as possible, the LavaVu sources include files from the following public domain or open source libraries, many thanks to the authors for making their code available!