https://user-images.githubusercontent.com/32848391/84578825-f1cc8b80-adc8-11ea-867b-a75a99f99a39.png


Downloads lics pythvers Documentation Built by gendocs https://zenodo.org/badge/DOI/10.5281/zenodo.2561402.svg

A lightweight python module for scientific visualization, analysis and animation of 3D objects and point clouds based on VTK and numpy.

Philosophy

Inspired by the vpython manifesto “3D programming for ordinary mortals”, vedo makes it easy to work wth three-dimensional objects, create displays and animations in just a few lines of code, even for those with less programming experience.

Download and Install:

pip install -U vedo

Check out the Git repository here: https://github.com/marcomusy/vedo

Windows-10 users can manually place this file vedo.bat on the desktop to drag&drop files to visualize. (Need to edit the path of their local Anaconda installation).

Features:

The module 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, check 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.

  • Fully customizable axis style.

  • Examples with SHTools package for spherical harmonics expansion of a mesh shape.

  • Integration with the Qt5 framework.

  • Draw latex-formatted formulas on the rending window.

  • Export a 3D scene and embed it into a html page.

  • Support for FEniCS/dolfin package.

  • Visualization of tensors.

  • Embed the 3D rendering in a jupyter notebook with the K3D backend.

  • Export a 3D scene and embed it into a web page.

  • Interoperability with the trimesh library.

Hello World example

In your python script, load a simple 3DS file and display it:

from vedo import datadir, show

show(datadir+'flamingo.3ds')
flam

Command-line interface

Visualize a mesh with:

vedo 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,DICOM,dem,nrrd,bmp,png,jpg]

Voxel-data (mhd, vti, slc, tiff, dicom) files can also be visualized with options -g, e.g.:

vedo -g examples/data/embryo.slc
https://user-images.githubusercontent.com/32848391/58336107-5a09a180-7e43-11e9-8c4e-b50e4e95ae71.gif

To visualize multiple files or files time-sequences try -n or -s options. Use -h for the complete list of options.

Use a slider to control isosurfacing of a volume:

vedo examples/data/head.vti
https://user-images.githubusercontent.com/32848391/56972083-a7f3f800-6b6a-11e9-9cb3-1047b69dcad2.gif

Load and browse a sequence of meshes:

vedo -s examples/data/2?0.vtk
https://user-images.githubusercontent.com/32848391/58336919-f7b1a080-7e44-11e9-9106-f574371093a8.gif

Visualize colorized voxels:

vedo --lego examples/data/embryo.tif
https://user-images.githubusercontent.com/32848391/56969949-71b47980-6b66-11e9-8251-4bbdb275cb22.jpg

Examples

Run any of the available scripts from with:

vedo --list
vedo -ir tube.py

More than 300 examples can be found in directories:

Apply a Moving Least Squares algorithm to obtain a smooth surface from a to a large cloud of scattered points in space (moving_least_squares2D.py):

rabbit

Simulation of a gyroscope hanging from a spring (gyroscope1.py):

gyro

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 (tunnelling2.py):

qsine2

Visualizing a Turing system of reaction-diffusion between two molecules (turing.py):

turing

Support for the FEniCS/dolfin platform for visualization of PDE and finite element solutions (see here.

https://user-images.githubusercontent.com/32848391/58368591-8b3fab80-7eef-11e9-882f-8b8eaef43567.gif

Mesh format conversion

The command vedo-convert can be used to convert multiple files from a format to a different one:

Usage: vedo-convert [-h] [-to] [files [files ...]]
allowed targets formats: [vtk, vtp, vtu, vts, ply, stl, byu, xml]

Example: > vedo-convert myfile.vtk -to ply