Simulating stiff materials in applications where deformations are either not significant or else can safely be ignored is a fundamental task across fields. Rigid body modeling has thus long remained a critical tool and is, by far, the most popular simulation strategy currently employed for modeling stiff solids. At the same time, rigid body methods continue to pose a number of well known challenges and trade-offs including intersections, instabilities, inaccuracies, and/or slow performances that grow with contact-problem complexity. In this paper we revisit the stiff body problem and present ABD, a simple and highly effective affine body dynamics framework, which significantly improves state-of-the-art for simulating stiff-body dynamics. We trace the challenges in the rigid-body methods to the necessity of linearizing piecewise-rigid trajectories and subsequent constraints. ABD instead relaxes the unnecessary (and unrealistic) constraint that each body’s motion be exactly rigid with a stiff orthogonality potential, while preserving the rigid body model’s key feature of a small coordinate representation. In doing so ABD replaces piecewise linearization with piecewise linear trajectories. This, in turn, combines the best of both worlds: compact coordinates ensure small, sparse system solves, while piecewise-linear trajectories enable efficient and accurate constraint (contact and joint) evaluations. Beginning with this simple foundation, ABD preserves all guarantees of the underlying IPC model we build it upon, e.g., solution convergence, guaranteed non-intersection, and accurate frictional contact. Over a wide range and scale of simulation problems we demonstrate that ABD brings orders of magnitude performance gains (two- to three-order on the CPU and an order more utilizing the GPU, obtaining speedups) over prior IPC-based methods with a while maintaining simulation quality and nonintersection of trajectories. At the same time ABD has comparable or faster timings when compared to state-of-the-art rigid body libraries optimized for performance without guarantees, and successfully and efficiently solves challenging simulation problems where both classes of prior rigid body simulation methods fail altogether.
Rigid body dynamics, Reduced model, CCD, Barrier function
††submissionid: 169††journal: TOG††ccs: Computing methodologies Physical simulationFigure 1. Geared system. We propose an affine body dynamics framework (ABD) to efficiently and robustly simulate close-to-rigid contacting objects. ABD significantly eases the collision and contact processing costs over rigid body modeling while obtaining intersection-free trajectories leveraging barrier-based frictional contact model. Here, in a challenging stress-test benchmark we simulate a complex geared system composed of 28 toothed gears with frictional contact resolving all interactions. The combined gear set mesh is comprised of over M surface triangles. A torque applied to the actuated gear (highlighted in red arrow) drives the motion of the entire system via contact, with well over a quarter of all surface elements in active contact in every time step. Here we find that all the existing rigid body simulation algorithms, including rigid-IPC, fail to make progress, while ABD robustly simulates the example to completion. ABD enables large time step sizes (e.g., with sec) even for such challenging, large displacement (rotation) contact processing. For a time step size of sec, ABD simulates each step in less than sec on an intel i9 CPU (multi-threaded), while the simulation runs at an interactive rate on a 3090 GPU (- time steps per second).
1. Introduction
The simulation of highly stiff and so close-to-rigid materials remains a critical task in diverse applications ranging from animation and computer vision to robotics and geomechanics. A long-standing and natural strategy then is to model these bodies at the limit of stiffness and so treat them as exactly rigid. Equipped with just rotational and translational degrees of freedom (DOFs) this simplification enables the computational efficiency of classic rigid body methods as they utilize orders of magnitude fewer DOFs when deformations can be excluded.
At the same time this minimal representation for rigid bodies poses several fundamental difficulties of its own in exchange for optimized system size. The first being that moving from a flat continuum model to rigid (SE(3))
coordinates introduces significant nonlinearities that must be resolved. The second being that infinite stiffness implies applied forces, and especially contact responses, are communicated instantaneously across the material domain. In combination these two issues have long challenged both rigid body models (e.g., Painlevé’s paradox) and the downstream simulation methods derived from them. State-of-the-art rigid body methods have long focused on efficient velocity (twist) level solutions. However, in doing so, these methods tend to generate undesired positional errors in the form of intersections and instabilities.
To address these issues a position-level barrier method for rigid bodies was recently introduced by Ferguson and colleagues (2021). Applying the incremental potential contact (IPC) model (Li et al., 2020) to the rigid body formulation, the resulting rigid-IPC method provides robust intersection-free simulation of rigid solids with frictional contact. However, here a third challenge posed by rigid body models limits the efficiency and applicability of rigid-IPC: accurately tracing a piecewise-rigid trajectory is much more difficult than for a piecewise-linear trajectory. Unfortunately, doing so across numerous continuous-collision detection (CCD) operations throughout computation is a must for the non-intersecting guarantee. Rigid-IPC addresses this third challenge by conservatively subdividing rigid transformations into piecewise-linear subsequences i.e., the curved CCD. While proven to be viable, the expense remains substantial – especially as CCD is invoked heavily throughout each simulation step. As a result, the overall performance of rigid-IPC is close to (and occasionally slower than) comparable (appropriately stiffened) fullspace finite element method (FEM) IPC simulations (Li et al., 2020). Here the curved CCD in rigid-IPC severely undermines the advantage of its small DOF representation.
Beginning with this analysis, our takeaways are that the key advantage of rigid body models is not the rigidity assumption but rather the compact representation. Indeed, the rigidity assumption is neither necessary, efficient, nor particularly accurate since no material is perfectly rigid. Following this reasoning, we approach the classic stiff-body problem from a different perspective, without the dedicated constraint and resultant limitations that the motion be exactly rigid. Specifically, we construct an affine-body dynamics (ABD) model, directly stiffened to obtain close-to-rigid trajectories and augmented with an IPC-type barrier. ABD preserves all guarantees of the IPC model including solution convergence, guaranteed non-intersection, and accurate frictional contact. However, discrete steps in ABD are now, as in the FEM case, piecewise linear, enabling us to utilize efficient linear CCD routines. Likewise ABD remains compact, utilizing 12 DOFs per body – a bit more than rigid bodies but still compact enough for efficient system solves. In turn the relaxation from the rigidity constraint allows ABD to significantly outperform the rigid-IPC method across all benchmarks (ranging from two- to three-order speedups for side-by-side comparison on the CPU, and an order-of-magnitude further improvement enabled by our GPU implementation), and to likewise successfully simulate problems where rigid-IPC fails.
At the same time, by combining compact representation and efficient collision processing, ABD also exhibits clear advantages in quality, reliability and even performance when compared to off-the-shelf rigid body simulation libraries. Here these libraries (we use Bullet (Coumans, 2015) as our baseline for comparison; see Section 5 for a discussion of this choice) are often optimized for speed over robustness and guarantees. Nevertheless, without requiring the precomputation of collision proxies (e.g., the convex decompositions required by Bullet, Mujoco (Todorov
et al., 2012), PhysX and Flex (Nvidia, 2011)), ABD remains closely competitive in performance on small-scale examples, while obtaining significantly faster simulations on larger and/or more challenging scenarios.
ABD is also able to simulate a wide range of challenging modeling problems where existing rigid body methods and libraries fail altogether. As an example, in Fig. 1 we demonstrate a driven mechanical system with all gear-to-gear interactions processed directly via frictional contact. As we apply an external torque to the driving gear, the entire mechanism moves with well over a quarter of the mesh’s M triangles actively in contact during each time step. Here we find rigid-IPC (curved CCD failures) and Bullet (severe intersections) are both unable to simulate this mechanism even as we adjust algorithm settings and time step sizes conservatively. ABD simulates the scene robustly without algorithm tuning. Under a time step of sec, ABD simulates each step/frame in sec on the CPU (multi-threaded) and reaches an interactive speed on the GPU ranging from to FPS.
In a nutshell, ABD provides a new stiff-body simulation framework suitable for all rigid-body-type modeling problems that offers similar (or improved) performance when compared to existing rigid body libraries (optimized for performance), while providing guarantees of non-intersection, accurate contact, and convergent implicit solves that they do not. ABD does not require pre-computed convex part proxies for simulation geometries; frees users from time-consuming per-scene parameter sweeps to find parameters that work; and ensures successful simulation completion in challenging cases where prior methods fail altogether.
Our technical contribution is simple and highly effective – a relaxation replacing strictly rigid bodies by stiff affine bodies. This “trivial” strategy leads to non-trivial improvements on a fundamental simulation problem in terms of both efficiency and robustness. Here, based our above analysis of prior methods, we see that our resulting ABD framework balances tradeoffs between compact representation, nonlinearity, rigidity, and reliable guaranteed contact resolution.
In addition to this high-level idea, we also design a novel collision culling algorithm dedicated for our simulation and a corresponding parallel matrix assembly strategy. We demonstrate the efficacy and efficiency of ABD across extensive benchmark testing and comparisons. Keeping all favored guarantees, the observed speedup over the state-of-the-arts is often two- to three-order, i.e., over faster, and reaches on a GPU. We hope ABD will provide the rapidly growing and diverse community of simulation users with a reliable and efficient tool suitable to swap in for all rigid body-type applications.
2. Related Work
A rigid body is an idealization, which simplifies a highly stiff object. External stimulus like forces or impulses are propagated almost instantaneously across the object eliminating relative deformations. This property is normally handled kinematically i.e., by directly formulating rigid body models with SE(3) coordinates. Rigid body models have been extensively studied by the graphics community dating back to the pioneering work of Baraff (1989). We refer the reader to a comprehensive survey from Bender and colleagues (2014), which covers a wide spectrum of classic rigid body simulation techniques.
The primary focus of rigid body problems is typically at the resolution of the collision and contact. Intuitively, objects should never intersect with each other at any instance during the simulation. Enforcing this requirement has traditionally lead to algorithms based on linear complementarity programming (LCP) (Baraff, 1994, 1995; Trinkle
et al., 2001; Stewart, 2000). One needs to carefully search within the combinatorial space for an approximation of a feasible configuration, while the interaction among bodies in contact is generally based on impulses rather than forces (Baraff, 1989). The LCP-based contact problem is known to be NP-Hard due to the indeterminacy of which contacting nodes are contributing the collision impulse (Baraff, 1991). Alternate solvers formulated on approximations of velocity-level LCPs have also been popular (Erleben, 2007; Kaufman
et al., 2005; Anitescu and
Potra, 1997) for improved solvability. Yet, the resulting system remains non-convex and challenging to solve with accuracy for complex scenes. Irrespective of the accuracy of the solution, here the required constraint linearization means that intersections leading downstream to artifacts like drifting and tunneling can and will result. To reduce these artifacts, additional constraint stabilizations are often employed (Cline and Pai, 2003; Baumgarte, 1972; Moreau, 1988) however this, in turn can introduce new instability artifacts like popping. In addition to rigid bodies, LCP modles are also widely used for contact modeling among non-rigid objects (Hauser
et al., 2003; Pauly
et al., 2004; Song and Kumar, 2003; Duriez
et al., 2005; Otaduy
et al., 2007).
For small-scale problems, a direct LCP solver could be used. When the complexity and the dimensionality increase, iterative LCP solvers stand as a more efficient option. Here successful designs of various iterative methods for LCP-based contacts such as Gauss-Seidel (Erleben, 2007), PROX (iterative proximal operator) (Erleben, 2017), surrogate constraints (Kaufman
et al., 2005), accelerated gradient descent (Mazhar
et al., 2015), staggered projection (Kaufman
et al., 2008), and adaptive merging (Coevoet
et al., 2020) have all been applied.
Penalties are also another popular option widely used to process collisions (Terzopoulos et al., 1987; Teschner et al., 2005). Instead of imposing inequality constraints, a penalty method often chooses a spring-like repulsion mechanism based on the penetration depth between two objects (Fisher and Lin, 2001; Hasegawa et al., 2004; Drumwright, 2007). While computationally simple, the penalty method fails for fast-moving models or simulations under large time steps and often requires significant manual tuning of stiffness parameters per scene. Its stability can be significantly enhanced using implicit formulations coupled with CCD (Xu
et al., 2014; Tang
et al., 2012). Nevertheless, interpenetration still can and will result. This defect limits its wider use beyond graphics, where visual plausibility is not the only concern. Recently, Müller and colleagues also proposed a position-based rigid body framework (Müller et al., 2020). Unlike classic rigid body algorithms, this method uses PBD-like constraint projection (Müller et al., 2007; Macklin
et al., 2016) to process multiple-body dynamics.
Collision detection is another important procedure for modeling rigid bodies with contacts. In general, a collision could occur between any triangle pair of two objects, and an exhaustive triangle-based collision detection is infeasible for high-resolution models. To this end, a commonly adopted method is to use some bounding volume hierarchy (BVH) (Zachmann and
Langetepe, 2003) to avoid excessive triangle-triangle intersection tests. This pre-screening procedure is known as collision culling. Different BV types have been explored such as AABB (Bergen, 1997), OBB (Gottschalk
et al., 1996), bounding sphere (Hubbard, 1995; James and Pai, 2004), Boxtree (Zachmann, 2002), spherical shell (Krishnan et al., 1998) and so on. As the geometry of the model does not change in rigid body models, BVH updates become particularly convenient – the per-body rigid transformation can be directly applied to update the BVH instead of re-building it from scratch (as opposite to deformable objects). In some existing rigid body packages e.g., Bullet library (Coumans, 2015), the collision detection does not apply to the surface triangles directly but rather to a volumetric proxy of the model, formed of convex components – most often obtained by via a convex decomposition. While methods like Bullet require these convex proxies for robust processing this proxy also helps as an acceleration for collision detection. In this paper, we provide a new culling method to accelerate for collision detection for rigid bodies and ABD. Our method leverages the fact that the colliding region between two rigid bodies often constitutes a very small fraction of their surfaces. Based on this observation, we create a BVH only covering the overlapping region of two bodies for a more effective culling.
Discrete collision detection (DCD) checks for collisions or penetrations at a specific time instance. This method could miss inter-penetrations if the detection is not performed frequently enough. Alternatively, CCD checks the possible overlap of the trajectories of the surface primitives and returns the first time of impact (TOI) (Bridson
et al., 2002; Redon
et al., 2005). The overlap test for triangle-vertex and edge-edge becomes a cubic polynomial, and there are several root-finding algorithms are available for solving the TOI (Redon
et al., 2005; Brochu
et al., 2012; Tang
et al., 2014). In a recent contribution from Wang and colleagues (2021), a more stable root-finding algorithm was proposed based on an improved inclusion.
Lastly in this section, we would like to discuss our most closely related work on rigid-IPC from Ferguson and colleagues (2021). Rigid-IPC features a new rigid body formulation, where contact is modeled with a barrier-based potential i.e., the IPC (Li et al., 2020; Li, 2020) model. Conceptually, IPC is similar to the implicit penalty method (e.g., as in (Tang
et al., 2012)), which produces a repulsion force pushing apart two contacting objects. However, due to the dedicated design of the barrier function, IPC provides guaranteed intersection-free collision resolution when appropriately combined with a CCD-filtered linear search. When compared to existing contact handling methods, IPC has demonstrated a superior performance – it is significantly faster than LCP-based solutions for complicated contacts where LCP-based methods often fail altogether and much more robust than regular penalty methods with user-specified accuracy bounds. This method has been broadly applied to elastodynamics simulation (Li et al., 2020), codimensional models (Li
et al., 2021b), embedded interfaces (Choo
et al., 2021), FEM-MPM coupling (Li
et al., 2021a), deformation processing (Fang
et al., 2021), and reduced models (Lan
et al., 2021). Rigid-IPC transplants classic rigid body models to the framework of IPC providing significantly improved reliability in contact processing. Unfortunately, this also comes at a cost – strictly rigidity motion imposes significant computational challenges. The trajectory in rigid-IPC becomes curved. In order to successfully compute TOI in curved CCD, Ferguson and colleagues (2021) subdivide the rigid trajectory into piece-wise line segments, which becomes the new bottleneck of the simulation. We argue that the success of IPC has already proven the feasibility of using smooth approximation to substitute hard constraints (even the approximation itself could be stiff), why not use another smooth approximation for the rigidity constraint in traditional rigid body modeling? ABD is then devised following this intuition. The results are exciting: ABD is three-order faster than rigid-IPC. With our novel culling algorithm and parallel Hessian assembly, the speedup over rigid-IPC scales even further. Likewise, as ABD provides stiff compliance (as in real-world stiff materials) tight almost rigid parts robustly fit together where an absolutely strict rigidity model can fail. Finally, as in rigid-IPC, ABD provides user-controllable solution and contact accuracies with solutions always reaching the specified tolerances.
3. ABD Kinematics
We begin by constructing a flat kinematics via affine coordinates. We equip each simulated body in our domain with a time-varying linear transform , and a translation . In the following we often store per-body configuration in the vector form as: , with the transform , then stored in row order.
Each material point in body has a body frame (equivalently rest) position with its corresponding world frame coordinates given by the affine map:
(1)
and its velocity,
(2)
Here note that is constant across all configuration changes, where is a 3 by 3 identity matrix.
3.1. Kinetic Energy
Given a mass density distribution, , over the body domain, , the kinetic energy of each affine body is then
(3)
with the generalized mass matrix for each affine body defined as:
(4)
Here we note an additional convenience of ABD: for flat affine coordinates we obtain a constant mass matrix. In turn this ensures that the equations of motion for affine bodies, unlike rigid bodies, do not add nonlinear Coriolis-type forces. Instead, they are embodied as generalized internal forces.
With the total potential energy the free ABD is then simply the equations of motion:
(5)
where external forces , applied at material points , are included as .
3.2. Orthogonality Potential
In place of SE(3) coordinates we rigidify each affine body with a stiff orthogonality potential
(6)
scaled by the stiffness and the body’s volume . We apply a large stiffness (GPa) to ensure the deformation on the body is sufficiently suppressed and negligible.
As we relax the rigidity constraint, we instead apply a highly stiff penalty term. Generally engineering rule of thumb suggests that stiff penalties should be avoided in simulation, as they tend to exacerbate the numerical difficulties of computing with nonlinear potentials. However, we observe that contact and collision forces (irrespective of whether they are treated via constraints, penalties springs, or barriers) introduce a much more dominant stiffness to the system. In our case this already requires handling system solves with a robust Newton-type algorithm so that the overhead of a single, additional stiff orthogonality potential per body is indifferent. In practice, as we show in Section 5, directly stiffened affine systems significantly improve in performance over comparable systems that resolve rigid motion explicitly.
The stiff potential itself provides the effective constitutive model for the affine bodies – modulating their collision response upon impact (and so intrinsically handling restitution). While is a natural choice for close-to-rigid motion (Moser and Veselov, 1991), it is never exclusively suited. Indeed affine bodies could alternately be equipped with the ARAP energy (Igarashi
et al., 2005; Alexa
et al., 2000; Sorkine and Alexa, 2007), i.e., for being the polar decomposition, to enforce rigidity, or else neo-Hookean, or any number of other rotation-invariant hyperelastic energies (Bonet and Wood, 1997). However, we find that the orthogonality potential is both effective and efficient. requires no expensive decompositions (as opposite to ARAP) – it can be computed as a polynomial
(7)
leading to more efficient evaluations of energy gradient and Hessian:
(8)
In comparison, energy operations for affine bodies with are over and faster than applying ARAP and neo-Hookean models respectively.
4. Affine IPC
We simulate systems of affine bodies with triangulated boundaries. Following Li and colleagues (2020), for each affine body , we construct a discrete incremental potential (IP), , whose stationary points give the unconstrained time step update:
(9)
Here, is the time step size. is a known vector depending on the body state from the previous step. is the per-body external force (i.e., in Eq. (5)). Unlike rigid body dynamics111Rigid body models require Poisson or constrained Lagrangian methods for numerical time integration (Hairer and
Vilmart, 2006)., flat equations of motion of ABD allows us to directly apply IPs for a broad range of standard implicit time integration methods (Li et al., 2020; Li
et al., 2021b).
Setting as the stacked vector of all the bodies, we construct IPC potentials for contact, , and dissipative friction, , to model inter-body contact forces. The contact potential
(10)
(stiffness ) resolves contacts between all possible pairings of inter-body surface geometry primitives (e.g., edge-edge, vertex-face pairs between body meshes – but no self-contact because of body’s high stiffness). Here the smoothly clamped logarithmic barrier function
(11)
needs to evaluate the unsigned distances for all primitive pairs in . Smooth clamping ensures that proximities beyond can be safely culled from evaluation without harming convergence, while surface pairs within the small, prescribed contact accuracy are activated to receive contact forces.
Likewise, the friction potential is defined as:
(12)
where is the active subset of contact pairs with positive contact force magnitude . is the coefficient of friction, and returns a mollified norm of the relative sliding velocity, orthogonal to the distance vector, between geometric pairs . Li and colleagues (2020) demonstrated that provides smooth approximation of the nonsmooth Coulomb friction model with user-controlled accuracy. In turn, this obtains effective and accurate capture of frictional stick and slip behaviors for both maximal and reduced body models (Li et al., 2020; Ferguson et al., 2021).
At each time step we then construct a global IP for the full contact-coupled system as: , and solve for its minimizer as the updated system configuration.
4.1. Affine CCD
To ensure that every search fulfils the nonintersection guarantee, a significant (and for rigid bodies dominant) cost of each time step’s Newton solve is the repeated evaluation of CCD for primitive pairs in . Edge-edge or vertex-face pairs are defined on vertices for to belonging to one of two bodies in . At any iteration of a Newton solve, new positions of these vertices are proposed, per participating body , as , and so we search along the direction formed by and . The corresponding trajectories are then just , with . In other words, we are testing displacements (from to ) along starting from i.e., the previous iteration footstep and so can apply standard linear CCD rather than the expensive, curved CCD required for rigid-body trajectories. Throughout we employ Additive CCD (ACCD) method (Li
et al., 2021b) for all affine body CCD evaluations.
4.2. Contact Culling via i-AABB
The IPC framework inverts traditional contact-processing practices by integrating collision detection within every iterate, inside each nonlinear time step solve (rather than once per time step, after completing a solve – as has been a standard practice in rigid body pipelines). Above we have already seen the implications of this choice on CCD and the advantages for ABD. We next address culling of contact pair evaluations and then below, in the following section, an integrated approach to efficiently compute the local energy Hessian evaluations and their assembly.
Figure 2. i-AABB. Intersection-AABB (i-AABB) is a simple and more effective culling strategy than per-object BVHs traditionally employed for rigid bodies. In this example, we collide helicopter and ship models with well over K surface triangles for the system. Culling with full body BVHs leads to M AABB intersection tests. Instead, we build a shallow, three-level i-AABB based on the models’ overlapping AABB volume. With i-AABB, the total number of AABB intersection tests reduces to K, fewer than regular BVH-based culling.
With the affine bodies’ stiff potentials applied to model close-to-rigid motion, we eliminate, as in rigid body models, the need for self-collision processing on intra-body surface primitives pairs. To further cull inter-body surface pairs from downstream collision processing, Rigid body methods commonly employ precomputed per-body (or per unique mesh instance) BVH which only requires a rigid (or, in our setting, affine) transform to evaluate at each configuration update. To further improve collision detection queries, most popular rigid body libraries (e.g., Bullet, Mujoco, PhysX, Flex) additionally require that all nonconvex surface meshes be replaced by approximations – convex decompositions (Mamou
et al., 2016) so that evaluations can utilize convexity assumptions.
In the context of stiff-body models we propose a simple strategy that significantly enhances contact-pair culling. We start with the observation that contact-dense regions between close-to-rigid meshes are most often local. Unlike deforming meshes (e.g., consider a cloth model), in common, contact-rich configurations we see that a large portion of each body’s surface remains free of contacts. A BVH evaluation over each body’s full surface is then a bit too aggressive (and a potentially unnecessarily expensive precomputation cost) – especially as we consider higher resolution models and/or increasing numbers of bodies.
We instead begin with a coarse AABB per body, offset to account for the small parameter of the contact accuracy. While clearly not providing a tight bound we only need to evaluate potential contacts in each pairwise overlap between these initial, intersecting AABB (i-AABB) volume. With stiff affine transformations the overlap volume of each i-AABB is most often sufficiently small – the total number of surface primitives within our i-AABB is often one order smaller than that obtained from full-mesh BVH queries. Then, utilizing the guarantee that i-AABBs will not intersect one another, this already provides effective culling for us to directly proceed with parallel (multi-threaded) primitive-pair collision-check evaluations within each i-AABB.
In the most extreme, heavily entangled configurations, e.g., see Fig. 2, we find i-AABB volumes can be too conservative for CPU implementations. Here we simply build a shallow, three-level AABB hierarchy (a binary AABB tree) for each i-AABB. Our observation is that for GPU implementations and most (even contact-intense) CPU examples the single-level i-AABB is highly effective (and exceedingly simple to implement). We utilize the i-AABB hierarchies solely for CPU examples where dense, entangled contacts are consistently encountered, such as the geared system in Fig. 1 and the interlocked collision of complex models in Fig. 2. As a representative improvement we note that in the latter example the ship and the helicopter models have K and K surface triangles respectively; here the three-level hierarchical i-AABB is over more efficient in culling surface pairs in comparison to per-body BVH.
4.3. Contact-Aware Hessian Construction
It is, by far, most efficient to simulate a set of noncontacting affine bodies. Along with reduced cost for collision detection, the global (system-wide) Hessian for is then simply a block-diagonal matrix with just a separable block for each affine body’s mass and orthogonality energy () contributions. When the system includes contacts, however, off-diagonal terms from active, inter-body contact and friction potentials necessarily pollute the Hessian to account for contact coupling.
Standard FEM-type evaluation and assembly would suggest iterating across all active contact potentials. However, here the surface mesh resolution, and so the corresponding number of surface pairs forming contact potentials, is generally much larger than the number of affine bodies we simulate. Traditional assembly, in this contact-oblivious way, is neither necessary nor efficient. We instead integrate our Hessian evaluation and assembly with the i-AABB hierarchy for contact-aware parallelization in both multi-core CPU and GPGPU implementations.
We start with the easiest part. The global Hessian’s default non-zero diagonal blocks are given by a constant mass term and the orthogonality potentials’ Hessian (Eq. (8)). This can be computed trivially in parallel. Next comes the expensive part. The Hessian of the contact potential, , then has an unpredictable pattern which varies widely with contact states. Recall that, when bodies and are sufficiently close (), barrier and friction forces between them activate, resulting in non-zero contributions to both their respective -th and -th diagonal blocks and to the off-diagonal blocks linking the corresponding body coordinates in the Hessian.
Here we observe that the configuration-varying sparsity of the global Hessian is effectively determined by our i-AABB culling. If the leaves of the i-AABB tree between bodies and are empty, they certainly do not contact, and the barrier and friction potentials make no contribution to the Hessian. Otherwise, we can conservatively allocate space for the corresponding off-diagonal blocks to store all potential (active contacts are not yet certain) non-zero contact Hessian contributions between bodies and . Thus, utilizing the i-AABB structures we apply a two-pass strategy to compute and assemble barrier and friction terms for the global Hessian. The first pass iterates across all surface primitives pairs within each i-AABB; their local Hessians are computed in parallel and cached. Here we also account for the Hessian’s symmetry to reduce total memory consumption. Our second pass then accumulates the local Hessians from the surface pairs. Here, as each culled i-AABB is independent and non-intersecting, accumulation is parallelized at each corresponding non-zero element of the global Hessian.
We find that i-AABB Hessian construction is significantly faster than default sequential parallelization of Hessian computation (e.g., as applied in rigid-IPC). We observe speedups of up to two orders, especially when the contacting system is composed of large numbers of bodies. Here, for example, the simulation in Fig. 3 provides a representative example, with a speedup over contact-oblivious, sequential Hessian construction.
Figure 3. Wrecking ball. A metal ball linked to a chain of rigid rings hits a stack of wooden blocks. There are in total bodies including the ball, rings on the chain, and blocks in this example. ABD and rigid-IPC yield nearly identical simulation results but ABD is faster than rigid-IPC (both on CPU). The time step is sec. We also tested ABD using sec and sec respectively. The results are similar – all are free of inter-penetration.Figure 4. Big chain net. We increase the resolution of the chain net to and drop a ball to the net. The ball hits the net and bounces back, which leads to interesting dynamical responses of the net. While both ABD and rigid-IPC are able to handle this simulation robustly, our method is faster on average. The speedup could reach over on GPU with CUDA.
5. Evaluation
Our implementation platform is a desktop PC with an intel i9 11900K CPU (8 cores, 3.5GHZ), G memory and an nVidia 3090 GPU. All the numerical methods were implemented using C++ on CPU, and we chose Eigen (Guennebaud
et al., 2010) as our primary linear algebra library, including all sparse linear system solves. Our CPU parallelization utilizes intel TBB. We understand that some other BLAS libraries may be better optimized for our hardware (e.g., intel MKL (Wang et al., 2014)). This choice is to ensure an objective comparison with rigid-IPC, whose multi-thread CPU implementation is also based on Eigen and TBB. We use Cholesky factorization (Dereniowski and
Kubale, 2003) i.e., SimplicialLLT routine shipped with Eigen as our primary linear solver. In hybrid simulation problems, we may occasionally resort to SimplicialLDLT in case when LLT scheme fails (see more discussions in Section 5.4).
Figure 5. Small chain net. We simulate a small-size chain net consisting of by rings using both ABD and rigid-IPC. The exterior rings are bound with a loop of fixed blue rings. In this simple test, ABD is faster than rigid-IPC on the CPU. An increase of the time step size from sec to sec does not noticeably slow down our method (from sec to sec per frame), but rigid-IPC will be significantly slower (by ).
For benchmarking we focus on rigid-IPC (Ferguson et al., 2021) as comparison to the “quality-oriented” rigid body simulator with comparable guarantees to ABD and, as a representative baseline for comparison to state-of-the-art, optimized rigid body libraries we use Bullet (Coumans, 2015). There are certainly numerous other, highly effective rigid body libraries with varying capabilities. However, trade-offs with respect to Bullet among alternatives have been extensively documented in (Ferguson et al., 2021). In their comprehensive analysis and benchmark testing of rigid body libraries Bullet most consistently succeeds across challenging examples and, at the same time, we also note that Bullet is probably the most widely deployed rigid body solution.
5.1. Comparison with Rigid-IPC
Both ABD and rigid-IPC (Ferguson et al., 2021) exploit the IPC (Li et al., 2020) model for contact processing and friction modeling. Here we carefully compare ABD with rigid-IPC across several representative simulation scenarios of varying complexities, as illustrated in Figs. 3 through 7.
Figure 6. Friction test. While ABD and rigid-IPC use the same barrier-based friction processing method, ABD is much faster than rigid-IPC under the same simulation settings. The screw example (left) is a representative demonstration of dynamic friction/contact. Our speedup is . On the other hand, the arch example (right) is dominated by static frictions, and ABD is faster than rigid-IPC.
The snapshots of the first comparison are given in Fig. 3. In this test, a heavy ball linked by a chain of metal rings dashes into a stack of wooden blocks, which are scattered by the collision. There are in total bodies in this example. Both rigid-IPC and ABD produce high-quality simulation results without any inter-penetration. However, ABD is faster. The performance of ABD is not sensitive to the time step size. Doubling or even quadrupling the time step size (from sec to sec and sec) lead to similar results and performance with ABD. Detailed timing statistics can be found in Section 5.5. Similar observations are received in chain net examples. For the small chain net case (Fig. 5), we have few bodies, and the relative velocities among bodies are small. In this “entry-level” test, ABD offers a speedup.
Figure 7. House of cards. The 10-level stack of cards is initially balanced by frictions among cards. Two falling boxes break the balance and crash the stack. This experiment mixes static and dynamic frictions involving bodies. Our method is faster than rigid-IPC.
An “upgraded” experiment is reported in Fig. 4, where the resolution of the chain net is set to . We also drop a ball, which bounces back and forth on the net triggering interesting dynamics. The collisions and contacts also become more complicated than the plain simple chain net in Fig. 5. The difference between our method and rigid-IPC becomes more significant. At some instances when sharp collisions occur under high relative velocities, rigid-IPC could take multiple hours to simulate one frame ( sec). On the other hand, our method needs seconds at most. On average, ABD is over faster than rigid-IPC. This speedup exceeds from time to time during the simulation. In ABD, affine CCD, i-AABB, as well as the integrated Hessian assembly are all parallelization-ready. Therefore, ABD typically receives one more orders performance gain on CUDA. That makes ABD over faster than rigid-IPC in the example of Fig. 4.
The friction handling in ABD and rigid-IPC is similar as both follow the variational friction model originally proposed in (Li et al., 2020). Nevertheless, ABD still exhibits superior performance in simulations dominated by frictions. We hereby report three more experiments in Figs. 6 and 7. In those comparisons, both ABD and rigid-IPC use the same simulation settings with the time step size of sec. The screw example (Fig. 6 left) is relatively simple – the surface geometry only has K triangles and K edges. We rotate the bolt into the nut. On average, rigid-IPC needs sec to simulate one step, and our method only needs ms. The arch (Fig. 6 right) consists of brick blocks. In this example, we mainly have static friction to deal with. Rigid-IPC runs faster than the screw case and needs sec for simulating one frame. Our method however, only uses ms. The card of house example starts with a 10-level stack of cards. The stack is first held up under the frictions between cards and gets crashed by two falling boxes. In this example, it takes about sec for rigid-IPC to simulate one frame, and ABD needs ms.
Figure 8. ABD vs. Bullet. We compare simulation results using ABD and Bullet with varying numbers of bodies and time step sizes. Bullet often produces interpenetrations between bodies even under small time steps. Interpenetrations becomes increasingly severe with growing body counts and/or time step size. On the other hand, ABD remains intersection-free across changing parameters and scene complexities. All timing statistics are reported in Tab. 1.
5.2. Comparison with Bullet
Bullet is a widely used rigid body engine known for the simplicity and efficiency. Bullet is also based on the classic rigid body model formulation. However, Bullet uses the so-called convex collision resolution, which approximates the geometry of the body via convex decomposition proxies. The collision is resolved using impulse-based method at the convex proxies. Therefore, it is not surprising to see Bullet fails in simulations under lasting and intense collisions and contacts. We have shown that our method is orders of magnitude faster than rigid-IPC with further improved robustness. For smaller simulation problems, ABD is nearly as efficient as Bullet. It quickly outperforms Bullet from almost all perspectives as the complexity of the simulation escalates.
We compare ABD and Bullet using the wrecking ball setup (i.e., see Fig. 3) but under different block counts and time step sizes. In this set of comparisons, the ball is no longer attached to the chain as in Fig. 3. This is because under high-velocity movements, collision resolution in Bullet frequently fails, and the rings on the chain would “break out” so that the ball may not hit the stack. The results are reported in Fig. 8, where we have three configurations: light, medium, and full. The light test only has blocks on the stack; the medium test has blocks; and the full test is the same as in Fig. 3 with blocks.
Test
Bdy
Tri./Edg.
(sec)
Iter.
Time (ms)
Light
1.2K/796
1/100
1/240
1/1000
1.9
1.5
1.1
3 — 2
2.2 — 1.5
2 — 3
Medium
142
3.5K/2.3K
1/100
1/240
1/1000
7.6
2.9
1.3
92 — 68
41 — 58
19 — 82
Full
562
11K/7.3K
1/100
1/240
1/1000
11.0
4.4
1.8
657 — 629
328 — 809
102 — 804
Table 1. ABD vs. Bullet timing. We record timing information of simulating the wrecking ball scenarios under different block counts and time step sizes using ABD and Bullet. Bdy is the number of bodies in the test. Tri./Edg. gives the total numbers of triangles and edges on the surface of the models. is the time step size. Iter. is the average iteration counts in ABD simulation. Time reports the average computation time for each frame using ABD and Bullet. This timing comparison is reported on a single thread implementation.
Figure 9. Bone dragon. In addition to the simulation algorithm, another difference between ABD and Bullet is the collision detection. ABD allows triangle-level collision detection to capture local contacts between fine geometries. Bullet is mesh-based and relies on convex decomposition of the model. In some cases, the decomposition is not accurate enough to approximate concave shapes. This figure shows one of such examples. Both bone dragons and rock spikes are sharp and concave.
The detailed timing comparison is listed in Tab. 1. In order to ensure the comparison is fair, we turn off multi-threading in ABD and Bullet. This is because our method processes collision on the surface triangles, which will receive more acceleration under parallelization. It is noted that under the light test ( sec), Bullet is rather efficient and only needs ms to simulate one frame. Our method is slower than Bullet and takes ms to simulate one frame. This difference diminishes under a smaller time step. For instance, when the time step size is set as sec, which is the default setting in Bullet, the difference of per-frame simulation time is less than one millisecond ( ms for ABD and ms for Bullet). If the time step size is more conservatively set to sec, ABD becomes faster than Bullet by a small margin ( ms for ABD and ms for Bullet). However, simulations using Bullet in all time step sizes have intersections (even with sec). Our method on the other hand is guaranteed to be free of inter-penetration. Another interesting observation is per-frame simulation using ABD consistently becomes more efficient under smaller time steps, which is not the case for Bullet. This may be because a smaller time step could expose more collisions to Bullet solver, which are otherwise missed under a bigger step. In addition, Bullet fails all the friction experiments including the screwing bolt, arch, and house of cards (Figs. 6 and 7) even with highly conservative time step size ( sec).
The story is similar for the medium/full test: ABD ( ms in medium and ms in full) is slightly slower than Bullet ( ms in medium and ms in full) when sec222Basically, ABD and Bullet have the same FPS in the full test with sec. Yet ABD takes the lead under smaller time steps of sec and sec. In addition, Bullet has significantly more inter-penetration instances in the medium/full tests than in the light test, which could end up with undesired artifacts in many simulation tasks.
As discussed, ABD’s collision processing directly handles each body’s input surface mesh boundary with all guarantees, including non-intersection, applying directly to those meshes. This means that control of resolution and so quality is available via standard, well optimized geometry pipelines, e.g. mesh decimation. Bullet, however, requires pre-processing to convert all input meshes body into convex decompositions. In turn Bullet will then simulate these decomposed, simplified models as proxies, resolving collision handling on them, for each rigid body’s surface rather than the original mesh. Bullet users often use V-HACD (Mamou
et al., 2016), an automated library for computing convex decomposition, for this process. Utilizing libraries like V-HACD, can be a slow and often time-consuming iterative process to hand-tune quality parameters in order to obtain a reasonable a reasonable geometric approximation and resolution. Even so important features can be lost while details and symmetries are often unnecessarily broken. As such, many advanced users often resort to laborious hand-crafting of proxies when capturing important surface features is critical in an application (e.g., for design or robotics). Here, we demonstrate a comparative example of utilizing detailed, bone dragons in Fig 9 dropped on a highly featured geometry. After careful hand-tuning of V-HACD parameters, we present in Fig 9 right the resulting simulation using our best resulting V-HACD proxies. Here we see the convex decomposition geometry is still insufficiently detailed to capture local collision behavior between sharp asperities and convexities. In contrast, in Fig 9 left, ABD directly simulates the detailed geometry with tight tolerance so that all the original input meshes’ detailed affordances are kept. In turn we see that this allows the dragons’ concavities to tightly entangle and also slide directly onto and be caught by the sharp points – all while remaining intersection free.
5.3. Joint Constraints are Linear for Affine Bodies
An additional benefit of ABD is convenient constraint handling – especially for the those prescribing rotational DOFs. For instance, it is common to require multiple objects to obey a given kinematic relation following the joint connecting them. Such constraints are often nonlinear as they are formulated from rigid body rotational DOF. Enforcing them would then require computing the derivatives of the rotational DOFs (either via constrained Lagrangian methods or generalized coordinates). Here relaxation from rigidity to affinity also eases the processing of such constraints.
It is known that a non-degenerate tetrahedron uniquely defines an affine transform. This suggests our generalized coordinate can be mapped to any linear tetrahedron. From this perspective, an affine body simulation can also be viewed as a single-element FEM (with a simplified strain energy). The geometry of this element however, can be setup flexibly even its position deviates away significantly from the object. Let denote the map between and this virtual tetrahedron such that . stores the deformed vertex positions (i.e., , , , and ) of the element. Let the rest shape position of the element be , and one can easily verify that:
(13)
Here, denotes the vectorization of a matrix. Since is given, we could use as the new generalized coordinate of the system. Clearly is a linear function of . only depends on . Therefore, the Jacobi of the system remains constant:
(14)
Figure 10. Constrained simulation. Prescribing rotation freedom in ABD is convenient. We visualize the generalized coordinate as a virtual tetrahedron, and most rotational constraints are linearized. We show two examples of such simulation in this figure. Both pendulum and octopus tentacles are made of multiple bodies connected via hinge joints. ABD remains significantly faster than rigid-IPC: ABD achieves a speedup for the pendulum and a speedup for the octopus.Figure 11. Hybrid simulation. ABD is particularly convenient for simulating hybrid object with both rigid and deformable parts. Both the barbarian ship (K triangles, K edges) and helicopter (K triangles, K edges) are such hybrid objects with a rigid main body appended by several deformable parts (canvas, rotors, and wheels). We use standard neo-Hookean FEM to simulate deformable parts, which are constrained to the virtual tetrahedron corresponding to the rigid body. Due to the involvement of massive DOFs from deformable parts, the simulation uses about sec for one frame under sec.Figure 12. Convenient constraint handling. An axis constraint becomes a linear one and can be easily enforced in A-IPC framework.
In practice, we exploit the fact that could be any tetrahedron to manipulate such constraints intuitively. For instance as shown in Fig. 12, the gear is constrained to rotate around a prescribed axis (blue dash line). In ABD, we map to a tetrahedron. Since the tetrahedron can be chosen freely, we make sure that one of its edges is parallel to the rotation axis. After that, the axis constraint can be simply posed as a linear equality constraint fixing two vertices of the edge ( and in the figure). Indeed, such formulation is over-constraining as it eliminates six freedoms instead of two (we should also allow and to move laterally along the edge). However, such “over-constrainment” still gives correct simulation because ABD uses more DOFs to simulate a rigid object. Other types constraints can be dealt with in a similar way (e.g., the constraint over the rotation angle can be converted to a linear shearing constraint).
Two of such examples are reported in Fig. 10. The pendulum is a basic mechanism structure with two rigid links constrained by a hinge. The octopus has eight tentacles, and each of it consists of five joints. We also compared ABD with rigid-IPC with these models. ABD does not only enjoy a more handy formulation but also runs significantly faster ( and speedups for the pendulum and octopus respectively). A more challenging experiment is reported in Fig. 1, where we simulate a more complex mechanism device of a set of 28 gears. Those gears are coupled by tooth contacts and shafts (see Fig. 14). There are totally K triangles and K edges on the surface (i.e., those could participate in culling and CCD). A component-wise breakdown showing the inter-connectivity of gears is given in the right of the figure. As the driving torque is applied at one of the gear (the one with red arrow), the entire device moves forward. This simulation is very demanding for the robustness of the simulation algorithm. Because gear tooth are close to each other, highly localized and detailed CCD is massively used. All rigid body simulation algorithms we have tested fail in this case including rigid-IPC, MuJuCo, and Bullet. As mentioned, Bullet requires building a convex proxy for collision processing, which does not capture the zigzag geometry at the gear tooth. MuJuCo fails the test even under highly conservative settings (e.g., very small time step size). Rigid-IPC also fails this experiment: after first few steps, the Newton iteration loops infinitely because the cured CCD is unable to find a usable TOI (time of impact). ABD manages to simulate this scene without any issues. Each frame takes about sec on the CPU. As the majority of the computation is at CCD processing, we port our i-AABB algorithm to CUDA, and the simulation of the gear set reaches an interactive rate (at 5 – 10 FPS).
Figure 13. Huge chain net. When the body count increases, the disadvantage of using redundant DOFs in the simulation may become more obvious. Following this thought, we up scale the chain net to have bodies. In this stress test, A-IPC takes about min to simulate one frame on average. The entire simulation takes about five days with A-IPC. We are never able to finish this test with rigid-IPC. Based on our observation, A-IPC is at least faster than rigid-IPC. This means it will need several years for rigid-IPC to finish this experiment.
5.4. Hybrid Simulation
Another benefit of ABD, when viewed as a reduced single-tetrahedron FEM, is to simulate models with both rigid and soft components. Such objects are vastly available in real world. While existing rigid body methods can also be augmented to incorporate such hybrid simulations, it is particularly effortless in the framework of ABD. We show a simulation of such scene. The barbarian ship has a rigid ship body and two deformable canvas. Each ship has K surface triangles and K edges. The helicopter is also hybrid with a rigid body, two soft rotors, and four soft wheels. There are K triangles and K edges on each helicopter. After two ships fall into the glass tank, five helicopters follow, producing interesting animation effects of both rigid and deformable dynamics. Note that the collision between rigid and soft bodies can be handled uniformly using barrier-based penalties. In such hybrid simulation, the Hessian of elastic potential on the deformable components are much smaller (by several orders) than the Hessian of the orthogonality potential (), and the positive definiteness of the global system matrix is numerically compromised. Therefore, LLT factorization (SimplicialLLT) may fail occasionally. In this case, we switch to LDLT Cholesky for each Newton solve. A possible remedy for increase numerically stability is to use Schur complement like formulation (Peiret et al., 2019) to somehow decouple DOFs from rigid (affine) and deformable components.
Figure 14. Contact forces at teeth. With the assistance of i-AABB, ABD efficiently and accurately model the contact forces among gear teeth. This figure visualizes the force distribution over the gear teeth.
Table 2. Time statistic. Detailed time statistics of our experiments. In most experiments, we tested ABD under three different settings namely , , and . Bdy (number of bodies), Tri./Edg. (numbers of triangles and edges), (time step size), Iter. (average per-frame iteration counts), and Time (total time for each frame) are the same measures as in Tab. 1. This table also reports computation time used for Hessian assembly (Hess.), total time used for solving the linear system in Newton method at each frame (Sol.), time used for triangle-level CCD (CCD), time used for building the collision pairs (Cons.), and other computations (Misc. e.g., variables initialization, convergence check etc. In many examples (except for the last four examples), we give comparative timing information of both ABD and rigid-IPC. The GPU FPS is also reported for ABD simulations.
Detailed time statistics of other the experiments is reported in Tab. 2. In all the experiments, we uniformly scale the scene to a box and set as . In other words, if the size of the model is around one meter, the contact accuracy is guaranteed to be less than one millimeter, and all the models do not intersect with each other at any time during the simulation. We report comparative timing benchmark of ABD and rigid-IPC under in most experiments. Normally, rigid-IPC is numerically robust under larger time steps. However, its performance is highly sensitive to a bigger . This is because the underlying curved CCD quickly becomes prohibitive when examining over a wider trajectory gap. Therefore, we do not report our speedup over rigid-IPC for any time steps bigger than sec. For chain net example shown in Fig. 4, the literal speedup exceeds four orders in general if we set . It is not our intention to oversell just by tweaking the time step size.
The majority portion of our performance improvement is brought by relaxing the rigidity constraint. This can be reflected by two important metrics from Tab. 2: the iteration count ( Iter.) and the time needed for CCD processing (CCD). It is clearly shown that as long as the contact frequency in the simulation is intense, ABD always requires much fewer iterations to converge than rigid-IPC does. This difference is “extremized” in the gear set example (Fig. 1), where ABD needs iterations for each time step, and rigid-IPC needs infinite iterations. CCD processing is another major game changer. As mentioned, rigid-IPC strictly follows the rigidity constraint making per-step trajectory curved. This curved trajectory is split and converted back to piece-wise line segments again during the CCD. This conversion is fully avoided in ABD, and one can use any existing CCD algorithm to detect potential intersection between primitives and compute TOI. We would like to remind that CCD needs to be carried out at each Newton iteration in order to make sure the line search does not introduce inter-penetrations. Therefore, the performance gap between A-IPC and rigid-IPC is further scaled by the iteration count. Together, those two factors contribute to of our speedup in complex simulations such as the big chain net (Fig. 4), house of cards (Fig. 7) and wrecking ball (Fig. 3). In other relatively lighter simulation experiments, our improved culling and Hessian assembly become more profitable. Our culling is up to to more effective than conventional BVH-based strategy for models with complex geometry. It is on average more effective for simpler shapes (e.g., the chain net or the octopus). In terms of system solve, ABD is typically slower than existing rigid body methods due to inflated DOFs. However, this disadvantage is invisible because ABD always enjoys a much fewer iterations and much faster CCD processing. This is our core inspiration of designing ABD.
We suspect increasing the body count will grant the lead to rigid-IPC at a certain point and simulate a huge chain net model with bodies. The result is opposite – we estimate ABD has a speedup (on CPU). This is just a rough assessment as we are never able to finish rigid-IPC in this stress test, which will need several years while ABD finishes the simulation in five days.
6. Conclusion
We have introduced a new, simple affine dynamics model and a carefully customized, easy-to-implement affine IPC algorithm for the simulation of extremely stiff materials with fidelity, convergence and reliability. The resulting method is highly suited for simulating all scenarios and applications where currently rigid body methods are now popularly employed without, as we have shown, the current limitations that rigid body models impose. Here we have demonstrated that ABD obtains orders of magnitude speedup over state-of-the-art rigid body simulation with comparable guarantees of non-intersection and convergence. At the same time we have also shown that ABD obtains both comparable (for easy examples) and improved (as scene complexity grows) speeds when compared with highly optimized rigid body libraries that do not have guarantees and so suffer from artifacts and all-out failures that limit their automated use.
ABD is custom-suited for parallelization, is also differentiable, and automatically and directly simulates all input triangulated geometries. We have shown that, when leveraging the GPU, ABD can simulate complex contacting systems at interactive rates. With these combined properties it is then exciting to consider future applications where ABD’s automation, reliability, and differentiability can be utilized for computational design, machine learning, and robotics. In these cases consistent, artifact-free simulation behavior across shape, material and contact variations, without algorithm parameter tuning, should accelerate development. We have also shown a few initial, proofs-of-concept for extensions of ABD to both complex, jointed stiff multibody systems, and to hybrid stiff/flexible multibody systems. Here there also clearly remain significant opportunities for further development and application. Finally, looking ahead, with the popularity and diverse applications of physical modeling we hope that ABD will provide the rapidly growing and diverse community of simulation users with a reliable, differentiable and exceedingly efficient framework suitable to swap in for all rigid body-type applications.
References
(1)
Alexa
et al. (2000)
Marc Alexa, Daniel
Cohen-Or, and David Levin.
2000.
As-rigid-as-possible shape interpolation. In
Proceedings of the 27th annual conference on
Computer graphics and interactive techniques. 157–164.
Anitescu and
Potra (1997)
Mihai Anitescu and
Florian A Potra. 1997.
Formulating dynamic multi-rigid-body contact
problems with friction as solvable linear complementarity problems.
Nonlinear Dynamics 14,
3 (1997), 231–247.
Baraff (1989)
David Baraff.
1989.
Analytical methods for dynamic simulation of
non-penetrating rigid bodies. In Proceedings of
the 16th annual conference on Computer graphics and interactive techniques.
223–232.
Baraff (1991)
David Baraff.
1991.
Coping with friction for non-penetrating rigid body
simulation.
ACM SIGGRAPH computer graphics
25, 4 (1991),
31–41.
Baraff (1994)
David Baraff.
1994.
Fast contact force computation for nonpenetrating
rigid bodies. In Proceedings of the 21st annual
conference on Computer graphics and interactive techniques.
23–34.
Baraff (1995)
David Baraff.
1995.
Interactive simulation of solid rigid bodies.
IEEE Computer Graphics and Applications
15, 3 (1995),
63–75.
Baumgarte (1972)
Joachim Baumgarte.
1972.
Stabilization of constraints and integrals of
motion in dynamical systems.
Computer methods in applied mechanics and
engineering 1, 1
(1972), 1–16.
Bender
et al. (2014)
Jan Bender, Kenny
Erleben, and Jeff Trinkle.
2014.
Interactive simulation of rigid body dynamics in
computer graphics. In Computer Graphics Forum,
Vol. 33. Wiley Online Library, 246–270.
Bergen (1997)
Gino van den Bergen.
1997.
Efficient collision detection of complex deformable
models using AABB trees.
Journal of graphics tools
2, 4 (1997),
1–13.
Bonet and Wood (1997)
Javier Bonet and
Richard D Wood. 1997.
Nonlinear continuum mechanics for finite
element analysis.
Cambridge university press.
Bridson
et al. (2002)
Robert Bridson, Ronald
Fedkiw, and John Anderson.
2002.
Robust treatment of collisions, contact and
friction for cloth animation. In Proceedings of
the 29th annual conference on Computer graphics and interactive techniques.
594–603.
Brochu
et al. (2012)
Tyson Brochu, Essex
Edwards, and Robert Bridson.
2012.
Efficient geometrically exact continuous collision
detection.
ACM Transactions on Graphics (TOG)
31, 4 (2012),
1–7.
Choo
et al. (2021)
Jinhyun Choo, Yidong
Zhao, Yupeng Jiang, Minchen Li,
Chenfanfu Jiang, and Kenichi Soga.
2021.
A barrier method for frictional contact on embedded
interfaces.
arXiv:2107.05814 [math.NA]
Cline and Pai (2003)
Michael B Cline and
Dinesh K Pai. 2003.
Post-stabilization for rigid body simulation with
contact and constraints. In 2003 IEEE
International Conference on Robotics and Automation (Cat. No. 03CH37422),
Vol. 3. IEEE, 3744–3751.
Coevoet
et al. (2020)
Eulalie Coevoet, Otman
Benchekroun, and Paul G Kry.
2020.
Adaptive merging for rigid body simulation.
ACM Transactions on Graphics (TOG)
39, 4 (2020),
35–1.
Dereniowski and
Kubale (2003)
Dariusz Dereniowski and
Marek Kubale. 2003.
Cholesky factorization of matrices in parallel and
ranking of graphs. In International Conference on
Parallel Processing and Applied Mathematics. Springer,
985–992.
Drumwright (2007)
Evan Drumwright.
2007.
A fast and stable penalty method for rigid body
simulation.
IEEE transactions on visualization and
computer graphics 14, 1
(2007), 231–240.
Duriez
et al. (2005)
Christian Duriez, Frederic
Dubois, Abderrahmane Kheddar, and
Claude Andriot. 2005.
Realistic haptic rendering of interacting
deformable objects in virtual environments.
IEEE transactions on visualization and
computer graphics 12, 1
(2005), 36–47.
Erleben (2017)
Kenny Erleben.
2017.
Rigid body contact problems using proximal
operators. In Proceedings of the ACM
SIGGRAPH/Eurographics Symposium on Computer Animation.
1–12.
Fang
et al. (2021)
Yu Fang, Minchen Li,
Chenfanfu Jiang, and Danny M. Kaufman.
2021.
Guaranteed Globally Injective 3D Deformation
Processing.
ACM Trans. Graph. (SIGGRAPH)
40, 4, Article 75
(2021).
Ferguson et al. (2021)
Zachary Ferguson, Minchen
Li, Teseo Schneider, Francisca
Gil-Ureta, Timothy Langlois, Chenfanfu
Jiang, Denis Zorin, Danny M Kaufman,
and Daniele Panozzo. 2021.
Intersection-free rigid body dynamics.
ACM Transactions on Graphics
40, 4 (2021),
183.
Fisher and Lin (2001)
Susan Fisher and Ming C
Lin. 2001.
Fast penetration depth estimation for elastic
bodies using deformed distance fields. In
Proceedings 2001 IEEE/RSJ International Conference
on Intelligent Robots and Systems. Expanding the Societal Role of Robotics in
the the Next Millennium (Cat. No. 01CH37180), Vol. 1.
IEEE, 330–336.
Gottschalk
et al. (1996)
Stefan Gottschalk, Ming C
Lin, and Dinesh Manocha.
1996.
OBBTree: A hierarchical structure for rapid
interference detection. In Proceedings of the 23rd
annual conference on Computer graphics and interactive techniques. ACM,
171–180.
Guennebaud
et al. (2010)
Gaël Guennebaud,
Benoit Jacob, et al.
2010.
Eigen.
URl: http://eigen. tuxfamily. org
3 (2010).
Hairer and
Vilmart (2006)
Ernst Hairer and Gilles
Vilmart. 2006.
Preprocessed discrete Moser–Veselov algorithm for
the full dynamics of a rigid body.
Journal of Physics A: Mathematical and
General 39, 42 (2006),
13225.
Hasegawa et al. (2004)
Shoichi Hasegawa, Nobuaki
Fujii, Katsuhito Akahane, Yasuharu
Koike, and Makoto Sato.
2004.
Real-time rigid body simulation for haptic
interactions based on contact volume of polygonal objects.
Transactions of the Society of Instrument and
Control Engineers 40, 2
(2004), 122–131.
Hauser
et al. (2003)
Kris K Hauser, Chen Shen,
and James F O’Brien. 2003.
Interactive Deformation Using Modal Analysis with
Constraints.. In Graphics Interface,
Vol. 3. 16–17.
Hubbard (1995)
Philip Martyn Hubbard.
1995.
Collision detection for interactive graphics
applications.
IEEE Trans. on Visualization and Computer
Graphics 1, 3 (1995),
218–230.
Igarashi
et al. (2005)
Takeo Igarashi, Tomer
Moscovich, and John F Hughes.
2005.
As-rigid-as-possible shape manipulation.
ACM transactions on Graphics (TOG)
24, 3 (2005),
1134–1141.
James and Pai (2004)
Doug L James and
Dinesh K Pai. 2004.
BD-tree: output-sensitive collision detection for
reduced deformable models.
ACM Trans. Graph. (TOG)
23, 3 (2004),
393–398.
Kaufman
et al. (2005)
Danny M Kaufman, Timothy
Edmunds, and Dinesh K Pai.
2005.
Fast frictional dynamics for rigid bodies.
In ACM SIGGRAPH 2005 Papers.
946–956.
Kaufman
et al. (2008)
Danny M Kaufman, Shinjiro
Sueda, Doug L James, and Dinesh K
Pai. 2008.
Staggered projections for frictional contact in
multibody systems.
In ACM SIGGRAPH Asia 2008 papers.
1–11.
Krishnan et al. (1998)
Shankar Krishnan, M Gopi,
M Lin, Dinesh Manocha, and
A Pattekar. 1998.
Rapid and accurate contact determination between
spline models using ShellTrees.
Computer Graphics Forum
17, 3 (1998),
315–326.
Lan
et al. (2021)
Lei Lan, Yin Yang,
Danny Kaufman, Junfeng Yao,
Minchen Li, and Chenfanfu Jiang.
2021.
Medial IPC: accelerated incremental potential
contact with medial elastics.
ACM Transactions on Graphics (TOG)
40, 4 (2021),
1–16.
Li (2020)
Minchen Li.
2020.
Robust and Accurate Simulation of
Elastodynamics and Contact.
Ph.D. Dissertation. University
of Pennsylvania.
Li et al. (2020)
Minchen Li, Zachary
Ferguson, Teseo Schneider, Timothy
Langlois, Denis Zorin, Daniele Panozzo,
Chenfanfu Jiang, and Danny M Kaufman.
2020.
Incremental potential contact: Intersection-and
inversion-free, large-deformation dynamics.
ACM transactions on graphics
(2020).
Li
et al. (2021b)
Minchen Li, Danny M.
Kaufman, and Chenfanfu Jiang.
2021b.
Codimensional Incremental Potential Contact.
ACM Trans. Graph. (SIGGRAPH)
40, 4, Article 170
(2021).
Li
et al. (2021a)
Xuan Li, Yu Fang,
Minchen Li, and Chenfanfu Jiang.
2021a.
BFEMP: Interpenetration-free MPM–FEM coupling
with barrier contact.
Computer Methods in Applied Mechanics and
Engineering (2021), 114350.
Macklin
et al. (2016)
Miles Macklin, Matthias
Müller, and Nuttapong Chentanez.
2016.
XPBD: position-based simulation of compliant
constrained dynamics. In Proceedings of the 9th
International Conference on Motion in Games. 49–54.
Mamou
et al. (2016)
Khaled Mamou, E Lengyel,
and AK Peters. 2016.
Volumetric hierarchical approximate convex
decomposition.
In Game Engine Gems 3.
AK Peters, 141–158.
Mazhar
et al. (2015)
Hammad Mazhar, Toby Heyn,
Dan Negrut, and Alessandro Tasora.
2015.
Using Nesterov’s method to accelerate multibody
dynamics with friction and contact.
ACM Transactions on Graphics (TOG)
34, 3 (2015),
1–14.
Moreau (1988)
Jean J Moreau.
1988.
Unilateral contact and dry friction in finite
freedom dynamics.
In Nonsmooth mechanics and Applications.
Springer, 1–82.
Moser and Veselov (1991)
Jürgen Moser and
Alexander P Veselov. 1991.
Discrete versions of some classical integrable
systems and factorization of matrix polynomials.
Communications in Mathematical Physics
139, 2 (1991),
217–243.
Müller et al. (2007)
Matthias Müller, Bruno
Heidelberger, Marcus Hennix, and John
Ratcliff. 2007.
Position based dynamics.
Journal of Visual Communication and Image
Representation 18, 2
(2007), 109–118.
Müller et al. (2020)
Matthias Müller, Miles
Macklin, Nuttapong Chentanez, Stefan
Jeschke, and Tae-Yong Kim.
2020.
Detailed rigid body simulation with extended
position based dynamics. In Computer Graphics
Forum, Vol. 39. Wiley Online Library,
101–112.
Otaduy
et al. (2007)
Miguel A Otaduy, Daniel
Germann, Stephane Redon, and Markus
Gross. 2007.
Adaptive deformations with fast tight bounds. In
Proceedings of the 2007 ACM SIGGRAPH/Eurographics
symposium on Computer animation. 181–190.
Pauly
et al. (2004)
Mark Pauly, Dinesh K Pai,
and Leonidas J Guibas. 2004.
Quasi-rigid objects in contact. In
Proceedings of the 2004 ACM SIGGRAPH/Eurographics
symposium on Computer animation. 109–119.
Peiret et al. (2019)
Albert Peiret, Sheldon
Andrews, József Kövecses, Paul G
Kry, and Marek Teichmann.
2019.
Schur complement-based substructuring of stiff
multibody systems with contact.
ACM Transactions on Graphics (TOG)
38, 5 (2019),
1–17.
Redon
et al. (2005)
Stephane Redon, Ming C
Lin, Dinesh Manocha, and Young J Kim.
2005.
Fast continuous collision detection for articulated
models.
(2005).
Song and Kumar (2003)
Peng Song and Vijay
Kumar. 2003.
Distributed compliant model for efficient dynamic
simulation of systems with frictional contacts. In
International Design Engineering Technical
Conferences and Computers and Information in Engineering Conference,
Vol. 37009. 1009–1018.
Sorkine and Alexa (2007)
Olga Sorkine and Marc
Alexa. 2007.
As-rigid-as-possible surface modeling. In
Symposium on Geometry processing,
Vol. 4. 109–116.
Stewart (2000)
David E Stewart.
2000.
Rigid-body dynamics with friction and impact.
SIAM review 42,
1 (2000), 3–39.
Tang
et al. (2012)
Min Tang, Dinesh Manocha,
Miguel A Otaduy, and Ruofeng Tong.
2012.
Continuous penalty forces.
ACM Transactions on Graphics (TOG)
31, 4 (2012),
1–9.
Tang
et al. (2014)
Min Tang, Ruofeng Tong,
Zhendong Wang, and Dinesh Manocha.
2014.
Fast and exact continuous collision detection with
bernstein sign classification.
ACM Transactions on Graphics (TOG)
33, 6 (2014),
1–8.
Terzopoulos et al. (1987)
Demetri Terzopoulos, John
Platt, Alan Barr, and Kurt Fleischer.
1987.
Elastically deformable models. In
Proceedings of the 14th annual conference on
Computer graphics and interactive techniques. 205–214.
Teschner et al. (2005)
Matthias Teschner, Stefan
Kimmerle, Bruno Heidelberger, Gabriel
Zachmann, Laks Raghupathi, Arnulph
Fuhrmann, M-P Cani, François
Faure, Nadia Magnenat-Thalmann, Wolfgang
Strasser, et al. 2005.
Collision detection for deformable objects. In
Computer graphics forum,
Vol. 24. Wiley Online Library, 61–81.
Todorov
et al. (2012)
Emanuel Todorov, Tom
Erez, and Yuval Tassa. 2012.
Mujoco: A physics engine for model-based control.
In 2012 IEEE/RSJ International Conference on
Intelligent Robots and Systems. IEEE, 5026–5033.
Trinkle
et al. (2001)
Jeffrey C Trinkle, JA
Tzitzouris, and Jong-Shi Pang.
2001.
Dynamic multi-rigid-body systems with concurrent
distributed contacts.
Philosophical Transactions of the Royal
Society of London. Series A: Mathematical, Physical and Engineering
Sciences 359, 1789
(2001), 2575–2593.
Wang et al. (2021)
Bolun Wang, Zachary
Ferguson, Teseo Schneider, Xin Jiang,
Marco Attene, and Daniele Panozzo.
2021.
A Large-scale Benchmark and an Inclusion-based
Algorithm for Continuous Collision Detection.
ACM Transactions on Graphics (TOG)
40, 5 (2021),
1–16.
Wang et al. (2014)
Endong Wang, Qing Zhang,
Bo Shen, Guangyong Zhang,
Xiaowei Lu, Qing Wu, and
Yajuan Wang. 2014.
Intel math kernel library.
In High-Performance Computing on the
Intel® Xeon Phi™. Springer,
167–188.
Xu
et al. (2014)
Hongyi Xu, Yili Zhao,
and Jernej Barbič.
2014.
Implicit multibody penalty-baseddistributed
contact.
IEEE transactions on visualization and
computer graphics 20, 9
(2014), 1266–1279.
Zachmann (2002)
Gabriel Zachmann.
2002.
Minimal hierarchical collision detection. In
ACM symposium on Virtual reality software and
technology. ACM, 121–128.
Zachmann and
Langetepe (2003)
Gabriel Zachmann and
Elmar Langetepe. 2003.
Geometric data structures for computer
graphics.
Eurographics Assoc.