.. lavavu documentation master file
.. figure:: images/LavaVu.png
:alt: # logo
A lightweight scientific visualisation tool with a python interface for fast and flexible visual analysis.
LavaVu provides access to OpenGL powered 3D rendering of point, line, surface and volume data with minimal setup and an interface focused on simple mapping of values to visual properties while abstracting all the intricacies of OpenGL.
.. figure:: images/examples.png
:alt: examplevis
LavaVu development is supported by `ACCESS-NRI `__.
Prior development was funded by the Monash Immersive Visualisation Plaform at `Monash eResearch `__ and the Simulation, Analysis & Modelling component of the `NCRIS
AuScope `__ capability.
.. toctree::
:hidden:
:maxdepth: 3
Installation
Python Tutorials
Property Reference
Scripting Commands Reference
API Reference: lavavu
API Reference: control
API Reference: convert
API Reference: points
API Reference: tracers
Interaction with keyboard/mouse
Running from command Line
Setting Properties
GLDB File Format
LavaVu Github
LavaVu Wiki
LavaVu Issue Tracker
.. image:: https://github.com/lavavu/LavaVu/workflows/Test/badge.svg
:target: https://github.com/lavavu/LavaVu/actions?query=workflow:Test
.. image:: https://github.com/lavavu/LavaVu/workflows/Deploy/badge.svg?branch=1.7.3
:target: https://github.com/lavavu/LavaVu/actions?query=workflow:Deploy
.. image:: https://zenodo.org/badge/DOI/10.5281/zenodo.2585377.svg
:target: https://doi.org/10.5281/zenodo.2585377
Introduction
~~~~~~~~~~~~
Originally a set of tools for visualising geodynamics simulations on HPC facilities without GPU access (in the gLucifer [#]_ framework, part of the `Underworld2 `__ geodynamics simulation code).
LavaVu is now a separate library and general purpose visualisation tool..
LavaVu provides the rendering library for creating 2d and 3d
visualisations to view this sampled data, inline within interactive
Jupyter 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.
Widgets for interactive use in the Jupyter notebook environment allow
use for remote visualisation, eg: on supercomputing environments.
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.
How do I get started?
~~~~~~~~~~~~~~~~~~~~~
See :doc:`Installation`
Then to get started with the python API :doc:`tutorials/QuickStart`
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 :doc:`Properties reference `, these are values that can be changed globally or per object to modify the rendering parameters.
The :doc:`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)
lv.export()
For more information on the python and IPython interface, see
- :doc:`Tutorials/`
- :doc:`LavaVu Python API Reference `
For more information on using the standalone viewer, see
- :doc:`Interaction with keyboard/mouse `
- :doc:`Running from command Line `
- :doc:`Setting Properties `
Who do I talk to?
~~~~~~~~~~~~~~~~~
- Report bugs or request help on the github issue tracker:
https://github.com/lavavu/LavaVu/issues
- Contact developers: Owen Kaluza (at) anu.edu.au
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!
- SQLite3 https://www.sqlite.org
- JSON for Modern C++ https://github.com/nlohmann/json
- Tiny OBJ Loader https://github.com/syoyo/tinyobjloader
- LodePNG https://github.com/lvandeve/lodepng
- jpeg-compressor https://github.com/richgel999/jpeg-compressor
- miniz https://github.com/richgel999/miniz
- GPU Cubic B-Spline Interpolation (optional) in volume shader http://www.dannyruijters.nl/cubicinterpolation/ [#]_
Citation
~~~~~~~~
If you use LavaVu in any published work we would appreciate a citation of the code using the zenodo DOI. There is a master DOI for all releases and releases after 1.3.2 are automatically given a DOI under the master.
.. image:: https://zenodo.org/badge/DOI/10.5281/zenodo.2585376.svg
:target: https://doi.org/10.5281/zenodo.2585376
--------------
.. [#] `Stegman, D.R., Moresi, L., Turnbull, R., Giordani, J., Sunter, P.,
Lo, A. and S. Quenette, gLucifer: Next Generation Visualization
Framework for High performance computational geodynamics, 2008, Visual
Geosciences `__
.. [#] `Ruijters, Daniel & ter Haar Romeny, Bart & Suetens, Paul. (2008).
Efficient GPU-Based Texture Interpolation using Uniform B-Splines. J.
Graphics Tools. 13.
61-69. `__