What are the new features in Vega FEM 3.1?
Vega FEM 3.1 is a minor release. Changes include
positive-definite invertible materials, improved
Delaunay mesher and tet mesher, improved code style, and bug fixes.
What are the new features in Vega FEM 3.0?
Vega FEM 3.0 provides elastic energy functions for all the materials in Vega,
improved cloth implementation [BW98],
signed distance field calculation from manifold meshes,
or from general ``polygon soups'' [XB14],
marching cubes with topological guarantees (similar
quality triangular meshing of distance field
level sets [ORY05],
Delaunay tetrahedralization of an arbitrary point set in 3D [BOW81],
(including efficiently adding new points),
constrained Delaunay 3D tet meshing with refinement [Si08,SG11]
calculating the winding number for triangle meshes [JKSH13],
Laplacian matrix of a tet mesh [XLCB15],
calculating eigenmodes of a 3D mesh under
improved PARDISO solver wrapper, and bug fixes.
What are the new features in Vega FEM 2.2?
Version 2.2 is a minor release. We fixed a few small issues and memory leaks.
We also accelerated some (non-core) parts of the library.
What are the new features in Vega FEM 2.1?
Orthotropic materials [LB14], i.e., anisotropic materials that exhibit different stiffnesses in three orthogonal directions.
Also included is a binary .vegb format, faster loading of volumetric meshes with many regions, and support for the clang C/C++ compiler (Mac OS X Mavericks).
We also fixed known bugs and made numerous code improvements.
What are the new features in Vega FEM 2.0?
Model reduction (Barbic and James [BJ05]), cloth solver (Baraff-Wikin [BW98]), rigid body dynamics (single body).
Also, isotropic materials are improved using (optional) compression resistance. This makes it possible to simulate very soft
materials very stably. It is very cool, try it out! There are numerous small improvements to the API and code as well.
How can I create volumetric meshes for use with Vega?
You can use the routines in the mesher library. These routines can generate quality tet meshes that mesh an isosurface of a signed distance field. You can calculate the signed distance field using the “signed distance field from polygon soup” pipeline [XB14] available in the distanceField library. This pipeline was used, for example, to generate the tet mesh for our turtle, asian dragon and simple bridge (tet) examples. Voxel meshes can be generated using the objMesh library, see the ObjMeshOffsetVoxels class; this was used for the simple bridge (vox) and tower crane examples.
In addition, any 3D tet or cubic mesh can be loaded into Vega
(.veg file format).
You can use any external mesher, such as for example
There are many commercial meshers available.
What is the .veg file format?
Before Vega, there was no free file format to specify 3D
volumetric meshes with material properties.
So, we extended the popular free format of
which can specify 3D geometry, to also support mesh material properties.
Meshes given in Shewchuk's format (such as those produced
by TetGen, or
are trivially loadable into Vega.
If material specification is omitted, default material parameters
are assigned to the entire mesh.
The Vega User's Manual extensively documents the .veg file format.
The .veg file format is free.
Can Vega simulate non-homogeneous material properties?
Yes. See the turtle example where the backshell was made 100x
stiffer than the rest of the turtle.
Can Vega simulate free-flying (unconstrained) deformable objects?
Yes. Simply specify zero constraints when initializing the integrator.
How can I resolve collisions?
Vega does not include collision detection capabilities.
However, you can use any external collision detection library,
and set the resulting contact forces as external forces in Vega.
I want to embed a triangle mesh into a volumetric mesh,
and render the triangle mesh. Does Vega support this?
Yes. It should be noted that all simulations
in Vega run on volumetric meshes (except cloth simulations).
However, you can transfer (in real-time, or offline)
the volumetric mesh deformations
to the embedded triangle mesh using the "interpolate" routine
in the VolumetricMesh class. The technique uses barycentric
interpolation. You can see this in the turtle example (and other examples).
See the source code of the "interactiveDeformableSimulator" driver.
How can I compute the mass matrix?
You can use "utilities/volumetricMeshUtilities/generateMassMatrix".
It calls a routine from "generateMassMatrix.h" in the "volumetricMesh" library,
which you can call directly from your code.
How can I compute the stiffness matrix?
Use "GetTangentStiffnessMatrix" (or "ComputeStiffnessMatrix") in any of the several provided material classes.
Is there a MS Visual Studio project (solution) file available?
Yes. It is included with Vega FEM 3.0. Please see the "Microsoft Visual Studio" paragraph in Section 1.1
in the User's Manual.
What are the physical units used in Vega?
Input 3d meshes: meters (m)
Time: seconds (s)
Forces: Newton (N)
Young's modulus: Pa=N/m^2
Poisson's ratio: no unit (dimensionless)
How are the invariants I, II, III defined (for isotropic materials)?
Vega follows the definition in:
BONET J., WOOD R. D.: Nonlinear Continuum Mechanics for Finite
Element Analysis, 2nd Ed. Cambridge University Press, 2008
Under this definition,
II = tr(C^2) = lambda_1^4 + lambda_2^4 + lambda_3^4
Some other references, however, define II as
II' = lambda_1^2 lambda_2^2 + lambda_2^2 lambda_3^2 + lambda_3^2 lambda_1^2
It is possible to easily convert from II to II'; the two are related via I^2.
I want to voxelize my triangle mesh. How do I do so?
Use the functionality in the objMesh library, objMeshOffsetVoxels.h.
Alternatively, you can use the GUI in the LargeModalDeformationFactory.
Input is arbitrary triangle mesh ("polygon soup"), output is a
volumetric mesh, consisting of the cubes, in the .veg format.
Optionally, the code allows you to flood-fill the interior, which is
useful for solid objects.
Where can I learn more about FEM, deformable objects, and
the methods implemented in Vega?
Our research paper on Vega
(Computer Graphics Forum Journal) explains the
implemented methods and analyzes the performance of Vega.
You can also read the cited papers, and visit the webpage of a
SIGGRAPH course on FEM for deformable object simulation.
I like Vega. I want to donate funding.
If you want to donate funding, this is of course welcome.
You can contact Jernej Barbic at firstname.lastname@example.org,
The funds will be used for further academic research on Vega and deformable
object simulation. In any case, we will appreciate if you let us know that
you used Vega in your application.