Skip to content
/ vedo Public
forked from marcomusy/vedo

A python module for scientific analysis of 3D objects based on VTK

License

Notifications You must be signed in to change notification settings

zymale/vedo

Β 
Β 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

vlogo

Codacy Badge Downloads lics Anaconda-Server Badge Ubuntu 20.10 DOI CircleCI

vedo is a lightweight and powerful python module for scientific analysis and visualization of 3d objects.

✨ Philosophy

Inspired by the vpython manifesto "3D programming for ordinary mortals", vedo makes it easy to work with three-dimensional meshes and volumes, creating displays and animations in just a few lines of code, even for less experienced programmers.

vedo is based on numpy and VTK, with no other dependencies.

πŸ’Ύ Installation

pip install vedo

# To get the latest dev version use instead:
pip install -U git+https://github.com/marcomusy/vedo.git

# Or from the conda-forge channel:
conda install -c conda-forge vedo

πŸ“Œ Done? Run any of the built-in examples. In a terminal, type:

vedo -r covid19

Visualize a file from web URL (or your dropbox!), type:

vedo https://vedo.embl.es/examples/data/panther.stl.gz

Visualize a whole scene, type:

vedo https://vedo.embl.es/examples/geo_scene.npy

πŸ“™ Documentation

Automatically generated documentation is available here.

πŸ“Œ Need help? Have any question, or wish to ask for a missing feature? Do not hesitate to open a issue (or send an email).

🎨 Features

The vedo library includes a large set of working examples for a wide range of functionalities:

working with polygonal meshes and point clouds (click to expand)
  • Import meshes from VTK format, STL, Wavefront OBJ, 3DS, Dolfin-XML, Neutral, GMSH, OFF, PCD (PointCloud),
  • Export meshes as ASCII or binary to VTK, STL, OBJ, PLY ... formats.
  • Analysis tools like Moving Least Squares, mesh morphing and more..
  • Tools to visualize and edit meshes (cutting a mesh with another mesh, slicing, normalizing, moving vertex positions, etc..).
  • Split mesh based on surface connectivity. Extract the largest connected area.
  • Calculate areas, volumes, center of mass, average sizes 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 of a mesh.
  • Create primitive shapes: spheres, arrows, cubes, torus, ellipsoids...
  • Generate glyphs (associate a mesh to every vertex of a source mesh).
  • Create animations easily by just setting the position of the displayed objects in the 3D scene. Add trailing lines and shadows to moving objects is supported.
  • Straightforward support for multiple sync-ed or independent renderers in the same window.
  • Registration (alignment) of meshes with different techniques.
  • Mesh smoothing.
  • Delaunay triangulation in 2D and 3D.
  • Generate meshes by joining nearby lines in space.
  • Find the closest path from one point to another, traveling along the edges of a mesh.
  • Find the intersection of a mesh with lines, planes or other meshes.
  • Interpolate scalar and vectorial fields with Radial Basis Functions and Thin Plate Splines.
  • Add sliders and buttons to interact with the scene and the individual objects.
  • Visualization of tensors.
  • Analysis of Point Clouds:
  • Moving Least Squares smoothing of 2D, 3D and 4D clouds
  • Fit lines, planes, spheres and ellipsoids in space
  • Identify outliers in a distribution of points
  • Decimate a cloud to a uniform distribution.
working with volumetric data, and tetrahedral meshes
  • Import data from VTK format volumetric TIFF stacks, DICOM, SLC, MHD and more
  • Import 2D images as PNG, JPEG, BMP
  • Isosurfacing of volumes
  • Composite and maximum projection volumetric rendering
  • Generate volumetric signed-distance data from an input surface mesh
  • Probe volumes with lines and planes
  • Generate stream-lines and stream-tubes from vectorial fields
  • Slice and crop volumes
  • Support for other volumetric structures (structured and grid data)
plotting and histogramming in 2D and 3D
  • Polygonal 3D text rendering with Latex-like syntax and unicode characters, with 14 different fonts.
  • Fully customizable axis styles
  • donut plots and pie charts
  • Scatter plots in 2D and 3D
  • Surface function plotting
  • 1D customizable histograms
  • 2D hexagonal histograms
  • Polar plots, spherical plots and histogramming
  • Draw latex-formatted formulas in the rendering window.
  • Quiver, violin, whisker and stream-line plots
  • Graphical markers analogous to matplotlib
integration with other libraries
  • Integration with the Qt5 framework.
  • Support for FEniCS/Dolfin platform for visualization of PDE/FEM solutions.
  • Interoperability with the trimesh and pyvista libraries.
  • Export 3D scenes and embed them into a web page.
  • Embed 3D scenes in jupyter notebooks with K3D (can export an interactive 3D-snapshot page here).

⌨ Command Line Interface

Visualize a polygonal mesh from a terminal window simply with:

