lavavu module¶
LavaVu python interface: viewer utils & wrapper
This module provides an interface to the LavaVu library allowing loading of data, rendering of static images, animation and interactive visualisation
To create an instance of the LavaVu rendering engine, use the Viewer() class, e.g.
>>> import lavavu
>>> lv = lavavu.Viewer()
See the lavavu.Viewer
class documentation for more information.
Module Summary¶
functions:¶
Download a file from an internet URL |
|
Generate a 2d grid of vertices |
|
Generate a 2d grid of vertices in 3d space |
|
Create CubeHelix spectrum colourmap with monotonically increasing/descreasing intensity |
|
Create a colourmap from a CPT colour table file |
|
Import a colourmap from a matplotlib |
|
Print info about HDF5 data set (requires h5py) |
|
Linear Interpolation between values of two lists |
|
Shows a video inline within an ipython notebook. |
|
Inject HTML into a notebook cell |
|
Allow toggle of code cells |
|
Inject stylesheet |
|
Override the notebook cell styles |
|
Override the notebook cell width |
|
Detects if running within IPython environment |
|
Detects if running within an interactive IPython notebook environment |
|
Attempt to find the name of a variable from the main module namespace |
classes:¶
The Viewer class provides an interface to a LavaVu session |
|
The Object class provides an interface to a LavaVu drawing object Object instances are created internally in the Viewer class and can be retrieved from the object list |
|
The Properties class provides an interface to a collection of properties with a control factory, allowing controls to be created to manipulate their values interactively Properties can be passed in when created or set by using as a dictionary: |
|
The ColourMap class provides an interface to a LavaVu ColourMap ColourMap instances are created internally in the Viewer class and can be retrieved from the colourmaps list |
|
The DrawData class provides an interface to a single object data element DrawData instances are created internally from the Geometry class |
|
The Figure class wraps a set of visualisation state data, providing a way of managing a collection of preset visualisations or "figures" of a single model |
|
The Geometry class provides an interface to a drawing object's internal data Geometry instances are created internally in the Object class with the data property |
|
The Image class provides an interface to a raw image |
|
The Video class provides an interface to record animations |
Module Details¶
functions:¶
- download(url, filename=None, overwrite=False, quiet=False)[source]¶
Download a file from an internet URL
- Parameters:
url (str) – URL to request the file from
filename (str) – Filename to save, default is to keep the same name in current directory
overwrite (boolean) – Always overwrite file if it exists, default is to never overwrite
- Returns:
filename – Actual filename written to local filesystem
- Return type:
str
- grid2d(corners=((0.0, 1.0), (1.0, 0.0)), dims=[2, 2])[source]¶
Generate a 2d grid of vertices
- Parameters:
corners (tuple or list) – top left and bottom right corner vertices (2d)
dims (tuple or list) – dimensions of grid nodes, number of vertices to generate in each direction
- Returns:
vertices – The 2d vertices of the generated grid
- Return type:
array
- grid3d(corners=((0.0, 1.0, 0.0), (1.0, 1.0, 0.0), (0.0, 0.0, 0.0), (1.0, 0.0, 0.0)), dims=[2, 2])[source]¶
Generate a 2d grid of vertices in 3d space
- Parameters:
corners (tuple or list) – 3 or 4 corner vertices (3d)
dims (tuple or list) – dimensions of grid nodes, number of vertices to generate in each direction
- Returns:
vertices – The 3d vertices of the generated 2d grid
- Return type:
array
- cubehelix(samples=16, start=0.5, rot=-0.9, sat=1.0, gamma=1.0, alpha=None)[source]¶
Create CubeHelix spectrum colourmap with monotonically increasing/descreasing intensity
Implemented from FORTRAN 77 code from D.A. Green, 2011, BASI, 39, 289. “A colour scheme for the display of astronomical intensity images” http://adsabs.harvard.edu/abs/2011arXiv1108.5083G
- Parameters:
samples (int) – Number of colour samples to produce
start (float) – Start colour [0,3] 1=red,2=green,3=blue
rot (float) – Rotations through spectrum, negative to reverse direction
sat (float) – Colour saturation grayscale to full [0,1], >1 to oversaturate
gamma (float) – Gamma correction [0,1]
alpha (list or tuple) – Alpha [min,max] for transparency ramp
- Returns:
List of colours ready to be loaded by colourmap()
- Return type:
list
- loadCPT(fn, positions=True)[source]¶
Create a colourmap from a CPT colour table file
- Parameters:
positions (boolean) – Set this to false to ignore any positional data and load only the colours from the file
- Returns:
colours – Colour string ready to be loaded by colourmap()
- Return type:
string
- matplotlib_colourmap(name, samples=16)[source]¶
Import a colourmap from a matplotlib
- Parameters:
name (str) – Name of the matplotlib colourmap preset to import
samples (int) – Number of samples to take for LinearSegmentedColormap type
- Returns:
List of colours ready to be loaded by colourmap()
- Return type:
list
- printH5(h5)[source]¶
Print info about HDF5 data set (requires h5py)
- Parameters:
h5 – HDF5 Dataset loaded with h5py
- lerp(first, second, mu)[source]¶
Linear Interpolation between values of two lists
- Parameters:
first (tuple or list) – first list of values
second (tuple or list) – second list of values
mu (float) – Interpolation factor [0,1]
- Returns:
A list of the interpolated values
- Return type:
list
- player(filename, params='controls autoplay loop', **kwargs)[source]¶
Shows a video inline within an ipython notebook. If IPython is not running, just returns
- Parameters:
filename (str) – Path and name of the file to play
params (str) – Additional html attributes for the video control, see: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/video
**kwargs – width=W,height=H will set fixed size of player window See further player arguments at https://ipython.readthedocs.io/en/latest/api/generated/IPython.display.html#IPython.display.Video
- is_ipython()[source]¶
Detects if running within IPython environment
- Returns:
True if IPython detected Does not necessarrily indicate running within a browser / notebook context
- Return type:
boolean
classes:¶
- class Viewer(*args, resolution=None, binpath=None, context='default', port=8080, threads=False, **kwargs)[source]¶
Bases:
dict
The Viewer class provides an interface to a LavaVu session
- Parameters:
arglist (list) – list of additional init arguments to pass
database (str) – initial database (or model) file to load
figure (int) – initial figure id to display
timestep (int) – initial timestep to display
verbose (boolean) – verbose output to command line for debugging
interactive (boolean) – begin in interactive mode, opens gui window and passes control to event loop immediately
hidden (boolean) – begin hidden, for offscreen rendering or web browser control
cache (boolean) – cache all model timesteps in loaded database, everything loaded into memory on startup (assumes enough memory is available)
quality (int) – Render sampling quality, render 2^N times larger image and downsample output For anti-aliasing image rendering where GPU multisample anti-aliasing is not available
writeimage (boolean) – Write images and quit, create images for all figures/timesteps in loaded database then exit
script (list) – List of script commands to run after initialising
initscript (boolean) – Set to False to disable loading any “init.script” file found in current directory
usequeue (boolean) – Set to True to add all commands to a background queue for processing rather than immediate execution
**kwargs – Remaining keyword args will be passed to the created viewer and parsed into the initial set of global properties
Example
Create a viewer, setting the initial background colour to white
>>> import lavavu >>> lv = lavavu.Viewer(background="white")
Objects can be added by loading files: #>>> lavavu.download(source + ‘Mandible.obj’) # doctest: +ELLIPSIS
>>> import lavavu >>> obj = lv.file('model.obj')
Or creating empty objects and loading data:
>>> obj = lv.points('mypoints') >>> obj.vertices([[0,0,0], [1,1,1]])
Viewer commands can be called as methods on the viewer object:
>>> lv.rotate('x', 45)
Viewer properties can be set by using it like a dictionary:
>>> lv["background"] = "grey50"
A list of available commands and properties can be found in the docs
or by using the online help:
>>> lv.help('rotate') >>> lv.help('opacity') (...)
- ColourMap(identifier=None, **kwargs)[source]¶
Get or create a colourmap
- Parameters:
identifier (str or int or Object, optional) – If a string, lookup an object by name If a number, lookup object by index If an object reference, lookup the Object by reference If omitted, return the last object in the list If no matching object found and string identifier provided, creates an empty object
**kwargs – Set of properties passed to the object
- Returns:
obj – The object located
- Return type:
- Figure(name, objects=None, **kwargs)[source]¶
Create a figure
- Parameters:
name (str) – Name of the figure
objects (list) – List of objects or object names to include in the figure, others will be hidden
- Returns:
figure – Figure object
- Return type:
- Object(identifier=None, **kwargs)[source]¶
Get or create a visualisation object
- Parameters:
identifier (str or int or Object, optional) – If a string, lookup an object by name If a number, lookup object by index If an object reference, lookup the Object by reference If omitted, return the last object in the list If no matching object found and string identifier provided, creates an empty object
**kwargs – Set of properties passed to the object
- Returns:
obj – The object located/created
- Return type:
- Properties(callback=None, **kwargs)[source]¶
Create a property collection, essentially a dict() but with a control factory that allows creation of interactive controls to edit the properties
- Parameters:
callback (function) – Optional function to call whenever a property in this collection is changed by an interactive control The function should take one argument, the collection of type lavavu.Properties() and will be called, with the new values whenever the control value is updated.
**kwargs – Set of initial properties to store in the collection
- Returns:
props – The collection created
- Return type:
- __call__(cmds)[source]¶
Run a LavaVu script
- Parameters:
cmds (str) – String containing commands to run, separate commands with semi-colons”
Example
>>> import lavavu >>> lv = lavavu.Viewer() >>> lv.test() >>> lv('reset; translate -2') >>> print(lv['translate']) [-2.0, 0.0, -6.928203105926514]
- __init__(*args, resolution=None, binpath=None, context='default', port=8080, threads=False, **kwargs)[source]¶
Create and init viewer instance
- Parameters:
args) ((see Viewer class docs for setup)
resolution (list, tuple) – Window/image resolution in pixels [x,y] For off-screen/windowless rendering this sets the default image output and viewer widget size For interactive windows this sets the window size.
binpath (str) – Override the executable path
context (str) – OpenGL context type, “default” will create a context and window based on available configurations. “provided” specifies a user provided context, set this if you have already created and activated the context. “moderngl” creates a context in python using the moderngl module (experimental). “moderngl.” creates a context and a window in python using the moderngl module (experimental) specify class after separator, eg: moderngl.headless, moderngl.pyglet, moderngl.pyqt5.
port (int) – Web server port, open server on specific port for control/interaction Viewer will be run in a separate thread, all rendering will be done in this thread When disabled (None) creates the viewer in the current(main) thread and disables the server
threads (bool) – Use threads instead of asyncio
- add(name=None, **kwargs)[source]¶
Add a visualisation object
- Parameters:
name (str) – Name to apply to the created object If an object of this name exists, it will be returned instead of created
- Returns:
obj – The object created
- Return type:
- addstep(step=-1, **kwargs)[source]¶
Add a new time step
- Parameters:
step (int, optional) – Time step number, default is current + 1
**kwargs – Timestep specific properties passed to the created object
- args(*args, arglist=None, database=None, figure=None, timestep=None, verbose=False, interactive=False, hidden=True, cache=False, quality=3, writeimage=False, resolution=None, script=None, initscript=False, usequeue=False, **kwargs)[source]¶
Execute the viewer, initialising with provided arguments and entering event loop if requested
Parameters: see __init__ docs
args : passed directly to viewer, eg: filenames or initial script commands kwargs: parsed as below to specific switches
- brightness_contrast_saturation(brightness=None, contrast=None, saturation=None)[source]¶
Set brightness, contrast and saturation in the range [0,1] Zero is minimum level 0.5 is default, normal setting 1 is maximum level
- Parameters:
brightness (float) – Brightness level from 0 to 1, converts to lavavu brightness in range [-1,1] 0 is full black, 0.5 is normal and 1.0 is full white
contrast (float) – Contrast level from 0 to 1, converts to lavavu contrast in range [0,2] 0 is grey, 0.5 is normal and 1.0 is maximum contrast
saturation (float) – Saturation level from 0 to 1, converts to lavavu saturation in range [0,2] 0 is greyscale, 0.5 is normal and 1.0 is maximum over-saturation
- camera(data=None)[source]¶
Get/set the current camera viewpoint
Displays and returns camera in python form that can be pasted and executed to restore the same camera view
- Parameters:
data (dict) – Camera view to apply if any
- Returns:
result – Current camera view or previous if applying a new view
- Return type:
dict
- clear(objects=True, colourmaps=True)[source]¶
Clears all data from the visualisation Including objects and colourmaps by default
- Parameters:
objects (boolean) – including all objects, if set to False will clear the objects but not delete them
colourmaps (boolean) – including all colourmaps
- colourmap(data=None, name='', reverse=False, monochrome=False, **kwargs)[source]¶
Load or create a colour map
- Parameters:
name (str) – Name of the colourmap, if this colourmap name is found the data will replace the existing colourmap, otherwise a new colourmap will be created
data (list or str) – Provided colourmap data can be - a string, - list of colour strings, - list of position,value tuples - or a built in colourmap name If none provided, a default colourmap will be loaded from lavavu.cubehelix()
reverse (boolean) – Reverse the order of the colours after loading
monochrome (boolean) – Convert to greyscale
- Returns:
The wrapper object of the colourmap loaded/created
- Return type:
ColourMap(dict)
- property colourmaps¶
Returns the list of active colourmaps
- Returns:
colourmaps – A dictionary containing the available colourmaps as ColourMap() wrapper objects
- Return type:
dict
- commands(cmds, queue=False)[source]¶
Execute viewer commands https://lavavu.github.io/Documentation/Scripting-Commands-Reference These commands can also be executed individually by calling them as methods of the viewer object
- Parameters:
cmds (list or str) – Command(s) to execute
- defaultcolourmap(name)[source]¶
Get content of a default colour map
- Parameters:
name (str) – Name of the built in colourmap to return
- Returns:
Colourmap data formatted as a string
- Return type:
str
- defaultcolourmaps()[source]¶
Get the list of default colour map names
- Returns:
colourmaps – Names of all predefined colour maps
- Return type:
list of str
- display(resolution=(0, 0), transparent=False, filename='*')[source]¶
Show the current display as inline image within an ipython notebook.
If IPython is installed, displays the result image content inline
If IPython is not installed, will save the result with a default filename in the current directory
- Parameters:
resolution (list or tuple) – Image resolution in pixels [x,y]
transparent (boolean) – Creates a PNG image with a transparent background
filename (str) – Name of the file to save when not running in IPython (should be .jpg or .png) Defaults to an autogenerated filename in current directory.
- events()[source]¶
Process input events allows running interactive event loop while animating from python e.g.
>>> import lavavu >>> lv = lavavu.Viewer() >>> def event_loop(): ... while lv.events(): ... #...build next frame here... ... lv.render() ... event_loop()
- Returns:
False if user quit program, True otherwise
- Return type:
boolean
- exec_webgl(code, ID=None)[source]¶
Runs code to act on the active (last) webgl viewer object
The viewer will be available in the variable ‘viewer’ by inserting code before the provided JavaScript, allowing execution of viewer functions in the following script
- Parameters:
code (str) – A JavaScript string to execute after getting the viewer object
ID (int) – A specific webgl ID number, if multiple are active this allows specifying which to execute code with, the first being ID=0
- export(filepath='exported.gldb', objects=None, compress=None)[source]¶
Export model and state to a database snapshot
- Parameters:
filepath (str) – Filename to export, defaults to exported.gldb
objects (list[str]) – List of object names to export
compress (int) – Set flag override default zlib compression of database (0=None, 1=fast, 6=standard, 9=best compression)
- export_mesh(filepath, objects=None, rgba=True)[source]¶
Use trimesh to export mesh objects to a supported format, eg: GLTF (.glb)
See: https://trimsh.org/trimesh.exchange.html Requires “trimesh” module Supports triangle mesh object data
- Parameters:
filepath (str) – Output file to write
objects (list) – Objects to export, defaults to all
rgba (bool) – If set, convert colourmap/value data to rgba before export
- property figures¶
Retrieve the saved figures from loaded model Dict returned contains Figure objects which can be used to modify the figure
- Returns:
figures – A dictionary of all available figures by name
- Return type:
dict
- file(filename, obj=None, **kwargs)[source]¶
Load a database or model file
- Parameters:
filename (str) – Name of the file to load
obj (Object) – Vis object to load the file data into, if not provided a default will be created
- files(files, obj=None, **kwargs)[source]¶
Load data from a series of files (using wildcards or a list)
- Parameters:
files (str) – Specification of the files to load, either a list of full paths or a file spec string such as *.gldb
obj (Object) – Vis object to load the data into, if not provided a default will be created
- frame(resolution=None, quality=90)[source]¶
Get an image frame, returns current display as base64 encoded jpeg data url
- Parameters:
resolution (list or tuple) – Image resolution in pixels [x,y]
quality (int) – Quality for JPEG image compression, default 90%
- Returns:
image – encoded image as string data
- Return type:
str
- get_all_vertices(objectlist=None, values=None)[source]¶
Extract all vertex data from a list of objects
- Parameters:
objectlist (list) – List of objects, defaults to all
values (str) – Optional label of a value data set to collect alongside the vertices
- Returns:
pverts (array) – the vertices, numpy array
bb_all (tuple) – the bounding box of the combined data
pvals (array) – the values, numpy array (only returned if values != None)
- getcolourmap(mapid, string=True)[source]¶
Return colour map data as a string or list Either return format can be used to create/modify a colourmap with colourmap()
- Parameters:
mapid (str or int) – Name or index of the colourmap to retrieve
string (boolean) – The default is to return the data as a string of colours separated by semi-colons To instead return a list of (position,[R,G,B,A]) tuples for easier automated processing in python, set this to False
- Returns:
mapdata – The formatted colourmap data
- Return type:
str or list
- getview()[source]¶
Get current view settings
- Returns:
view – json string containing saved view settings
- Return type:
str
- property gl¶
Return GL version string
- help(cmd='', obj=None)[source]¶
Get help on a command or property
- Parameters:
cmd (str) – Command to get help with, if ommitted displays general introductory help If cmd is a property or is preceded with ‘@’ will display property help
- image(filename='', resolution=None, transparent=False, quality=95)[source]¶
Save or get an image of current display
- Parameters:
filename (str) – Name of the file to save (should be .jpg or .png), if not provided the image will be returned as a base64 encoded data url
resolution (list or tuple) – Image resolution in pixels [x,y]
transparent (boolean) – Creates a PNG image with a transparent background
quality (int) – Quality for JPEG image compression, default 95%
- Returns:
image – filename of saved image or encoded image as string data
- Return type:
str
- interact(local=False, loop=False)[source]¶
Opens an external interactive window in a separate web browser tab/window
- Parameters:
local (boolean) – If local is True will use the webbrowser module to open a browser window. If False, attempts to open a popup window and provides a link for the user to open the window
loop (boolean) – If loop is True and run from a python script instead of a notebook, this starts an event handling loop which blocks python execution until the window is closed
- interactive(args=None)[source]¶
Open an interactive native window
WARNING: On MacOS this function will never return until the window closes
- jpeg(resolution=None, quality=90)[source]¶
Get an image frame, returns current display as JPEG data in a bytearray
- Parameters:
resolution (list or tuple) – Image resolution in pixels [x,y]
quality (int) – Quality for JPEG image compression, default 90%
- Returns:
image – encoded image as byte array
- Return type:
bytearray
- loadimage(filename)[source]¶
Return raw image data from file
- Parameters:
filename (str) – Source image file (jpeg/png, tiff if libtiff supported)
- Returns:
image – Numpy array of the image data loaded
- Return type:
array
- property objects¶
Returns the active objects
- Returns:
objects – A dictionary wrapper containing the list of available visualisation objects Can be printed, iterated or accessed as a dictionary by object name
- Return type:
_Objects(dict)
- property output_path¶
str Returns image output path
- Type:
output_path
- parse_colour(colour)[source]¶
Parse a colour string and return a numpy RGBA array
- Parameters:
colour (str) – Colour string, accepts html formats and X11 colour names or JSON string RGBA array
- Returns:
rgba – the colour data as RGBA float array
- Return type:
array
Example
Parse a colour string
>>> import lavavu >>> lv = lavavu.Viewer() >>> lv.parse_colour('rgba(255,24,128,1.0)') array([1. , 0.09, 0.5 , 1. ], dtype=float32)
- png(resolution=None)[source]¶
Get an image frame, returns current display as PNG data in a bytearray
- Parameters:
resolution (list or tuple) – Image resolution in pixels [x,y]
- Returns:
image – encoded image as byte array
- Return type:
bytearray
- property port¶
HTTP server interface port
- Returns:
port – Port the HTTP server is running on Will return 0 if server is not running
- Return type:
int
- rawimage(resolution=(640, 480), channels=3)[source]¶
Return raw image data
- Parameters:
resolution (tuple(int,int)) – Image width and height in pixels
channels (int) – colour channels/depth in bytes (1=luminance, 3=RGB(default), 4=RGBA)
- Returns:
image – Numpy array of the image data requested
- Return type:
array
- redisplay()[source]¶
Update the display of any interactive viewer
This is required after changing vis properties from python so the changes are reflected in the viewer
- restore(filename='state.json')[source]¶
Restore visualisation state from a json file (Includes all properties, colourmaps and defined objects but not their geometry data)
- Parameters:
filename (str) – Name of the file to load
- serve(*args, **kwargs)[source]¶
Run a web server in python This uses server.py to launch a simple web server
- Parameters:
port (int) – port to run on
ipv6 (boolean) – use ipv6 if True, ipv4 if False
retries (int) – Number of attempts to open a port, incrementing the port number each time
- set_properties(objects=None, **kwargs)[source]¶
Set properties on viewer or on a set of objects by name
- Parameters:
objects (list) – List of objects or object names, if not provided the properties will be applied globally to the Viewer itself
**kwargs – key=value property names and values to set
- set_uniforms(objects=None, **kwargs)[source]¶
Set uniform variables on a set of objects by name or all objects Uniforms are parameters sent directly to the shader program and can have any valid GLSL variable name, it just needs to match the declaration in the shader
- Parameters:
objects (list) – List of objects or object names, if not provided the full object list will be iterated
**kwargs – key=value uniform names and values to set
- setview(view)[source]¶
Set current view settings
- Parameters:
view (str) – json string containing saved view settings
- property step¶
int Returns current timestep
- Type:
step
- property steps¶
Retrieve the time step data from loaded model
- Returns:
timesteps – A list of all available time steps
- Return type:
list
- store(filename='state.json')[source]¶
Store current visualisation state as a json file (Includes all properties, colourmaps and defined objects but not their geometry data)
- Parameters:
filename (str) – Name of the file to save
- testimage(expfile, outfile, tolerance=0.0001, clear=False)[source]¶
Compare two images
- Parameters:
expfile (str) – Expected result image
outfile (str) – Test output image
tolerance (float) – Tolerance level of difference before a comparison fails, default 0.0001
- Returns:
result – True if test passes, difference <= tolerance False if test fails, difference > tolerance
- Return type:
boolean
- testimages(imagelist=None, tolerance=0.0001, expectedPath='expected/', outputPath='./', clear=True)[source]¶
Compare a list of images to expected images for testing
- Parameters:
imagelist (list) – List of test images to compare with expected results If not provided, will process all jpg and png images in working directory
tolerance (float) – Tolerance level of difference before a comparison fails, default 0.0001
expectedPath (str) – Where to find the expected result images (should have the same filenames as output images)
outputPath (str) – Where to find the output images
clear (boolean) – If the test passes the output images will be deleted, set to False to disable deletion
- texture(label, data=None, flip=True, filter=2, bgr=False)[source]¶
Load or clear global/shared texture data
- Parameters:
label (string) – Label to load a custom texture by name of uniform used Will attempt to find the texture by this label and replace its data
data (list or array or string) – (If data is not provided, the object’s texture data will be cleared) Pass a list or numpy uint32 or uint8 array texture data is loaded as raw image data shape of array must be 2d or 3d, either (height, width, channels) for RGB(A) image or (height, width) for single channel grayscale image Pass a string to load a texture from given filename
flip (boolean) – flip the texture vertically after loading (default is enabled as usually required for OpenGL but can be disabled)
filter (int) – type of filtering, 0=None/nearest, 1=linear, 2=mipmap linear
bgr (boolean) – rgb data is in BGR/BGRA format instead of RGB/RGBA
- timesteps()[source]¶
Retrieve the time step data from loaded model
- Returns:
timesteps – A list of all available time steps
- Return type:
list
- update(filter=None)[source]¶
Write visualisation data back to the database
- Parameters:
filter (str) – Optional filter to type of geometry to be updated, if omitted all will be written (labels, points, grid, triangles, vectors, tracers, lines, shapes, volume)
- video(filename='', fps=30, quality=1, resolution=(0, 0), **kwargs)[source]¶
Record and show the generated video inline within an ipython notebook.
If IPython is installed, displays the result video content inline
If IPython is not installed, will save the result in the current directory
This function is best used with the “with” statement as it returns a context manager. Alternatively recording can be manually started, stopped and the video displayed
See also: Video (class)
- Parameters:
filename (str) – Name of the file to save, if not provided a default will be used
fps (int) – Frames to output per second of video
quality (int) – Encoding quality, 1=low(default), 2=medium, 3=high, higher quality reduces encoding artifacts at cost of larger file size
resolution (list or tuple) – Video resolution in pixels [x,y]
**kwargs – Any additional keyword args will be passed to lavavu.player()
- Returns:
recorder – Context manager object that controls the video recording
- Return type:
Video(object)
- video_steps(filename='', start=0, end=0, fps=10, quality=1, resolution=(0, 0), **kwargs)[source]¶
Record a video of the model by looping through all time steps
Shows the generated video inline within an ipython notebook.
If IPython is installed, displays the result video content inline
If IPython is not installed, will save the result in the current directory
- Parameters:
filename (str) – Name of the file to save, if not provided a default will be used
start (int) – First timestep to record, if not specified will use first available
end (int) – Last timestep to record, if not specified will use last available
fps (int) – Frames to output per second of video
quality (int) – Encoding quality, 1=low(default), 2=medium, 3=high, higher quality reduces encoding artifacts at cost of larger file size
resolution (list or tuple) – Video resolution in pixels [x,y]
**kwargs – Any additional keyword args will be passed to lavavu.player()
- viewport(x=0.0, y=0.0, width=1.0, height=1.0, replace=False, **kwargs)[source]¶
Add a viewport object
- Parameters:
x (float) – x offset as fraction of window size [0,1]
y (float) – y offset as fraction of window size [0,1]
width (float) – width as fraction of window size [0,1]
height (float) – height as fraction of window size [0,1]
replace (bool) – Set to True to replace the active viewport instead of adding a new viewport
dict (Subsequent kwargs are passed as properties)
- webgl(filename=None, resolution=(640, 480), browser=False, menu=True, **kwargs)[source]¶
Create a WebGL page with a 3D interactive view of the active model (will only contain a snapshot of the current timestep for 4D data)
Result can be saved with a provided filename as a HTML file in the current directory
If running from IPython, displays the result WebGL content inline in the cell by default
- Parameters:
filename (str) – Filename to save generated HTML page. If running in IPython the default behaviour is to display the result inline and no file will be written Otherwise, content will be written to “webgl.html” if not provided.
resolution (list or tuple) – Display window resolution in pixels [x,y] for inline viewer
browser (boolean) – Open generated page in a new full browser window
menu (boolean) – Include and interactive menu for controlling visualisation appearance, on by default
kwargs – Additional named arguments passed will be added to the global WebGL viewer settings, defaults are: interactive=True, immediatesort=False, sortenabled=True
- webview(resolution=(640, 480))[source]¶
Create a full WebGL2 view of the model
If running from IPython, displays the result WebGL2 content inline in the cell in an iframe
- Parameters:
resolution (list or tuple) – Display window resolution in pixels [x,y] for inline viewer
- window(resolution=None, menu=True)[source]¶
Create and display an interactive viewer instance
This shows an active viewer window to the visualisation that can be controlled with the mouse or html widgets
- Parameters:
resolution (int, tuple(int,int)) – Frame size in pixels: width, height. Defaults to half the viewer default output resolution with a minimum width of 640 pixels If a single integer is passed, will use as the width while maintaining output aspect ratio
menu (boolean) – Adds a menu to the top right allowing control of vis parameters, defaults to on
- class Object(parent, *args, **kwargs)[source]¶
Bases:
dict
The Object class provides an interface to a LavaVu drawing object Object instances are created internally in the Viewer class and can be retrieved from the object list
New objects are also created using viewer methods
- Parameters:
**kwargs – Initial set of properties passed to the created object
Example
Create a viewer, load some test data, get objects
>>> import lavavu >>> lv = lavavu.Viewer() >>> lv.test() >>> print(lv.objects) dict_keys(['particles', 'particles_colourbar', 'line-segments', 'Z-cross-section', 'Y-cross-section', 'X-cross-section'])
Object properties can be passed in when created or set by using as a dictionary:
>>> obj = lv.points(pointtype="sphere") >>> obj["pointsize"] = 5
A list of available properties can be found here: https://lavavu.github.io/Documentation/Property-Reference or by using the online help:
>>> obj.help('opacity')
- append()[source]¶
Append a new data element to the object
Object data is sometimes dependant on individual elements to determine where one part ends and another starts, e.g. line segments, grids
This allows manually closing the active element so all new data is loaded into a new element
- brightness_contrast_saturation(brightness=None, contrast=None, saturation=None)[source]¶
Set brightness, contrast and saturation in the range [0,1] Zero is minimum level 0.5 is default, normal setting 1 is maximum level
- Parameters:
brightness (float) – Brightness level from 0 to 1, converts to lavavu brightness in range [-1,1] 0 is full black, 0.5 is normal and 1.0 is full white
contrast (float) – Contrast level from 0 to 1, converts to lavavu contrast in range [0,2] 0 is grey, 0.5 is normal and 1.0 is maximum contrast
saturation (float) – Saturation level from 0 to 1, converts to lavavu saturation in range [0,2] 0 is greyscale, 0.5 is normal and 1.0 is maximum over-saturation
- cleardata(typename='')[source]¶
Clear specific visualisation data/values from this object
- Parameters:
typename (str) – Optional filter naming type of data to be cleared, Either a built in type: (vertices/normals/vectors/indices/colours/texcoords/luminance/rgb/values) or a user defined data label
- colourbar(**kwargs)[source]¶
Create a new colourbar using this object’s colourmap
- Returns:
colourbar – The colourbar object created
- Return type:
- colourmap(data=None, name=None, reverse=False, monochrome=False, **kwargs)[source]¶
Load colour map data for object
- Parameters:
data (list or str or ColourMap) – If not provided, just returns the colourmap (A default is created if none exists) Provided colourmap data can be - a string, - list of colour strings, - list of position,value tuples - a built in colourmap name - An existing ColourMap object Creates a colourmap named objectname_colourmap if object doesn’t already have a colourmap
name (str) – Name of colourmap, when creating a new one
reverse (boolean) – Reverse the order of the colours after loading
monochrome (boolean) – Convert to greyscale
- Returns:
The wrapper object of the colourmap loaded/created
- Return type:
ColourMap(dict)
- colours(data)[source]¶
Load colour data for object
- Parameters:
data (str or list or array) – Pass a list or numpy uint32 array of colours if a string or list of strings is provided, colours are parsed as html colour string values if a numpy array is passed, colours are loaded as 4 byte ARGB unsigned integer values
- commands(cmds, queue=False)[source]¶
Execute viewer commands with this object as the target https://lavavu.github.io/Documentation/Scripting-Commands-Reference
- Parameters:
cmds (list or str) – Command(s) to execute
- contours(isovalues=None, name=None, labels=True, convert=False, updatedb=False, **kwargs)[source]¶
Generate a contours from a surface/grid data set using the marching squares algorithm
- Parameters:
isovalues (number,list) – Isovalues to draw contour lines on, number or list
name (str) – Name of the created object, automatically assigned if not provided
labels (bool) – Label one of the contour lines for each of the interval values, positioning of these is automatic but not always ideal
convert (bool) – Setting this flag to True will replace the existing surface grid object with the newly created contours by deleting the grid data and loading the line data into the preexisting object
updatedb (bool) – Setting this flag to True will write the newly created/modified data to the database when done
**kwargs – Initial set of properties passed to the created object
- Returns:
obj – The contour object created/converted
- Return type:
- property data¶
Return internal geometry data at current timestep Returns a Geometry() object that can be iterated through containing all data elements Elements contain vertex/normal/value etc. data as numpy arrays
- Returns:
An object holding the data elements retrieved
- Return type:
Example
>>> import lavavu >>> lv = lavavu.Viewer() >>> obj = lv.points(vertices=[[0,1], [1,0]]) >>> for el in obj.data: ... print(el) DrawData("points") ==> {'vertices': (2, 3)}
- property datasets¶
Retrieve available labelled data sets on this object
- Returns:
A dictionary containing the data objects available by label
- Return type:
dict
- exclude(*args, **kwargs)[source]¶
Filter data by excluding a range of values shortcut for: filter(… , out=True)
- Parameters:
label (str) – Data label to filter on
values (number or list or tuple) – value range single value, list or tuple if a single value the filter applies to only this value: x == value if a list e.g. [0,1] range is inclusive 0 <= x <= 1 if a tuple e.g. (0,1) range is exclusive 0 < x < 1
- Returns:
The filter id created
- Return type:
int
- excludemap(*args, **kwargs)[source]¶
Filter data by excluding a range of mapped values shortcut for: filter(… , out=True, map=True)
- Parameters:
label (str) – Data label to filter on
values (number or list or tuple) – value range single value, list or tuple if a single value the filter applies to only this value: x == value if a list e.g. [0,1] range is inclusive 0 <= x <= 1 if a tuple e.g. (0,1) range is exclusive 0 < x < 1
- Returns:
The filter id created
- Return type:
int
- export(filepath=None, compress=None)[source]¶
Export model and state to a database snapshot
- Parameters:
filepath (str) – Filename to export, defaults to [object name].gldb
compress (int) – Set flag override default zlib compression of database (0=None, 1=fast, 6=standard, 9=best compression)
- export_mesh(filepath, rgba=True)[source]¶
Use trimesh to export mesh object to a supported format, eg: GLTF (.glb)
See: https://trimsh.org/trimesh.exchange.html Requires “trimesh” module Supports triangle mesh object data
- Parameters:
filepath (str) – Output file to write
rgba (bool) – If set, convert colourmap/value data to rgba before export
- file(*args, **kwargs)[source]¶
Load data from a file into this object
- Parameters:
filename (str) – Name of the file to load
- files(*args, **kwargs)[source]¶
Load data from a series of files into this object (using wildcards or a list)
- Parameters:
files (str) – Specification of the files to load
- filter(label, values=None, out=False, map=False)[source]¶
Filter data by including a range of values
- Parameters:
label (str) – Data label to filter on
values (number or list or tuple) – value range single value, list or tuple if a single value the filter applies to only this value: x == value if a list e.g. [0,1] range is inclusive 0 <= x <= 1 if a tuple e.g. (0,1) range is exclusive 0 < x < 1
out (boolean) – Set this flag to filter out values instead of including them
map (boolean) – Set this flag to filter by normalised values mapped to [0,1] instead of actual min/max of the data range
- Returns:
The filter id created
- Return type:
int
- getcolourmap(string=True)[source]¶
Return the colour map data from the object as a string or list Either return format can be used to create/modify a colourmap with colourmap()
- Parameters:
string (boolean) – The default is to return the data as a string of colours separated by semi-colons To instead return a list of (position,[R,G,B,A]) tuples for easier automated processing in python, set this to False
- Returns:
mapdata – The formatted colourmap data
- Return type:
str/list
- help(cmd='')[source]¶
Get help on an object method or property
- Parameters:
cmd (str) – Command to get help with, if ommitted displays general introductory help If cmd is a property or is preceded with ‘@’ will display property help
- include(*args, **kwargs)[source]¶
Filter data by including a range of values shortcut for: filter(… , out=False)
- Parameters:
label (str) – Data label to filter on
values (number or list or tuple) – value range single value, list or tuple if a single value the filter applies to only this value: x == value if a list e.g. [0,1] range is inclusive 0 <= x <= 1 if a tuple e.g. (0,1) range is exclusive 0 < x < 1
- Returns:
The filter id created
- Return type:
int
- includemap(*args, **kwargs)[source]¶
Filter data by including a range of mapped values shortcut for: filter(… , out=False, map=True)
- Parameters:
label (str) – Data label to filter on
values (number or list or tuple) – value range single value, list or tuple if a single value the filter applies to only this value: x == value if a list e.g. [0,1] range is inclusive 0 <= x <= 1 if a tuple e.g. (0,1) range is exclusive 0 < x < 1
- Returns:
The filter id created
- Return type:
int
- indices(data, offset=0)[source]¶
Load index data for object
- Parameters:
data (list or array) – Pass a list or numpy uint32 array of indices indices are loaded as 32 bit unsigned integer values
offset (int) – Specify an initial index offset, for 1-based indices pass offset=1 Default is zero-based
- isosurface(isovalues=None, name=None, convert=False, updatedb=False, **kwargs)[source]¶
Generate an isosurface from a volume data set using the marching cubes algorithm
- Parameters:
isovalues (number,list) – Isovalues to create surfaces for, number or list
name (str) – Name of the created object, automatically assigned if not provided
convert (bool) – Setting this flag to True will replace the existing volume object with the newly created isosurface by deleting the volume data and loading the mesh data into the preexisting object
updatedb (bool) – Setting this flag to True will write the newly created/modified data to the database when done
**kwargs – Initial set of properties passed to the created object
- Returns:
obj – The isosurface object created/converted
- Return type:
- labels(data)[source]¶
Load label data for object
- Parameters:
data (list or str) – Pass a label or list of labels to be applied, one per vertex
- luminance(data)[source]¶
Load luminance data for object
- Parameters:
data (list or array) – Pass a list or numpy uint8 array of luminance values values are loaded as 8 bit unsigned integers
- magnitude(data, label='magnitude')[source]¶
Load magnitude of a vector array as value data for an object
- Parameters:
data (list or array) – Pass a list or numpy float32 3d array of vertices
label (str) – Label for this data set, default=”magnitude”
- property name¶
Get the object’s name property
- Returns:
name – The name of the object
- Return type:
str
- normals(data)[source]¶
Load 3d normal data for object
- Parameters:
data (list or array) – Pass a list or numpy float32 3d array of normals
- opacitymap(data=None, **kwargs)[source]¶
Load opacity map data for object
- Parameters:
data (list or str) – If not provided, just returns the opacity map (A default is created if none exists) Provided opacity map data can be - list of opacity values, - list of position,opacity tuples Creates an opacity map named objectname_opacitymap if object doesn’t already have an opacity map
- Returns:
The wrapper object of the opacity map loaded/created
- Return type:
ColourMap(dict)
- reload()[source]¶
Fully reload the object’s data, recalculating all parameters such as colours that may be cached on the GPU, required after changing some properties so the changes are reflected in the visualisation
- rgb(data)[source]¶
Load rgb data for object
- Parameters:
data (list or array) – Pass a list or numpy uint8 array of rgb values values are loaded as 8 bit unsigned integer values
- rgba(data)[source]¶
Load rgba data for object
- Parameters:
data (list or array) – Pass a list or numpy uint8 array of rgba values values are loaded as 8 bit unsigned integer values
- swapv(a, b)[source]¶
Swap coordinates of 3d data (vertices, normals, vectors) This replaces the swapyz property/feature that only applied to OBJ import
- texcoords(data)[source]¶
Load 2d texture coordinate data for object
- Parameters:
data (list or array) – Pass a list or numpy float32 2d array of coordinates
- texture(data=None, flip=True, filter=2, bgr=False, label='')[source]¶
Load or clear texture data for object
- Parameters:
data (list or array or string) – (If data is not provided, the object’s texture data will be cleared) Pass a list or numpy uint32 or uint8 array texture data is loaded as raw image data shape of array must be 2d or 3d, either (height, width, channels) for RGB(A) image or (height, width) for single channel grayscale image Pass a string to load a texture from given filename
label (string) – Optional label to load a custom texture by name of uniform used If provided, will attempt to find the texture by this label and replace its data If not provided, will use the default/primary texture for the object
flip (boolean) – flip the texture vertically after loading (default is enabled as usually required for OpenGL but can be disabled)
filter (int) – type of filtering, 0=None/nearest, 1=linear, 2=mipmap linear
bgr (boolean) – rgb data is in BGR/BGRA format instead of RGB/RGBA
- triangles(data, split=0)[source]¶
Load triangle data,
This is the same as loading vertices into a triangle mesh object but allows decomposing the mesh into smaller triangles with the split option
- Parameters:
split (int) – Split triangles this many times on loading
- update(filter=None)[source]¶
Write the objects’s visualisation data back to the database
- Parameters:
filter (str) – Optional filter to type of geometry to be updated, if omitted all will be written (eg: labels, points, grid, triangles, vectors, tracers, lines, shapes, volume)
- values(data, label='default')[source]¶
Load value data for object
- Parameters:
data (list or array) – Pass a list or numpy float32 array of values
label (str) – Label for this data set
- class Properties(parent, callback=None, **kwargs)[source]¶
Bases:
dict
The Properties class provides an interface to a collection of properties with a control factory, allowing controls to be created to manipulate their values interactively Properties can be passed in when created or set by using as a dictionary:
- Parameters:
callback (function) – Optional function to call whenever a property in this collection is changed by an interactive control The function should take one argument, the collection of type lavavu.Properties() and will be called, with the new values whenever the control value is updated.
**kwargs – Set of initial properties to store in the collection
Example
Create a property set, load some test data
>>> import lavavu >>> lv = lavavu.Viewer() >>> props = lv.Properties(floatprop=1.0) >>> props["boolprop"] = True >>> print(props) {'floatprop': 1.0, 'boolprop': True}
Now create some controls to manipulate them
>>> f = props.control.Range('floatprop', range=(0,1)) >>> b = props.control.Checkbox('boolprop')
- class ColourMap(ref, parent, *args, **kwargs)[source]¶
Bases:
dict
The ColourMap class provides an interface to a LavaVu ColourMap ColourMap instances are created internally in the Viewer class and can be retrieved from the colourmaps list
New colourmaps are also created using viewer methods
- Parameters:
**kwargs – Initial set of properties passed to the created colourmap
- property colours¶
Returns the list of colours
- Returns:
colours – A list of colours
- Return type:
list
- property name¶
Get the colourmap name property
- Returns:
name – The name of the colourmap
- Return type:
str
- property positions¶
Returns the list of colour positions
- Returns:
positions – A list of colour positions [0,1]
- Return type:
list
- tohexstr()[source]¶
Get the colourmap colour data as a string with hex rgb:a representation, NOTE: ignores position data
- Returns:
The colour data which can be used to re-create the colourmap
- Return type:
str
- tolist()[source]¶
Get the colourmap data as a python list
- Returns:
The colour and position data which can be used to re-create the colourmap
- Return type:
list
- update(data=None, reverse=False, monochrome=False, **kwargs)[source]¶
Update the colour map data
- Parameters:
data (list,str) – Provided colourmap data can be - a string, - list of colour strings, - list of position,value tuples - or a built in colourmap name
reverse (boolean) – Reverse the order of the colours after loading
monochrome (boolean) – Convert to greyscale
- class DrawData(data, obj)[source]¶
Bases:
object
The DrawData class provides an interface to a single object data element DrawData instances are created internally from the Geometry class
copy(), get() and set() methods provide access to the data types
Example
>>> import lavavu >>> lv = lavavu.Viewer() >>> obj = lv.points(vertices=[[0,1], [1,0]], colours="red blue") >>> obj.values([2, 3], "myvals")
Get the data elements
>>> print(obj.data) [DrawData("points") ==> {'vertices': (2, 3), 'colours': (2,), 'myvals': (2,)}]
Get a copy of the colours (if any)
>>> colours = obj.data.colours_copy >>> print(colours) [array([4278190335, 4294901760], dtype=uint32)]
Get a view of the vertex data
>>> verts = obj.data.vertices >>> print(verts) [array([[0., 1., 0.], [1., 0., 0.]], dtype=float32)]
WARNING: this reference may be deleted by other calls, use _copy if you are not processing the data immediately and relying on it continuing to exist later
Get a some value data by label “myvals” >>> vals = obj.data.myvals >>> print(vals) [array([2., 3.], dtype=float32)]
Load some new values for this data, provided list must match first dimension of existing data list
>>> print(obj.data.myvals) [array([2., 3.], dtype=float32)] >>> obj.data.myvals = [[4,5]] >>> print(obj.data.myvals) [array([4., 5.], dtype=float32)]
- copy(typename)[source]¶
Get a copy of a data element from geometry data
This is a safe version of get() that copies the data before returning so can be assured it will remain valid
- Parameters:
typename (str) – Type of data to be retrieved (vertices/normals/vectors/indices/colours/texcoords/luminance/rgb/values)
- Returns:
data – Numpy array containing a copy of the data set requested
- Return type:
array
- get(typename)[source]¶
Get a data element from geometry data
Warning… other than for internal use, should always immediately make copies of the data there is no guarantee memory will not be released!
- Parameters:
typename (str) – Type of data to be retrieved (vertices/normals/vectors/indices/colours/texcoords/luminance/rgb/values)
- Returns:
data – Numpy array view of the data set requested
- Return type:
array
- class Figure(parent, name)[source]¶
Bases:
dict
The Figure class wraps a set of visualisation state data, providing a way of managing a collection of preset visualisations or “figures” of a single model
Figures represent a full set of visualisation settings, including visibility of chosen objects
A single model can contain many objects and multiple figures, all of which work on the same set of objects, but may not use them all (ie: some are hidden)
A figure object encapsulates the same data that can be stored on disk in a JSON file with Viewer.store(filename) and restored with Viewer.restore(filename)
- class Geometry(obj, timestep=-2, filter=None)[source]¶
Bases:
list
The Geometry class provides an interface to a drawing object’s internal data Geometry instances are created internally in the Object class with the data property
Example
Get all object data
>>> import lavavu >>> lv = lavavu.Viewer() >>> obj = lv.points() >>> #Fixed points, always plotted regardless of timestep >>> obj.vertices([[-1,-1], [0,0], [1,1]]) >>> #Add triangles to same object, switch the geometry type: >>> obj["renderer"] = "triangles" >>> lv.addstep() >>> print(lv.steps) [0] >>> obj.vertices([[0,1], [1,1], [1,0]]) >>> obj.append() >>> obj.vertices([[2,2], [2,3], [3,2]]) >>> lv.addstep() >>> print(lv.steps) [0, 1] >>> obj.vertices([[0.5,1], [1.5,1], [1.5,0]])
Loop through all elements of an object (at current timestep)
>>> for i,el in enumerate(obj): ... print(i,el) ... print(el.vertices) 0 DrawData("points") ==> {'vertices': (3, 3)} [[-1. -1. 0.] [ 0. 0. 0.] [ 1. 1. 0.]] 1 DrawData("triangles") ==> {'vertices': (3, 3)} [[0.5 1. 0. ] [1.5 1. 0. ] [1.5 0. 0. ]]
Get only triangle data
>>> data = obj.data["triangles"] >>> print(data) [DrawData("triangles") ==> {'vertices': (3, 3)}] >>> print(data.vertices) [array([[0.5, 1. , 0. ], [1.5, 1. , 0. ], [1.5, 0. , 0. ]], dtype=float32)]
Get data at specific timestep only (default is current step including fixed data)
>>> data = obj.data["0"] >>> print(data) [DrawData("triangles") ==> {'vertices': (3, 3)}, DrawData("triangles") ==> {'vertices': (3, 3)}] >>> print(data.vertices) [array([[0., 1., 0.], [1., 1., 0.], [1., 0., 0.]], dtype=float32), array([[2., 2., 0.], [2., 3., 0.], [3., 2., 0.]], dtype=float32)]
Loop through data elements
>>> for el in data: ... print(el) DrawData("triangles") ==> {'vertices': (3, 3)} DrawData("triangles") ==> {'vertices': (3, 3)}
Show the fixed data (timestep -1)
>>> print(obj.data["-1"]) [DrawData("points") ==> {'vertices': (3, 3)}]
- class Image(resolution=(640, 480), channels=4, value=[255, 255, 255, 0], data=None)[source]¶
Bases:
object
The Image class provides an interface to a raw image
Example
>>> import lavavu >>> lv = lavavu.Viewer() >>> lv.test() >>> img = lv.rawimage() >>> img.save('out.png')
TODO: control blend equations
- blend(source, resolution=None, position=(0, 0))[source]¶
Render another image to a specified position with this image with alpha blending
- Parameters:
source (array or lavavu.Viewer) – Numpy array containing raw image data to paste or a Viewer instance to source the frame from
resolution (tuple(int,int)) – Sub-image width and height in pixels, if not provided source must be a numpy array of the correct dimensions
position (tuple(int,int)) – Sub-image x,y offset in pixels
- convert(source)[source]¶
Attempts to convert an image to the same pixel format as this image
- Parameters:
source (array) – Numpy array containing raw image data to convert
- Returns:
result – Numpy array containing converted raw image data if successful, or original data otherwise
- Return type:
array
- crop(width, height, x=0, y=0)[source]¶
Crop image to specified width and height, with optional x,y offset
- Parameters:
width (int) – Crop width
height (int) – Crop height
x (int) – Crop x offset
y (int) – Crop y offset
- paste(source, resolution=None, position=(0, 0))[source]¶
Render another image to a specified position with this image
- Parameters:
source (array or lavavu.Viewer) – Numpy array containing raw image data to paste or a Viewer instance to source the frame from
resolution (tuple(int,int)) – Sub-image width and height in pixels, if not provided and source is a numpy array will get dimensions from shape, otherwise will use default viewer dimensions
position (tuple(int,int)) – Sub-image x,y offset in pixels
- class Video(viewer=None, filename='', resolution=(0, 0), framerate=30, quality=1, **kwargs)[source]¶
Bases:
object
The Video class provides an interface to record animations
Example
>>> import lavavu >>> lv = lavavu.Viewer() >>> lv.test() >>> with lv.video(): ... for i in range(0,5): ... lv.rotate('y', 10) ... lv.render()
- __init__(viewer=None, filename='', resolution=(0, 0), framerate=30, quality=1, **kwargs)[source]¶
Record and show the generated video inline within an ipython notebook.
If IPython is installed, displays the result video content inline
If IPython is not installed, will save the result in the current directory
This function is best used with the “with” statement as the object is a context manager. Alternatively recording can be manually started, stopped and the video displayed
- Parameters:
viewer (lavavu.Viewer()) – Viewer object
filename (str) – Name of the file to save, if not provided a default will be used
fps (int) – Frames to output per second of video
quality (int) – Encoding quality, 1=low(default), 2=medium, 3=high, higher quality reduces encoding artifacts at cost of larger file size
resolution (list or tuple) – Video resolution in pixels [x,y]
**kwargs – Any additional keyword args will be passed to lavavu.player()