What are the new features in Vega FEM 4.0?

Vega FEM 4.0 provides virtual tet meshing for nearly self-colliding and colliding triangle meshes [LB18]. It also improves the multi-threading efficiency of elastic force and stiffness matrix computations (via "stencil force models"). We also replaced pthreads with Intel TBB for multi-threading, and added support for cubic meshes to corotationalLinearFEM. We also provide an as-rigid-as-possible (ARAP) deformation implementation, and improved meshing with exact predicates.

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 to [LLVT03,Che95]), 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] (experimental feature), calculating the winding number for triangle meshes [JKSH13], Laplacian matrix of a tet mesh [XLCB15], calculating eigenmodes of a 3D mesh under constraints [HX16], 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 TetGen, or Stellar. 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 Jonathan Shewchuk, which can specify 3D geometry, to also support mesh material properties. Meshes given in Shewchuk's format (such as those produced by TetGen, or Stellar) 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.