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?
Vega does not provide meshing capabilities. However, 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?
We don't have one right now, although Vega does compile under Windows. In the workspace, simply create separate entries for each Vega library, then compile each one separately. Do the same for the driver. Make sure you don't mix Multithreaded and Multithreaded DLL, as it may lead to linking errors. You may want to add post-compile events which copy the newly created .lib (as well as header files .h) into some canonical folder, so that other libraries and the driver can reference it.
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, 2008Under this definition,
II = tr(C^2) = lambda_1^4 + lambda_2^4 + lambda_3^4Some other references, however, define II as
II' = lambda_1^2 lambda_2^2 + lambda_2^2 lambda_3^2 + lambda_3^2 lambda_1^2It 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 have used it in a commercial application, and want to donate funding.
You are under no obligation to do so. If you want to donate funding, this is of course welcome; 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.