vedo my_mesh.obj
# valid formats: [vtk,vtu,vts,vtp,vtm,ply,obj,stl,3ds,dolfin-xml,neutral,gmsh,
#                 pcd,xyz,txt,byu,tif,off,slc,vti,mhd,dcm,dem,nrrd,nii,bmp,png,jpg]

Volumetric files (mhd, vti, slc, tiff, DICOM etc..) can be visualized in different modes:

Volume 3D slicing
vedo --slicer embryo.slc
Ray-casting
vedo -g
2D slicing
vedo --slicer2d
Colorize voxels
vedo --lego
slicer isohead viz_slicer lego

Type vedo -h for the complete list of options.

🐾 Examples

vedo currently includes 300+ working examples and notebooks.

airplanes greyscott quatumsine
Create a simple 3D animation in exactly 10 lines of code. Turing system of reaction-diffusion between two molecules. Quantum-tunnelling of a particle in a box hitting a sinusoidal potential.
trimesh dolf whisker
Interoperability with the trimesh library. Support for the FEniCS/Dolfin library for PDE and finite element solutions. Advanced 2D histogramming and plotting capablities.

Gallery

Run any of the built-in examples from command line by typing:

vedo --run covid19

covid
covid19
caption
caption
fonts3d
font
fonts
fonts
wave_eq
wave_equation
doubleslit
doubleslit
tun1
tunnelling1
image
morphing_2d
rabbits
least_squares2d
lut
mesh_lut
psimu
particle_simulator
gyro
gyroscope1
customaxes
customaxes
intersect
intersect2d
goniom
goniometer

tet_threshold
density
plot_density3d
mquality
meshquality
levelterrain
isolines

tet_cutmesh1
geologic
geological
multirender
multirender
cartoony
cartoony

streamlines4
graph1
graph_network
lineage_graph
graph_lineage
siluette
silhouette1

silhouette2
gyro
gyroscope2
thinplate_grid
thinplate_grid
trail
trail
quadmorph
quadratic_morphing
shrink
shrink
mesh_custom
mesh_custom
spring
spring
lorenz
lorentz
sliders
sliders1
fitspheres1
fitspheres1
fxy
fxy
histogram
histo_1D
plot_err_band
plot2_errband
histogram2D
histo_2D
histoHexagonal.py
histo_hex
sphericPlot
plot5_spheric
boolean
boolean
brownian2D
brownian2D
gas
gas
self_org_maps2d
self_org_maps2d
geodesic
geodesic
convexHull
convexHull
flatarrow
flatarrow
latex
latex
legosurface
legosurface
streamlines2
streamlines2
office
office.py
value-iteration
value-iteration
shadow
shadow
multiple_pendulum
multiple_pend

interpolateVolume
histo_polar
histo_polar
streamplot
plot7_stream
violin
histo_violin
plot3_pip
plot3_pip
histo_spheric
histo_spheric
readvts
read_vts
donutPlot
donut
extrude
extrude
plotxy
plot1_errbars
isohead viz_raycast viz_slicer lego
elastodyn
elastodynamics
heatconv
heatconv
stokes
stokes
lshape
stokes_lshape

πŸ“œ References

Presentations at interantional conferences:

  • M. Musy, G. Dalmasso, J. Sharpe and N. Sime, "vedo: plotting in FEniCS with python", (link). Poster at the FEniCS'2019 Conference, Carnegie Institution for Science Department of Terrestrial Magnetism, Washington DC, June 2019.
  • G. Dalmasso, "Evolution in space and time of 3D volumetric images". Talk at the Conference for Image-based Modeling and Simulation of Morphogenesis. Max Planck Institute for the Physics of Complex Systems, Dresden, Germany, March 2019.

Scientific publications leveraging vedo (formerly known as vtkplotter):

  • X. Diego et al.: "Key features of Turing systems are determined purely by network topology", Physical Review X, 20 June 2018.
  • M. Musy, K. Flaherty et al.: "A Quantitative Method for Staging Mouse Limb Embryos based on Limb Morphometry", Development, 5 April 2018, doi: 10.1242/dev.154856.
  • G. Dalmasso et al., "Evolution in space and time of 3D volumetric images", in preparation.
  • F. Claudi, A. L. Tyson, T. Branco, "Brainrender. A python based software for visualisation of neuroanatomical and morphological data." bioRxiv 2020.02.23.961748; doi: https://doi.org/10.1101/2020.02.23.961748

Have you found this software useful for your research? Star ✨ the project and cite it as:

M. Musy et al., "vedo, a python module for scientific visualization and analysis of 3D objects and point clouds based on VTK (Visualization Toolkit)", Zenodo, 10 February 2019, doi: 10.5281/zenodo.2561402.

embl_logo

About

A python module for scientific analysis of 3D objects based on VTK

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Python 99.9%
  • Other 0.1%