The Vortex Core includes the following dynamics, collision detection, and solver features:
Dynamics
- Full collision response and reaction based on a robust and highly optimized dynamics library, with minimal CPU overhead for calculations
- State-of-the-art method of rigid-body dynamics calculation: Vortex resolves important issues involving contact physics and kinematic loops, allowing objects to be easily modified, extended, assembled and disassembled
- Assign object properties such as mass, inertia, center of mass, either manually or automatically based on their geometry
- Define material interaction properties such as friction, stiffness, damping, stiction, and restitution in physically meaningful units
- All object and interaction properties can be modified at runtime
- Support for multiple friction models ranging from frictionless to scalable approximation of Coulomb friction enables users to balance efficiency with accuracy
- Anisotropic friction allows objects to have different friction properties for different directions
- Extremely stable stacking of objects
- Choose between multiple solvers optimized for precision versus speed
- Scalable contact response capable of simulating large numbers of objects in real-time
- Kinematic and dynamic constraints, including multi-body constraints that can be added, removed and reconfigured at runtime
- Multiple constraint types such as ball and socket, hinge (revolute joint), spring, and distance; various vehicle suspension constraints such as universal, prismatic, screw, and gears; and a number of advanced constraints allowing users to precisely control relative linear and angular degrees of freedom
- Constraint degrees of freedom can be motorized, locked, or limited – all with or without compliance
- Fluid interaction supporting buoyancy, drag and Magnus forces
Collision Detection
- Fast and accurate object collision detection between large numbers of objects and the terrain, with minimal CPU overhead
- Geometrical primitives, terrains and complex polygon meshes. Vortex computes contact points, normals and penetration, with support for fast-moving objects, time-of-impact, and distance
- Optimized for speed: objects are automatically separated into groups – objects that are close to each other and need to be checked for collision or interference versus objects that are far apart and do not need these checks
- Efficient handling of large numbers of objects, and optimized object insertion and removal
- Collision pairs can be disabled for maximum user control over specific behaviours
- Level of detail: objects can be represented by actual geometry for accuracy or by simplified geometry for speed
- Sensor callbacks allow detection of geometry intersection without causing collision response
- Event handling: persistent user-information for colliding pairs allows users to schedule events based on collision or separation
- Support for a large number of collision types such as geometric primitives, composite object, plane, and heightfield
- Grasp analysis tool for computing the quality of a grasp given a set of finger contacts on an object
Solvers
- Multiple solver support: includes an accurate solver that uses a Linear Complementarity Problem (LCP) solution, which resolves many difficulties inherent in traditional recursive solvers, and a fast, more compliant iterative solver for very large systems
- Allows users to easily build models – and modify constraints, collision and part properties – at runtime
- Support for multi-core (parallel) processing by solving groups of rigid bodies, each in its own thread. Grouping can be overridden by users in order to break up large problems into smaller ones for efficiency
Full Support of Specialized Vortex Modules
Full integration with specialized Vortex modules such as: