SOFA (Simulation Open Framework Architecture)
Encyclopedia
SOFA is an Open Source framework primarily targeted at real-time physical simulation, with an emphasis on medical simulation. It is mostly intended for the research community to help develop newer algorithms, but can also be used as an efficient prototyping tool or as a physics engine
. Based on an advanced software architecture, it allows to:
Currently, SOFA contains:
Physics engine
A physics engine is computer software that provides an approximate simulation of certain physical systems, such as rigid body dynamics , soft body dynamics, and fluid dynamics, of use in the domains of computer graphics, video games and film. Their main uses are in video games , in which case the...
. Based on an advanced software architecture, it allows to:
- Create complex and evolving simulations by combining new algorithms with existing algorithms
- Modify most parameters of the simulation (deformable behavior, surface representation, solver, constraints, collision algorithm, ...) by simply editing a XML file
- Build complex models from simpler ones using a scene graphScene graphA scene graph is a general data structure commonly used by vector-based graphics editing applications and modern computer games. Examples of such programs include Acrobat 3D, Adobe Illustrator, AutoCAD, CorelDRAW, OpenSceneGraph, OpenSG, VRML97, and X3D....
description - Efficiently simulate the dynamics of interacting objects using abstract equation solvers
- Reuse and easily compare a variety of available methods
- Transparently parallelize complex computations using semantics based on data dependencies
- Use new generations of GPUs through the CUDA API to greatly improve computation times
Currently, SOFA contains:
- Deformable modelsSoft body dynamicsSoft body dynamics is a field of computer graphics that focuses on visually realistic physical simulations of the motion and properties of deformable objects . The applications are mostly in video games and film. Unlike in simulation of rigid bodies, the shape of soft bodies can change, meaning...
: mass-springs, linear and co-rotational FEMFinite element methodThe finite element method is a numerical technique for finding approximate solutions of partial differential equations as well as integral equations... - Rigid modelsRigid bodyIn physics, a rigid body is an idealization of a solid body of finite size in which deformation is neglected. In other words, the distance between any two given points of a rigid body remains constant in time regardless of external forces exerted on it...
: articulated bodies based on penalties or reduced coordinates - Fluid models: SPHSmoothed particle hydrodynamicsSmoothed-particle hydrodynamics is a computational method used for simulating fluid flows. It has been used in many fields of research, including astrophysics, ballistics, volcanology, and oceanography...
, Eulerian (preliminary) - Collision models: spheres, triangular meshes, distance fields (preliminary); with AABB-tree or octree bounding volume hierarchies
- Collision detectionCollision detectionCollision detection typically refers to the computational problem of detecting the intersection of two or more objects. While the topic is most often associated with its use in video games and other physical simulations, it also has applications in robotics...
methods: proximity, continuous (preliminary) - Collision response methods: (implicit) penalties, LCP-based constraints
- Mechanical integration schemes: Euler explicit, RK2Runge–Kutta methodsIn numerical analysis, the Runge–Kutta methods are an important family of implicit and explicit iterative methods for the approximation of solutions of ordinary differential equations. These techniques were developed around 1900 by the German mathematicians C. Runge and M.W. Kutta.See the article...
, RK4Runge–Kutta methodsIn numerical analysis, the Runge–Kutta methods are an important family of implicit and explicit iterative methods for the approximation of solutions of ordinary differential equations. These techniques were developed around 1900 by the German mathematicians C. Runge and M.W. Kutta.See the article...
, static, implicit euler using PCG (Projected Conjugate Gradient)
See also
- Graphics processing unitGraphics processing unitA graphics processing unit or GPU is a specialized circuit designed to rapidly manipulate and alter memory in such a way so as to accelerate the building of images in a frame buffer intended for output to a display...
(GPU) - Soft body dynamicsSoft body dynamicsSoft body dynamics is a field of computer graphics that focuses on visually realistic physical simulations of the motion and properties of deformable objects . The applications are mostly in video games and film. Unlike in simulation of rigid bodies, the shape of soft bodies can change, meaning...
- Rigid body dynamicsRigid body dynamicsIn physics, rigid body dynamics is the study of the motion of rigid bodies. Unlike particles, which move only in three degrees of freedom , rigid bodies occupy space and have geometrical properties, such as a center of mass, moments of inertia, etc., that characterize motion in six degrees of...
- Collision detectionCollision detectionCollision detection typically refers to the computational problem of detecting the intersection of two or more objects. While the topic is most often associated with its use in video games and other physical simulations, it also has applications in robotics...