A python module for scientific visualization, analysis and animation of 3D objects
and point clouds based on VTK
and numpy.
Use pip to install:
pip install vtkplotterAutomatically generated documentation can be found here.
Intuitive and straightforward API which can be combined with VTK seamlessly in a program, whilst mantaining access to the full range of VTK native classes.
It includes a large set of working examples for the all following functionalities:
- Import meshes from VTK format, STL, Wavefront OBJ, 3DS, XML, Neutral, GMSH, PCD (PointCloud), volumetric TIFF stacks, SLC, MHD, 2D images PNG, JPEG.
- Export meshes as ASCII or binary to VTK, STL, PLY formats with command
vtkconvert. - Mesh analysis through the built-in methods of VTK package. Additional analysis tools like Moving Least Squares, mesh morphing.
- Tools to visualize and edit meshes (cutting a mesh with another mesh, slicing, normalizing, moving vertex positions, etc..). Interactive cutter widget.
- Split mesh based on surface connectivity. Extract the largest connected area.
- Calculate mass properties, like area, volume, center of mass, average size etc.
- Calculate vertex and face normals, curvatures, feature edges. Fill mesh holes.
- Subdivide faces of a mesh, increasing the number of vertex points. Mesh simplification.
- Coloring and thresholding of meshes based on associated scalar or vectorial data.
- Point-surface operations: find nearest points, determine if a point lies inside or outside a mesh.
- Create primitive objects like: spheres, arrows, cubes, torus, ellipsoids...
- Generate glyphs (associating a mesh to each vertex of a source mesh).
- Create animations easily by just defining the position of the displayed objects in the 3D scene. Add trailing lines to moving objects automatically.
- Straightforward support for multiple sync-ed or independent renderers in the same window.
- Registration (alignment) of meshes with different techniques.
- Mesh smoothing with Laplacian and WindowedSinc algorithms.
- Delaunay triangulation in 2D and 3D.
- Generate meshes by joining nearby lines in space.
- Find the closest path from one point to another, travelling along the edges of a mesh.
- Find the intersection of a mesh with a line (or with another mesh).
- Analysis of Point Clouds:
- Moving Least Squares smoothing of 2D, 3D and 4D clouds
- Fit lines, planes and spheres in space
- Perform PCA (Principal Component Analysis) on point coordinates
- Identify outliers in a distribution of points
- Decimate a cloud to a uniform distribution.
- Basic histogramming and function plotting in 1D and 2D.
- Interpolate scalar and vectorial fields with Radial Basis Functions and Thin Plate Splines.
- Analysis of volumetric datasets:
- Isosurfacing of volumes
- Direct maximum projection rendering
- Generate volumetric signed-distance data from an input surface mesh
- Probe a volume with lines and planes.
- Add sliders and buttons to interact with the scene and the individual objects.
- Examples with SHTools package for spherical harmonics expansion of a mesh shape.
- Integration with the Qt5 framework.
In your python script, load a simple 3DS file and display it:
from vtkplotter import show
show('data/shapes/flamingo.3ds') vtkplotter meshfile.vtk
# valid formats: [vtk,vtu,vts,vtp,ply,obj,stl,3ds,xml,neutral,gmsh,pcd,xyz,txt,byu,tif,slc,vti,mhd,png,jpg]to visualize multiple files or files time-sequences try -n or -s options. Use -h for help.
Voxel-data (vti, slc, tiff) files can also be visualized with options -g and --slicer,
e.g.:
vtkplotter -g -c blue examples/data/embryo.slc # (3D scan of a mouse embryo)
vtkplotter --slicer examples/data/embryo.slc A get-started tutorial script is available for download:
git clone https://github.com/marcomusy/vtkplotter.git
cd vtkplotter/examples
python tutorial.py More than 100 examples can be found in directories (scroll down to see the screenshots):
examples/basic
examples/advanced
examples/volumetric
examples/simulations
examples/other.
Apply a Moving Least Squares algorithm to obtain a smooth surface from a to a large cloud of scattered points in space (script) python advanced/moving_least_squares2D.py |
|
Simulation of a gyroscope hanging from a spring (script) python simulations/gyroscope1.py |
|
Simulation of Rutherford scattering of charged particles on a fixed target (script)python simulations/particle_simulator.py |
|
Quantum-tunnelling effect integrating the Schroedinger equation with 4th order Runge-Kutta method. The animation shows the evolution of a particle in a box hitting a sinusoidal potential barrier. (script) python simulations/tunnelling2.py |
|
Visualizing a Turing system of reaction-diffusion between two molecules1 (script) python simulations/turing.py |
Scientific publications using vtkplotter so far:
- Diego, X. et al: "Key features of Turing systems are determined purely by network topology", Physical Review X, 20 June 2018.
- M. Musy, K. Flaherty, J. Raspopovic, A. Robert-Moreno, J. T. Richtsmeier, J. Sharpe: "A Quantitative Method for Staging Mouse Limb Embryos based on Limb Morphometry", Development 2018, doi: 10.1242/dev.154856, 5 April 2018.
- G. Dalmasso et al., "Evolution in space and time of 3D volumetric images", in preparation.
Have you found this software useful for your research? Please cite it as:
M. Musy, G. Dalmasso, & B. Sullivan,
"vtkplotter, a python module for scientific visualization, analysis and animation of 3D objects
and point clouds based on VTK",
(version v8.9.0), Zenodo 2019, doi: 10.5281/zenodo.2561402, 10 February 2019.