Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
skip to main content
research-article
Open access

DiffCloth: Differentiable Cloth Simulation with Dry Frictional Contact

Published: 03 October 2022 Publication History
  • Get Citation Alerts
  • Abstract

    Cloth simulation has wide applications in computer animation, garment design, and robot-assisted dressing. This work presents a differentiable cloth simulator whose additional gradient information facilitates cloth-related applications. Our differentiable simulator extends a state-of-the-art cloth simulator based on Projective Dynamics (PD) and with dry frictional contact [Ly et al. 2020]. We draw inspiration from previous work [Du et al. 2021] to propose a fast and novel method for deriving gradients in PD-based cloth simulation with dry frictional contact. Furthermore, we conduct a comprehensive analysis and evaluation of the usefulness of gradients in contact-rich cloth simulation. Finally, we demonstrate the efficacy of our simulator in a number of downstream applications, including system identification, trajectory optimization for assisted dressing, closed-loop control, inverse design, and real-to-sim transfer. We observe a substantial speedup obtained from using our gradient information in solving most of these applications.

    1 Introduction

    Clothing is ubiquitous in our daily lives. With the widespread appearance of clothing in the fashion industry, film industry, computer animation, and video games, simulating cloth has been an active research topic for more than two decades. Today, research advancement in cloth simulation has unlocked various applications such as virtual try-on [Guan et al. 2012], garment design [Umetani et al. 2011; Wang 2018; Bartle et al. 2016; Montes et al. 2020], fold design [Li et al. 2018], garment grading [Brouet et al. 2012], sagging-free inversion [Ly et al. 2018], and robot-assisted dressing [Clegg et al. 2020;, 2018].
    Inspired by the recent development of differentiable physics simulation and its success in rigid-body systems [de Avila Belbute-Peres et al. 2018; Geilinger et al. 2020], fluidic systems [Hu et al. 2020; Du et al. 2020], and deformable-body systems [Hahn et al. 2019; Geilinger et al. 2020], we argue in this article that a large number of cloth-related applications would also benefit from a high-quality differentiable cloth simulator. The critical ingredient in previous differentiable simulators is their ability to compute gradients by backpropagating any differentiable performance metrics through simulation. Such additional gradient information unlocks gradient-based continuous optimization methods, which often bring a substantial speedup compared with their gradient-free counterparts in downstream applications.
    Compared with the recent active development of differentiable simulators for rigid-body and soft-body dynamics, research work about differentiable cloth simulation is still relatively sparse. Indeed, cloth simulation introduces unique challenges from its co-dimensional dynamics and, in particular, rich contact events. While many differentiable simulators have provided solutions to derive gradients for contact models of varying complexity, their techniques typically do not expect contact to be as frequent as in cloth simulation. Deriving gradients with frequent contact and self-collisions in cloth simulation is not fully resolved even in the state-of-the-art differentiable cloth simulators [Liang et al. 2019], and our work attempts to fill this gap.
    In this work, we present a differentiable cloth simulator with extra care of its contact model. We base our method on the state-of-the-art cloth simulator from Ly et al. [2020] and employ its Projective Dynamics (PD) simulation method and dry frictional contact described by the Signorini-Coulomb law. Therefore, our differentiable cloth simulator inherits both the speedup from Projective Dynamics and the physical accuracy from the dry frictional contact model. Unlike previous papers relying on automatic differentiation tools to derive gradients, we present an iterative solver modified from Du et al. [2021] to accommodate the dry frictional contact model. We show that the modified iterative solver leads to a substantial speedup over a standard linear solver in gradient computation.
    To have well-defined gradients, a differentiable simulator expects all quantities computed in simulation to be sufficiently smooth. However, the non-smooth position and force changes from large numbers of contact events question this fundamental assumption. To fully understand the usefulness of a differentiable simulator in contact-rich environments, our work conducts comprehensive evaluation and analysis of the behavior of our differentiable cloth simulation with a varying number of contact events. While previous papers have provided similar discussions, they primarily focus on understanding penalty-based contact models [Geilinger et al. 2020] or discussing collisions in rigid-body dynamics [Werling et al. 2021] where contact events are not as frequent as in cloth simulation. To our best knowledge, our work is the first to present such evaluation and discussion of the usefulness of gradients in a differentiable cloth simulator with dry frictional contact.
    We demonstrate the efficacy of our simulator in various applications, including system identification of frictional coefficients in cloth simulation, inverse garment design for computer animation, and motion planning of robotic manipulators in robot-assisted dressing. Many of these applications would either be impossible or require a much longer time to solve with existing methods. With the extra gradient information from our differentiable simulator, we unlock gradient-based optimizers to solve these problems with a much higher sample efficiency than traditional gradient-free methods.
    To summarize, our work contributes the following:
    We present a novel differentiable cloth simulator with dry frictional contact and an iterative solver for speeding up its gradient computation.
    We evaluate the source of non-differentiability in the dry frictional contact model and discuss the usefulness of gradients in differentiable, contact-rich cloth simulation.
    We show the efficacy of our simulator in various applications, including system identification, trajectory optimization for assisted dressing, closed-loop control, inverse design, and real-to-sim transfer.

    2 Related Work

    Our work is closely related to cloth simulation and its applications in computer graphics. It is also relevant to the more recent differentiable simulation methods developed in the graphics and machine learning communities.
    Cloth simulation. Physics-based cloth simulation has been a popular topic in the graphics community for decades since clothing has been widely used in our daily lives. The implicit Euler integration is used to simulate cloth robustly with large time steps [Terzopoulos et al. 1987; Baraff and Witkin 1998] while introducing excessive numerical damping. To alleviate this problem, implicit and explicit methods (IMEX) [Bridson et al. 2003; Stern and Grinspun 2009] explicitly integrate elastic forces and implicitly integrate damping forces. Researchers have also introduced other variational integrators, e.g., BDF2 [Choi and Ko 2002] and Symplectic integrator [Stern and Desbrun 2006], to conserve the total energy of the system.
    For cloth modeled as a mass-spring system, Liu et al. [2013] treat the implicit Euler integration as an energy minimization problem. The global linear system then remains constant on run-time, and each spring constraint can be solved separately in a local step. That global/local solver idea is generalized as PD [Bouaziz et al. 2014], which supports material models whose elastic energy has a specific quadratic form. Projective Dynamic is further extended to support more general materials [Overby et al. 2017; Liu et al. 2017]. Though a local step in PD can be processed in parallel, the global step still needs to maintain a large pre-factorized sparse matrix and do back substitutions in each step. Another relevant idea is Position-based Dynamics (PBD) [Müller et al. 2007; Macklin et al. 2016], which iteratively projects each constraint in a non-linear Gauss-Seidel-like fashion, leading to highly parallelizable computation on GPUs.
    Both PD and PBD have led to a few follow-up works on more advanced speedup techniques. Komaritzan and Botsch [2018] present techniques to speed up PD with contact for physics-based character skinning. For PD and PBD in cloth simulation, Wang [2015] and a follow-up work [Wang and Yang 2016] propose a Chebyshev acceleration technique that can be applied to both PD and PBD to speed up convergence. Fratarcangeli et al. [2016] also introduce a parallel randomized Gauss-Seidel method that re-organizes the unknowns of the sparse linear system into a few independent blocks, which can be solved in parallel with a single Gauss-Seidel step. Recently, the computation of integration is further accelerated by the multigrid method, e.g., geometric multigrid scheme [Wang et al. 2018], algebraic multigrid scheme [Tamstorf et al. 2015], and Galerkin multigrid scheme [Xian et al. 2019].
    Last, our work is also relevant to previous attempts to matching cloth simulation with real fabric behaviors [Miguel et al. 2012; Wang et al. 2011; Miguel et al. 2013; Clyde et al. 2017], which is typically done by fitting constitutive material models with real material properties and can benefit from extra gradient information from a differentiable simulator [Hahn et al. 2019].
    Cloth contact and friction. Contact and friction are key ingredients in modern cloth simulation. Provot [1997] proposes a method called “impact zones” to collect the nodes involved in multiple collisions into impact zones, which are treated as rigid bodies. Harmon et al. [2008] improve the failsafe of impact zones by allowing some sliding motion of the incriminated vertices. Bridson et al. [2002] introduce a hybrid method to combine the idea of applying repulsion impulses, frictions, and impact zones to handle cloth collision robustly, which is still widely used in modern cloth simulators [Narain et al. 2012; Li et al. 2020]. To model friction fully implicitly, Brown et al. [2018] treat friction as an additional dissipative term in optimization. Regarding contact handling, repulsive forces or penalty methods have been widely used [Bouaziz et al. 2014; Wang 2015; Geilinger et al. 2020; Macklin et al. 2020], since they are easy to implement. However, these methods often need high stiffness in the penalty energy, leading to disturbing jittering artifacts that demand careful tuning. Recently, Li et al. [2020];, 2021] define a smooth dissipative potential for friction using barrier methods. Their method can guarantee interpenetration-free states after each time step without the need for parameter tuning.
    Unlike penalty-based methods, constraint-based collision handling methods formulate contact as constraints in the physics system. Otaduy et al. [2009] first formulate cloth contacts as a sparse linear complementarity problem (LCP). Their key idea is to interleave frictional contact iterations with normal contact iterations. Instead of using a pyramidal approximation of the Coulomb friction cone [Otaduy et al. 2009], Li et al. [2018b] rely upon the exact Coulomb friction cone and adaptively refine nodes to ensure an accurate treatment of frictional contact. Although constraint-based methods typically ensure the physics-based constraints characterizing contact and friction are satisfied after time integration, their computation cost is typically much more expensive than a penalty-based method. Recently, Ly et al. [2020] propose an efficient algorithm to incorporate frictional contact into Projective Dynamics so that non-penetration and Coulomb constraints are satisfied simultaneously in a semi-implicit way.
    Inverse dynamics. Inverse dynamics have been studied in robotics for decades to reconstruct internal forces or torques from the observations of robotic systems. However, existing methods usually focus on rigid-body systems only, which have less than a hundred degrees of freedom (DoFs) [Mistry et al. 2010; Dario Bellicoso et al. 2016; Kang et al. 2021]. Inverse dynamics for high-DoF systems like soft bodies, fluids, and cloth are still under exploration due to the lack of high-quality numerical solutions in robotics for both simulation and differentiation. One noticeable distinction between inverse dynamics and differentiable simulation is that differentiable simulation computes additional gradients for initial states, system parameters, and design parameters. Therefore, differentiable simulation enables more applications like system identification, inverse design, and real-to-sim matching that traditional inverse dynamics typically do not consider.
    Differentiable simulation. Differentiable simulation is a relatively recent concept explored in the graphics and machine learning community, but its original idea can be traced back to much earlier works in graphics decades ago. Perhaps one of the earliest such papers is Witkin and Kass [1988], which shows optimizing simulation to minimize an objective. Despite the recent advances in differentiable simulators in rigid-body dynamics [Popović et al. 2003; de Avila Belbute-Peres et al. 2018; Toussaint et al. 2018; Degrave et al. 2019; Qiao et al. 2020; Xu et al. 2021], soft-body dynamics [Hu et al. 2019;, 2020; Hahn et al. 2019; Geilinger et al. 2020; Du et al. 2021], and fluid dynamics [Treuille et al. 2003; McNamara et al. 2004; Wojtan et al. 2006; Schenck and Fox 2018; Holl et al. 2020], differentiable cloth simulation still lacks a good solution. One natural idea is to use particle-based strategies that approximate a nodal system of cloth with graph neural networks [Li et al. 2019; Sanchez-Gonzalez et al. 2020]. Although the neural networks are naturally differentiable, the physical accuracy is hard to guarantee.
    To accurately predict the behavior of real-world objects, recent papers [Hahn et al. 2019; Geilinger et al. 2020] present differentiable soft-body systems and mass-spring systems with implicit Euler time integration and penalty-based contacts. Although a few recent papers [Macklin et al. 2020; Li et al. 2020;, 2021] have introduced differentiable contact handling methods, none of them show a clothing example using the differentiability besides demonstrating the differentiability of their methods in theory. Liang et al. [2019] are the first to introduce a fully functional differentiable cloth simulation with contact, friction, and self-collision. Instead of constructing a static LCP problem, they develop a quadratic programming (QP) problem to minimize the change between the collision-free state and the original mesh state. Murthy et al. [2021] also present a differentiable cloth simulator with penalty-based frictional contact in their fully differentiable simulation and rendering pipeline. In this article, we build upon the differentiable PD framework [Du et al. 2021] to simulate cloth dynamics with dry frictional contact [Ly et al. 2020] and augment it with gradient computation.
    A significant challenge in differentiable simulation is the presence of non-smooth contact events, where non-smoothness can arise from discontinuous contact shapes [Popović et al. 2000], impulsive forces [Hu et al. 2019], or branches in contact laws [Ly et al. 2020], to name a few. Many existing differentiable simulators assume such non-smoothness does not affect the usability of gradients. Indeed, they present empirical results that observe the benefits of using gradients in downstream applications [de Avila Belbute-Peres et al. 2018; Du et al. 2021; Liang et al. 2019; Geilinger et al. 2020]. While our work also observes the advantages of gradients over gradient-free methods in several applications, we take one step further by analyzing the source of non-smoothness and discontinuities in contact-rich cloth simulation. We hope that our experience can serve as useful heuristics for applying differentiable simulation methods in the future.

    3 Background

    In this section, we briefly review the Projective Dynamics cloth simulation method with dry frictional contact described in Ly et al. [2020], on which our differentiable cloth simulator is based. Our core contribution lies in the development of gradient computation in this PD framework with dry frictional contact, which we detail in the next section.

    3.1 Projective Dynamics Method

    Implicit time integration. We model cloth as a nodal system with m 3D nodes. Let \( {\mathbf {x}}(t) \) and \( \mathbf {v}(t) \) be two vector functions from \( \mathbb {R}^+ \) to \( \mathbb {R}^{3m} \) indicating the positions and velocities of all nodes at time t. We consider the standard implicit time-stepping scheme discretizing \( {\mathbf {x}}(t) \) and \( \mathbf {v}(t) \) as follows:
    \( \begin{align} {\mathbf {x}}_{n+1} = &{\mathbf {x}}_n + h\mathbf {v}_{n+1}, \end{align} \)
    (1)
    \( \begin{align} \mathbf {v}_{n+1} = &\mathbf {v}_n + h\mathbf {M}^{-1}[\mathbf {f}_\text{int}({\mathbf {x}}_{n+1}) + \mathbf {f}_\text{ext}], \end{align} \)
    (2)
    where h is the time step size, \( \mathbf {M} \) a positive diagonal mass matrix of size \( 3m\times 3m \) , and \( \mathbf {f}_\text{int} \) and \( \mathbf {f}_\text{ext} \) the internal and external forces at each node stacked as two 3m-dimensional vectors, respectively. Note that we assume for now \( \mathbf {f}_\text{int} \) and \( \mathbf {f}_\text{ext} \) do not contain contact forces, which will be discussed separately in Section 3.2. We use the cloth material model described in Bouaziz et al. [2014] to define \( \mathbf {f}_\text{int} \) . The implicit time-stepping scheme connects the state of the nodal system \( ({\mathbf {x}}_n, \mathbf {v}_n) \) at time \( t_n \) to \( ({\mathbf {x}}_{n+1}, \mathbf {v}_{n+1}) \) at new time \( t_{n+1}=t_n+h \) .
    Optimization view. As discussed by Martin et al. [2011], the implicit time-stepping scheme can be rephrased as finding a saddle point of the following energy minimization problem:
    \( \begin{align} \min _{{\mathbf {x}}_{n+1}}\; \underbrace{\frac{1}{2h^2}({\mathbf {x}}_{n+1} - \mathbf {y})^\top \mathbf {M}({\mathbf {x}}_{n+1} - \mathbf {y})+W({\mathbf {x}}_{n+1})}_{g({\mathbf {x}}_{n+1})}, \end{align} \)
    (3)
    where \( \mathbf {y}= {\mathbf {x}}_{n}+h \mathbf {v}_n + h^2 \mathbf {M}^{-1} \mathbf {f}_\text{ext} \) is a constant vector that can be precomputed at the beginning of the current time step. The potential energy W defines the internal force \( \mathbf {f}_\text{int} \) by its spatial gradients: \( \mathbf {f}_\text{int}= -\nabla W({\mathbf {x}}_{n+1}) \) . It is easy to verify that setting the gradient of the objective function to zero leads to a system of equations identical to Equations (1) and (2).
    Local and global solvers in PD. The key assumptions in PD is that the internal energy W can be written as a sum of quadratic forms [Bouaziz et al. 2014; Liu et al. 2017]:
    \( \begin{align} W_i({\mathbf {x}}) = & \min _{\mathbf {p}_i\in \mathcal {M}_i}\;\underbrace{\frac{w_i}{2}\Vert \mathbf {A}_i{\mathbf {x}} - \mathbf {p}_i\Vert _2^2}_{\widetilde{W}_i({\mathbf {x}}, \mathbf {p}_i)}, \end{align} \)
    (4)
    \( \begin{align} W({\mathbf {x}}) =& \sum _i W_i({\mathbf {x}}). \end{align} \)
    (5)
    Here, each energy \( W_i \) projects \( \mathbf {A}_i{\mathbf {x}} \) , a linear transformation of \( {\mathbf {x}} \) , to its closest point in the set \( \mathcal {M}_i \) and scales its squared distance by a prespecified stiffness \( w_i \) . Both \( \mathbf {A}_i \) and \( \mathcal {M}_i \) are predefined and independent of \( {\mathbf {x}} \) . Here, \( \mathcal {M}_i \) is the constraint manifold, and \( \mathbf {p}_i \) is the auxiliary projection variable as defined in Bouaziz et al. [2014].
    With such an assumption on W, PD proposes a local-global solver to minimize a surrogate objective function:
    \( \begin{equation} \widetilde{g}({\mathbf {x}}_{n+1},\mathbf {p})=\frac{1}{2h^2}({\mathbf {x}}_{n+1}-\mathbf {y})^\top \mathbf {M}({\mathbf {x}}_{n+1}-\mathbf {y})+\sum _i \widetilde{W}_i({\mathbf {x}}_{n+1},\mathbf {p}_i), \end{equation} \)
    (6)
    where \( \mathbf {p} \) stacks up all \( \mathbf {p}_i \) from each \( W_i \) . In the local step, PD fixes \( {\mathbf {x}}_{n+1} \) and projects each \( \mathbf {p}_i \) to its corresponding \( \mathcal {M}_i \) by solving Equation (4). Such a local step can be done in parallel for each \( \widetilde{W}_i \) . In the global step, PD fixes \( \mathbf {p} \) and minimizes \( \widetilde{g} \) as a function of \( {\mathbf {x}}_{n+1} \) , which turns out to have a closed-form solution:
    \( \begin{align} \underbrace{\left(\mathbf {M}+h^2\sum _i w_i \mathbf {A}_i^\top \mathbf {A}_i\right)}_{\mathbf {P}}{\mathbf {x}}_{n+1} = \underbrace{\mathbf {M}\mathbf {y}+ h^2\sum _i w_i \mathbf {A}_i^\top \mathbf {p}_i}_{\mathbf {b}(\mathbf {p})}. \end{align} \)
    (7)
    By alternating between the local and global steps, PD monotonically decreases the surrogate energy \( \widetilde{g} \) until convergence, which can be shown to agree with the saddle point of g [Liu et al. 2017]. The source of efficiency in PD comes from the observation that \( \mathbf {P} \) is a constant matrix that can be prefactorized at the beginning of the simulation, leading to an efficient global step requiring back-substitution only.

    3.2 Dry Frictional Contact in Projective Dynamics

    Signorini-Coulomb law. Ly et al. [2020] augment the standard PD framework described above with non-penetration collision and Coulomb friction by assuming contact applies to nodes only. At each time step, assuming a collision detection algorithm has identified a set \( \mathcal {I}\subseteq \lbrace 1,2,3,\ldots ,m\rbrace \) , which describes the indices of contact nodes. For each node \( j\in \mathcal {I} \) , the Signorini-Coulomb law [Brogliato 2016] requires its local force \( {\bf r}_j \) and velocity \( \mathbf {u}_j \) to satisfy one of the following three conditions:
    \( \begin{equation*} \left\{\begin{array}{lr} \text{Take off:} {\bf r}_j = \mathbf{0}, {\mathbf{u}}_{j|N} > 0, & {(8\text{a})} \\ \text{Stick: } ||{{\bf r}_{j|T}}|| < \mu {\bf r}_{j|N}, {\mathbf{u}}_j=\mathbf{0}, & {(8\text{b})} \\ \text{Slip: } ||{{\bf r}_{j|T}}|| = \mu {\bf r}_{j|N}, {\mathbf{u}}_{j|N}=0, {\bf r}_{j|T} \parallel {\mathbf{u}}_{j|T}, {\bf r}_{j|T} \cdot {\mathbf{u}}_{j|T} \leq 0. & {(8\text{c})} \end{array}\right. \end{equation*} \)
    Here, \( \mu \) is the frictional coefficient, and \( \mathbf {u}_j \) and \( {\bf r}_j \) are the nodal velocity and contact force represented in the local contact frame spanned by the tangential plane and contact normal on the contact surface. The notations \( j|T \) and \( j|N \) represent the tangential and normal components of a 3D vector defined in the local frame. We further define \( \mathcal {C}^j\subseteq \mathbb {R}^3\times \mathbb {R}^3 \) as the set of valid \( ({\bf r}_j, \mathbf {u}_j) \) pairs described by the conditions above, allowing us to rewrite Equation (8) compactly: \( ({\bf r}_j, \mathbf {u}_j)\in \mathcal {C}^j \) .
    Implicit time integration with dry frictional contact. The original implicit time integration now needs to be augmented with additional constraints describing contact conditions [Ly et al. 2020]:
    \( \begin{equation} \left\lbrace \begin{array}{lr} {\mathbf {x}}_{n+1} = {\mathbf {x}}_{n} + h\mathbf {v}_{n+1}, \\ \mathbf {v}_{n+1} = \mathbf {v}_{n} + h\mathbf {M}^{-1}[\mathbf {f}_\text{int}({\mathbf {x}}_{n+1})+\mathbf {f}_\text{ext}+{\mathbf {J}}_n^\top ({\mathbf {x}}_{n}, \mathbf {v}_{n}) {\bf r}_{n+1}], \\ \mathbf {u}_{n+1} = {\mathbf {J}}_n({\mathbf {x}}_{n}, \mathbf {v}_{n}) \mathbf {v}_{n+1}, \\ ({\bf r}_{n+1,j}, \mathbf {u}_{n+1,j}) \in \mathcal {C}^j_{n}, \forall j\in \mathcal {I}_n. \end{array}\right. \end{equation} \)
    (9)
    Here, we have added the subscript n in the definitions of the contact set \( \mathcal {I} \) and the contact condition \( \mathcal {C}^j \) described above to specify the time step they are defined from. The notation \( {\bf r}_{n+1,j} \) and \( \mathbf {u}_{n+1,j} \) select the 3D force and velocity corresponding to the jth node from \( {\bf r}_{n+1} \) and \( \mathbf {u}_{n+1} \) , respectively. The Jacobian matrix \( {\mathbf {J}}_n \) of size \( 3 |\mathcal {I}_n|\times 3m \) selects global vectors defined on the contact nodes and computes their coordinates in the local contact frames. Note that our definition of \( {\mathbf {J}}_n \) implies that it is computed in an explicit manner, i.e., it relies on the last state \( ({\mathbf {x}}_n, \mathbf {v}_n) \) entering the nth time step. For brevity, this background section will describe simple contact events between a node and a static plane, in which case \( {\mathbf {J}}_n \) is a constant matrix that does not need to be computed from \( ({\mathbf {x}}_n, \mathbf {v}_n) \) . Extensions to more sophisticated contact events, e.g., self-collisions between multiple contact nodes or contact events between a node and a non-planar obstacle, can be found in Ly et al. [2020] and in our implementation and experiments.
    Projective Dynamics with dry frictional contact. The core idea in Ly et al. [2020] is an additional local step in PD that solves each contact node independently. Noting that the contact conditions are primarily defined on nodal velocities instead of nodal positions, Ly et al. [2020] first rewrite the global step in Equation (7) as an equation of velocities:
    \( \begin{align} \mathbf {P}\mathbf {v}_{n+1} = \underbrace{\frac{1}{h}[\mathbf {b}(\mathbf {p}) - \mathbf {P}{\mathbf {x}}_{n}]}_{\widehat{\mathbf {b}}(\mathbf {p})}. \end{align} \)
    (10)
    The velocity-based PD global-local steps then alternate between this new global solver and the original local step, which is unaffected by this change of variables. By comparing Equations (9) and (10), we can see that incorporating the contact force adds an additional impulse \( h{\mathbf {J}}_n^\top {\bf r}_{n+1} \) to the right-hand side of the global step:
    \( \begin{align} \mathbf {P}\mathbf {v}_{n+1}=\widehat{\mathbf {b}}(\mathbf {p})+h{\mathbf {J}}_n^\top {\bf r}_{n+1}. \end{align} \)
    (11)
    The goal of the global solver is now to find \( (\mathbf {v}_{n+1}, {\bf r}_{n+1}) \) that satisfy contact conditions at each j. Noting that in Equation (11), \( \mathbf {P} \) is the only operator that couples unknown contact forces from different j, Ly et al. [2020] propose the following iterative solver based on the decomposition of \( \mathbf {P} \) to solve Equation (11):
    \( \begin{align} \mathbf {M}\mathbf {v}_{n+1}^{k+1} = \widehat{\mathbf {b}}(\mathbf {p}) - \underbrace{\left(h^2\sum _{i} w_i\mathbf {A}_i^\top \mathbf {A}_i\right)}_{\mathbf {P}- \mathbf {M}}\mathbf {v}_{n+1}^{k} + h{\mathbf {J}}_n^\top {\bf r}_{n+1}^{k+1}, \end{align} \)
    (12)
    where the superscripts k and \( k+1 \) indicate two consecutive iterations in the iterative solver at fixed time step \( n+1 \) . After iteration k, \( {\bf r}_{n+1}^{k+1} \) is updated using \( \mathbf {v}_{n+1}^{k} \) to enforce the Signorini-Coulomb law, which is then used to update \( \mathbf {v}_{n+1}^{k+1} \) according to Equation (12). It is easy to see that the proposed iterative solver fully decouples the momentum equation on each node, allowing Ly et al. [2020] to enforce the Signorini-Columb law by adjusting \( (\mathbf {v}_{n+1,j},{\bf r}_{n+1,j}) \) on each contact node j independently in a straightforward manner. When the iterative solver converges, Ly et al. [2020] prove that the result is indeed a solution to Equation (9). We refer the readers to the original paper for the details.

    4 Differentiable Cloth Simulation

    We now describe in detail how we extend the forward simulator in Section 3 to build a differentiable cloth simulator. We start by differentiating implicit time integration in PD without contact, followed by explaining how contact gradients can be added to this framework. Compared with other differentiable simulators, our simulator is unique because of its treatment of the contact-rich nature of cloth simulation: many existing differentiable simulators focus on sparse contact events in rigid-body or deformable-body dynamics [Geilinger et al. 2020; Hu et al. 2019; Du et al. 2021], and the state-of-the-art differentiable cloth simulation method [Liang et al. 2019] handles rich contact events but without physics-based contact forces or friction. To our best knowledge, our work is the first to present a differentiable cloth simulator that can handle rich contact events with Coulomb’s law of friction.

    4.1 Gradients without Contact

    Differentiating implicit time integration. The core step in building a differentiable simulator based on implicit time-stepping scheme is to backpropgate gradients through the implicit integration described in Equations (1) and (2), or equivalently, to derive the Jacobian of the output \( ({\mathbf {x}}_{n+1},\mathbf {v}_{n+1}) \) with respect to the input \( ({\mathbf {x}}_n, \mathbf {v}_{n}) \) . Mature techniques such as sensitivity analysis, adjoint method, and implicit function theorem have proven to be successful in computing such gradients [Hahn et al. 2019; Geilinger et al. 2020; Du et al. 2021]. To sketch the idea, we plug \( \mathbf {v}_{n+1} \) from Equation (2) into Equation (1):
    \( \begin{equation} \begin{aligned}{\mathbf {x}}_{n+1} = &#x0026;\; {\mathbf {x}}_n+h\mathbf {v}_n+h^2\mathbf {M}^{-1}[\mathbf {f}_\text{int}({\mathbf {x}}_{n+1})+\mathbf {f}_\text{ext}] \\ = &#x0026;\; \mathbf {y}+h^2\mathbf {M}^{-1}\mathbf {f}_\text{int}({\mathbf {x}}_{n+1}), \end{aligned} \end{equation} \)
    (13)
    which is essentially the first-order optimality condition in Equation (3). Differentiating \( {\mathbf {x}}_{n} \) on both sides gives
    \( \begin{equation} \begin{aligned}\frac{\partial {\mathbf {x}}_{n+1}}{\partial {\mathbf {x}}_n} = &#x0026;\; \mathbf {I}+ h^2 \mathbf {M}^{-1} \frac{\partial \mathbf {f}_\text{int}({\mathbf {x}}_{n+1}) }{\partial {\mathbf {x}}_{n+1}} \frac{\partial {\mathbf {x}}_{n+1} }{\partial {\mathbf {x}}_{n} } \\ =&#x0026;\; \mathbf {I}- h^2 \mathbf {M}^{-1} \nabla ^2 W({\mathbf {x}}_{n+1})\frac{\partial {\mathbf {x}}_{n+1} }{\partial {\mathbf {x}}_{n} }, \end{aligned} \end{equation} \)
    (14)
    or equivalently,
    \( \begin{equation} \begin{aligned}\frac{\partial {\mathbf {x}}_{n+1}}{\partial {\mathbf {x}}_n} = &#x0026;\; [\mathbf {I}+h^2\mathbf {M}^{-1}\nabla ^2 W({\mathbf {x}}_{n+1})]^{-1} \\ = &#x0026;\; [\mathbf {M}+ h^2\nabla ^2 W({\mathbf {x}}_{n+1})]^{-1}\mathbf {M}. \end{aligned} \end{equation} \)
    (15)
    In backpropagation, such a Jacobian matrix is coupled with the gradients of a loss function L, which are passed to the previous state (assuming the gradients below are both column vectors):
    \( \begin{equation} \begin{aligned}\frac{\partial L}{\partial {\mathbf {x}}_n} = &#x0026;\; \left(\frac{\partial {\mathbf {x}}_{n+1}}{\partial {\mathbf {x}}_n}\right)^\top \frac{\partial L}{\partial {\mathbf {x}}_{n+1}} \\ = &#x0026;\; \mathbf {M}\underbrace{[\mathbf {M}+ h^2\nabla ^2 W({\mathbf {x}}_{n+1})]^{-1} \frac{\partial L}{\partial {\mathbf {x}}_{n+1}}}_{\mathbf {z}_{n+1}}. \end{aligned} \end{equation} \)
    (16)
    Here, we obtain the adjoint vector \( \mathbf {z}_{n+1} \) by solving the linear system of equations with the matrix \( \mathbf {M}+ h^2\nabla ^2 W({\mathbf {x}}_{n+1}) \) on the left-hand side, which avoids an explicit inversion of the large and sparse matrix. Backpropagating gradients of L with respect to \( \mathbf {v}_{n} \) and \( \mathbf {v}_{n+1} \) can be derived similarly. In fact, it solves the same linear system but with a different vector \( \frac{\partial L}{\partial \mathbf {v}_{n+1}} \) on the right-hand side.
    Differentiating with Projective Dynamics. With assumptions on the energy form W in PD, Du et al. [2021] show that we can speed up the computation in \( \mathbf {z}_{n+1} \) by exploiting the special form of \( \nabla ^2 W \) . The first- and second-order derivatives in Equation (5) are given by the following equations [Du et al. 2021; Liu et al. 2017]:
    \( \begin{align} \nabla W_i({\mathbf {x}}) = &#x0026;\; w_i\mathbf {A}_i^\top [\mathbf {A}_i{\mathbf {x}} - \mathbf {p}_i^*({\mathbf {x}})], \end{align} \)
    (17)
    \( \begin{align} \nabla ^2 W_i({\mathbf {x}}) = &#x0026;\; w_i\mathbf {A}_i^\top \mathbf {A}_i - w_i\mathbf {A}_i^\top \frac{\partial \mathbf {p}_i^*}{\partial {\mathbf {x}}}, \end{align} \)
    (18)
    where \( \mathbf {p}_i^*({\mathbf {x}})=\arg \min _{\mathbf {p}_i\in \mathcal {M}_i}\widetilde{W}_i({\mathbf {x}},\mathbf {p}_i) \) is the projection of \( \mathbf {A}_i{\mathbf {x}} \) onto \( \mathcal {M}_i \) obtained in the local step. Interested readers can refer to the appendix of Liu et al. [2017] for their derivation details. We plug them to \( \mathbf {z}_{n+1} \) and rewrite the linear system as follows:
    \( \begin{align} \left(\vphantom{\sum _{i}}\right.\mathbf {P}- \underbrace{h^2\sum _i w_i \mathbf {A}_i^\top \frac{\partial \mathbf {p}_i^*}{\partial {\mathbf {x}}}\Bigr |_{{\mathbf {x}}_{n+1}}}_{\Delta \mathbf {P}}\left.\vphantom{\sum _{i}}\right)\mathbf {z}_{n+1}=\frac{\partial L}{\partial {\mathbf {x}}_{n+1}}. \end{align} \)
    (19)
    Noting that a prefactorization of \( \mathbf {P} \) exists in Projective Dynamics, Du et al. [2021] propose the following iterations to solve \( \mathbf {z}_{n+1} \) :
    \( \begin{align} \mathbf {P}\mathbf {z}_{n+1}^{k+1}=\Delta \mathbf {P}\mathbf {z}_{n+1}^k + \frac{\partial L}{\partial {\mathbf {x}}_{n+1}}. \end{align} \)
    (20)
    Similar to the local-global steps in Projective Dynamics, a local step can evaluate \( \Delta \mathbf {P} \) across each \( \nabla ^2 W_i \) in parallel, and a global step, which reuses \( \mathbf {P} \) , can solve \( \mathbf {z}_{n+1}^{k+1} \) with backsubstitution only. Du et al. [2021] show that such a local-global solver is empirically faster than directly solving Equation (16), which resembles the source of efficiency in the original PD method.

    4.2 Gradients with Contact

    While Du et al. [2021] have discussed extensively how to fuse backpropagation into the Projective Dynamics framework, its support of contact is limited to non-penetration conditions without a proper treatment on friction. However, other prior papers have provided solutions to deriving gradients with contact governed by Signorini-Coulomb law, but they focus on either small-scale problems (e.g., rigid bodies in de Avila Belbute-Peres et al. [2018]) or sparse contact events on a static ground only [Geilinger et al. 2020]. Here, we present our differentiable cloth simulator that both inherits the speedup from PD and handles gradients with complicated contact events like self-collisions, which are overlooked in many existing differentiable simulators but common in cloth simulation.
    Differentiating implicit time integration with contact. Consider the nth time step in simulation with contact, which takes as input \( ({\mathbf {x}}_n, \mathbf {v}_n) \) and computes \( ({\mathbf {x}}_{n+1}, \mathbf {v}_{n+1}, {\bf r}_{n+1}, \mathbf {u}_{n+1}) \) that satisfy Equation (9). In particular, for each contact node j, the forward simulation identifies which one of the contact conditions in Equation (8) applies to \( ({\bf r}_{n+1,j}, \mathbf {u}_{n+1,j}) \) . As an example, assuming a contact node j satisfies Equation (8c), its constraints can be summarized as follows:
    \( \begin{align} \Vert {\bf r}_{n+1,j|T}\Vert - \mu {\bf r}_{n+1,j|N} = &#x0026;\; 0, \end{align} \)
    (21a)
    \( \begin{align} \mathbf {u}_{n+1,j|N} = &#x0026;\; 0, \end{align} \)
    (21b)
    \( \begin{align} (\mathbf {u}_{n+1,j|T})_x({\bf r}_{n+1,j|T})_y - (\mathbf {u}_{n+1,j|T})_y ({\bf r}_{n+1,j|T})_x = &#x0026;\; 0, \end{align} \)
    (21c)
    \( \begin{align} \mathbf {u}_{j|T}\cdot {\bf r}_{j|T} \le &#x0026;\; 0, \end{align} \)
    (21d)
    where \( (\cdot)_x \) and \( (\cdot)_y \) extract the x and y components of a two-dimensional vector, respectively. The other two cases of Equation (8) similarly enforce three equality constraints ( \( {\bf r}_{n+1,j}=0 \) for taking off and \( \mathbf {u}_{n+1,j}=0 \) for sticking) and a number of inequality constraints on \( ({\bf r}_{n+1,j}, \mathbf {u}_{n+1,j}) \) . If the inequality constraint is inactive, then slightly perturbing the inputs to the simulator will keep \( ({\bf r}_{n+1,j},\mathbf {u}_{n+1,j}) \) inside its interior. Therefore, we can remove the inactive inequality when deducing the gradients during backpropagation. When the inequality constraint is active, the gradients of the simulation are not well defined, because it represents corner cases that can be categorized into more than one contact types. These corner cases introduce non-smoothness to the simulator, but it is worth mentioning that they do not create discontinuities, just like the standard rectifier (ReLU) activation function is still continuous despite the non-smoothness at its turning point.
    After removing the inequality constraint, we further define a nonlinear vector function \( \mathbf {C}^j_{n}({\bf r}_{n+1,j},\mathbf {u}_{n+1,j}) \) for the left-hand side of the three equality constraints and compactly represent the constraints as \( \mathbf {C}^j_{n}({\bf r}_{n+1,j},\mathbf {u}_{n+1,j})=0 \) . It is convenient that \( \mathbf {C}^j_{n} \) for all three cases in Equation (8) have three dimensional outputs. We can stack \( \mathbf {C}^j_{n} \) from all contact nodes \( j\in \mathcal {I}_n \) into a nonlinear function \( \mathbf {C}_n(\cdot ,\cdot):\mathbb {R}^{3|\mathcal {I}_n|}\times \mathbb {R}^{3|\mathcal {I}_n|}\rightarrow \mathbb {R}^{3|\mathcal {I}_n|} \) (note that we only evaluate the function at valid input pairs that lie in \( \mathcal {C}^j \) ), allowing us to restate Equation (9) as follows:
    \( \begin{equation} \left\lbrace \!\!\begin{array}{lr} \mathbf {v}_{n+1} = \mathbf {v}_{n} + h\mathbf {M}^{-1}[\mathbf {f}_\text{int}({\mathbf {x}}_{n} + h\mathbf {v}_{n+1})+\mathbf {f}_\text{ext}+{\mathbf {J}}_n^\top {\bf r}_{n+1}], \\ \mathbf {C}_n({\bf r}_{n+1},{\mathbf {J}}_{n}\mathbf {v}_{n+1})=\mathbf {0}. \end{array}\right. \end{equation} \)
    (22)
    Note that we choose \( \mathbf {v}_{n+1} \) instead of \( {\mathbf {x}}_{n+1} \) as our variable to be consistent with the forward PD simulation with contact described by Ly et al. [2020]. Differentiating both sides of the first equation with respect to \( \mathbf {v}_n \) leads to the following result:
    \( \begin{align} \frac{\partial \mathbf {v}_{n+1}}{\partial \mathbf {v}_n} = &#x0026;\; \mathbf {I}+ h\mathbf {M}^{-1}\left[-h\nabla ^2 W({\mathbf {x}}_{n} + h\mathbf {v}_{n+1}) + {\mathbf {J}}_n^\top \frac{\partial {\bf r}_{n+1}}{\partial \mathbf {v}_{n+1}}\right]\frac{\partial \mathbf {v}_{n+1}}{\partial \mathbf {v}_n}, \end{align} \)
    (23)
    \( \begin{align} \frac{\partial \mathbf {v}_{n+1}}{\partial \mathbf {v}_n} = &#x0026;\; \left[\mathbf {I}+ h^2\mathbf {M}^{-1} \nabla ^2 W({\mathbf {x}}_n + h\mathbf {v}_{n+1}) -h\mathbf {M}^{-1}{\mathbf {J}}_n^\top \frac{\partial {\bf r}_{n+1}}{\partial \mathbf {v}_{n+1}}\right]^{-1} \end{align} \)
    (24)
    \( \begin{align} = &#x0026;\; \left[\vphantom{\sum _{i}}\right.\mathbf {M}+ h^2\nabla ^2 W({\mathbf {x}}_{n} + h\mathbf {v}_{n+1}) - \underbrace{ h{\mathbf {J}}_n^\top \frac{\partial {\bf r}_{n+1}}{\partial \mathbf {v}_{n+1}}}_{\Delta \mathbf {R}^\top }\left.\vphantom{\sum _{i}}\right]^{-1}\mathbf {M}. \end{align} \)
    (25)
    Comparing it with Equation (15), we see the matrix to be inverted now has an additional component dependent on \( \frac{\partial {\bf r}_{n+1}}{\partial \mathbf {v}_{n+1}} \) , which we obtain from differentiating the constraint \( \mathbf {C}_n=\mathbf {0} \) in Equation (22):
    \( \begin{align} \frac{\partial \mathbf {C}_n}{\partial {\bf r}}\Bigr |_{{\bf r}_{n+1}}\frac{\partial {\bf r}_{n+1}}{\partial \mathbf {v}_{n+1}} + \frac{\partial \mathbf {C}_n}{\partial \mathbf {u}}\Bigr |_{{\mathbf {J}}_n\mathbf {v}_{n+1}}{\mathbf {J}}_n = \mathbf {0}, \end{align} \)
    (26)
    \( \begin{align} \frac{\partial {\bf r}_{n+1}}{\partial \mathbf {v}_{n+1}} = -\left(\frac{\partial \mathbf {C}_n}{\partial {\bf r}}\Bigr |_{{\bf r}_{n+1}}\right)^{-1} \frac{\partial \mathbf {C}_n}{\partial \mathbf {u}}\Bigr |_{{\mathbf {J}}_n\mathbf {v}_{n+1}}{\mathbf {J}}_n. \end{align} \)
    (27)
    We stress that computing \( \frac{\partial \mathbf {C}_n}{\partial {\bf r}} \) and \( \frac{\partial \mathbf {C}_n}{\partial \mathbf {u}} \) is trivial, because both partial derivatives are \( 3\, \times \, 3 \) block-diagonal matrices. Therefore, \( \Delta \mathbf {R} \) can be parallelized among all contact nodes. Backpropagation through \( \mathbf {v}_{n+1} \) to \( \mathbf {v}_n \) can be implemented with the same adjoint method before, which we give in the equation below for completeness with the notation \( \mathbf {z}_{n+1} \) overloaded:
    \( \begin{align} \frac{\partial L}{\partial \mathbf {v}_n} = \mathbf {M}\underbrace{[\mathbf {M}+ h^2\nabla ^2 W({\mathbf {x}} + h \mathbf {v}_{n+1}) - \Delta \mathbf {R}]^{-1}\frac{\partial L}{\partial \mathbf {v}_{n+1}}}_{\mathbf {z}_{n+1}}. \end{align} \)
    (28)
    Speedup with Projective Dynamics. With additional information about W from PD, we can rewrite the adjoint vector \( \mathbf {z}_{n+1} \) in Equation (28) by comparing it with Equation (19):
    \( \begin{align} (\mathbf {P}- \Delta \mathbf {P}- \Delta \mathbf {R})\mathbf {z}_{n+1}=\frac{\partial L}{\partial \mathbf {v}_{n+1}}, \end{align} \)
    (29)
    which naturally leads to the following iterative solver:
    \( \begin{align} \mathbf {P}\mathbf {z}_{n+1}^{k+1}=(\Delta \mathbf {P}+ \Delta \mathbf {R})\mathbf {z}_{n+1}^k + \frac{\partial L}{\partial \mathbf {v}_{n+1}}. \end{align} \)
    (30)
    Comparing it with Equation (20), we see the role of \( \Delta \mathbf {P} \) is replaced with \( \Delta \mathbf {P}+ \Delta \mathbf {R} \) . Since we have shown that computing \( \Delta \mathbf {R} \) can be massively parallelized among contact nodes, it is suitable for contact-rich cloth simulation and preserves the efficiency of the local-global solver.
    Convergence. In theory, such an iterative solver is guaranteed to converge from any initial guesses of \( \mathbf {z}_{n+1} \) when the spectral radius \( \rho [\mathbf {P}^{-1}(\Delta \mathbf {P}+ \Delta \mathbf {R})] \lt 1 \) . Empirically, we notice in our cloth simulation that divergence is uncommon, especially when high-precision back-propagation is not required (Section 6). When the iterative solver fails to converge, we switch back to a direct sparse matrix solver to solve Equation (29).
    Extensions. We deliberately skipped the full definition of \( {\mathbf {J}}_n \) in all equations above for a clearer presentation of the main idea behind our differentiable cloth simulation. We now elaborate on the role of \( {\mathbf {J}}_n \) and discuss its implications on more complex collisions. When the contact surface is static but non-planar with spatially varying surface normals, \( {\mathbf {J}}_n \) is dependent on the positions of the nodes where the contact events occur. In this case, we estimate the contact normal based on the positions where the contact events occur, which are given by any collision detection algorithms. Replacing \( {\mathbf {J}}_n \) with \( {\mathbf {J}}_n({\mathbf {x}}_{n}, \mathbf {v}_{n}) \) requires very minimal extra work to the gradients in Section 4.2, as it contributes to the gradients with respect to \( \mathbf {v}_n \) in a straightforward manner. Another type of collisions we consider is self-collisions between nodes. In this case, contact occurs between pairs of nodes where the contact normals are defined by the relative position between two nodes in the pair. Therefore, we can still define \( {\mathbf {J}}_n \) as a function of \( {\mathbf {x}}_n \) with each row block now consisting of two blocks of nonzero elements corresponding to the two contact nodes in the pair. Similarly, the gradient derivation remains unchanged except that the dependencies between \( {\mathbf {J}}_n \) and \( ({\mathbf {x}}_n, \mathbf {v}_n) \) need to be added to Equation (23) . As we inherit from Ly et al. [2020] the contact model on nodes only, we also inherit its limitation of not handling other types of self-collisions like edge-edge collisions or vertex-face collisions. We leave the derivation of gradients with such cases as future work.

    5 Evaluations

    This section evaluates and discusses numerical properties of the proposed differentiable cloth simulation method in Section 4. We first evaluate its gradients by analyzing their source of non-smoothness and studying their usefulness in high-dimensional optimization problems. Next, we compare the dry frictional model with the contact model in the state-of-the-art differentiable cloth simulation method [Liang et al. 2019] and discuss their differences. Finally, we analyze the numerical properties of our iterative solver in back-propagation and compare its performance with a direct linear solver.

    5.1 Continuity and Smoothness

    A fundamental assumption in any differentiable simulators is that the underlying physics system is smooth so that gradients can be well-defined. Equation (9) contains three possible sources of discontinuities and non-smoothness in the order of their occurrences: determining the contact set \( \mathcal {I}_n \) , computing \( {\mathbf {J}}_n \) that represents the local contact frames, and choosing between three branches from \( \mathcal {C}^j_n \) in Equation (8). Below, we discuss the effects from each of them in detail.
    Continuity of branches in contact conditions. First, we empirically demonstrate through an experiment below that switching between the three branches in Equation (8) does not create discontinuity in Equation (9). In particular, consider the nth time step and assume that \( \mathcal {C}_n^j \) is fixed and that \( {\mathbf {J}}_n \) is a continuous function of \( ({\mathbf {x}}_n, \mathbf {v}_n) \) , if we treat Equation (9) as a function that takes as input \( ({\mathbf {x}}_n,\mathbf {v}_n) \) and returns \( ({\mathbf {x}}_{n+1},\mathbf {v}_{n+1}) \) , we will validate that this function is continuous. In other words, perturbing \( ({\mathbf {x}}_n, \mathbf {v}_n) \) a little will not cause jumps in the resultant \( ({\mathbf {x}}_{n+1},\mathbf {v}_{n+1}) \) even though the corresponding \( {\bf r}_{n+1} \) may need to switch between branches during the perturbation. The intuition is that the three branches in Equation (8) together define a connect set \( \mathcal {C}_n^j \) in which \( ({\bf r}_{n+1,j},\mathbf {u}_{n+1,j}) \) from one branch can smoothly transition to another.
    We empirically validate the continuity of branch switching with the following experiment. We simulate a piece of cloth on a rigid, static, and frictional sphere for 200 timesteps. The sphere has one frictional coefficient \( \mu \) , and we repeat the experiments by varying \( \mu \) from 0 to 0.35 (Figure 2). When \( \mu \) is large, all nodes are fixed on the sphere due to their large static friction. When \( \mu \) is close to 0, the cloth slides on the sphere under gravity and takes off from the sphere near the end of the simulation. As \( \mu \) changes from 0.35 to 0, each node on the cloth undergoes the transition from sticking to slipping, and eventually takes off. However, since each node has a different contact normal, the turning point for each of them to switch between these branches is different. Overall, when we gradually change \( \mu \) , the ratio among the numbers of nodes with static friction, dynamic friction, and no friction at the end of the simulation also changes gradually, allowing us to observe how switching between these branches affects the continuity of the physical quantities in simulation.
    We summarize the quantitative results from this simulation experiment in Figure 2 (green curves). Specifically, we plot the velocity of three nodes A, B, and C as a function of \( \mu \) at an intermediate time step (50) and near the end of simulation (200). We select three nodes from the corners, edge centers, and the center of the cloth, respectively. All velocities converge to 0 when \( \mu \) becomes large, which is as expected, because a large \( \mu \) leads to static friction that freezes these nodes. We also notice a turning point in the velocity curve for each node, indicating a switch between static and dynamic friction. The turning points are located at slightly different \( \mu \) values for each node, because their normals on the sphere surface are different. We observe from the figure that the branches in Equation (8) do not cause discontinuities.
    While the above experiment confirms that these branches do not create discontinuities, we note that branch switching does introduce non-smoothness due to corner cases that can be arbitrarily classified into either branch, e.g., when a node is static but about to slip. Gradients at these corner cases are not well-defined, but the subset these corner cases occupy in \( \mathcal {C}^j_n \) has measure zero. Therefore, we still expect gradient-based optimization to be functional, just like we have observed the success of gradient-based optimization in modern deep learning with non-smooth but continuous operators, e.g., ReLU, max pooling, and so on.
    Continuity of local frames at contact nodes. A second source of possible discontinuity and non-smoothness comes from computing \( {\mathbf {J}}_n \) , which consists of two steps: determining a contact point on the contact surfaces and calculating the local normal and tangent vectors. Both steps depend on the geometric representation of the contact surfaces. As pointed out by previous papers in rigid body dynamics [Popović et al. 2000; Werling et al. 2021], contact surface discretization causes jumps in surface normals, and therefore they create discontinuities in velocity and position calculation. To confirm this observation in cloth simulation, we repeat the previous experiment by replacing the analytically described sphere with a triangulated one (pink triangulated sphere surface in Figure 2 right). After such replacement, we clearly observe jumps in the intermediate and final velocity from the selected contact nodes (pink curves in Figure 2). Note that the jumps in velocities from the final velocities are less evident than from the intermediate velocities, because the vertical axes have different ranges. This observation agrees with similar experiments from previous papers about rigid body dynamics and suggests that one should favor analytical surfaces in differentiable cloth simulation whenever possible.
    We end our discussion on the discontinuities from \( {\mathbf {J}}_n \) with two more remarks. First, we notice the contact node velocity curves in Figure 2 are partitioned into a small number of continuous segments, which is consistent with the result reported by previous work [Popović et al. 2000] discussing contact events on rigid body dynamics. Second, if the scene contains multiple objects the cloth can be in contact with, it is not uncommon to see jumps in the locations of contact events, e.g., from one object to another, even with a continuous representation of each object. Such jumps naturally lead to large discontinuities in simulation. While we do not provide solutions to it in this work, a closely related issue has been extensively studied in differentiable rendering [Li et al. 2018a] from which we may borrow inspirations in the future.
    Continuity of contact sets. The last and most common source of discontinuity comes from deciding the contact set at each time step, i.e., whether a node should be added to the contact set or not. Obviously, this selection process is not continuous. It is worth noting that having a constant contact set does not cause too much trouble for gradient computation regardless of its size (Figure 2). Instead, it is the change in the contact set from time to time that brings in discontinuities, because whenever a new node is put in the contact set, it adds an impulsive force to the right-hand side of Equation (9).
    To better understand the effects of changes in contact sets, we hang a piece of cloth above a static sphere in simulation and let the lower half of the cloth fall and slide on the sphere due to gravity (Figure 3 top). We equip this experiment with a system identification task of the frictional coefficient \( \mu \) and the stiffness parameter k of the cloth: given a motion sequence of the cloth generated from a pair of unknown \( \mu \) and k, we define a loss function that sums over all time steps the squared distance between each node position in simulation and its corresponding location in the given motion sequence. We repeat the task with four settings of the sphere at different horizontal offsets, leading to a varying frequency of contact events among them.
    We plot the landscape of the loss function in Figure 3 (middle) and compare its smoothness among the four settings with different frequencies of contact events. At first glance, it seems that all four landscapes are equally smooth. However, magnifying a small region of each landscape shows that there is a profound distinction between their continuity and smoothness (Figure 3 bottom): as establishing and breaking contact becomes more frequent, the local landscape tends to be bumpier.
    Summary. We have discussed the three sources of potential discontinuities and non-smoothness in our differentiable cloth simulator ordered by their damage to the gradients: the branches in the contact conditions only introduce non-smoothness and maintain continuity; contact surface discretization creates discontinuities due to the jumps of normals across adjacent triangles, but we still expect continuity almost everywhere; adding or deleting nodes in the contact set creates frequent and the most severe discontinuities due to the introduction or removal of impulsive forces.

    5.2 Usefulness of Gradients

    One advantage of gradient-based approaches over their gradient-free counterparts is their faster convergence rate: typically, gradient-free methods explore the local landscape of an objective function by evaluating it with massive samples in the neighborhood. However, such a sampling approach quickly becomes less efficient as the dimension of the decision variables grows higher. Due to this reason, we hypothesize that using gradients from our differentiable simulator will become most beneficial when we have a large number of decision variables. We verify this hypothesis using a control optimization problem: we simulate a piece of cloth with time-invariant external forces applied to each node. The goal is to design the force at each node to pull the center of the cloth to a target position in the end (Figure 4 top). We simulate the cloth with four settings on its DoFs: \( 4\times 4 \) nodes, \( 5\times 5 \) nodes, \( 7\times 7 \) nodes, and \( 10\times 10 \) nodes. Therefore, the number of variables in the optimization problem is 48, 75, 147, and 300, respectively.
    Figure 4 reports in this problem the convergence rates of L-BFGS-B [Liu and Nocedal 1989] and CMA-ES [Hansen 2006], two representative gradient-based and gradient-free approaches, with varying DoFs. We start with the largest setting of the cloth (300 DoFs) and run both L-BFGS-B and CMA-ES with five randomly chosen initial guesses on the force values in parallel. We then plot the loss versus time step curves for both methods in Figure 4 bottom left. Here, the loss is the minimum loss from each method’s five parallel runs as a function of the time steps they have consumed during the optimization process. It is clear to see the obvious speedup of L-BFGS-B over CMA-ES in this 300-DoF optimization problem, just as we expected.
    Additionally, we repeat the experiment with three other settings of the cloth and plot the speedup versus DoF curves in Figure 4 bottom right, where the speedup is the ratio between the number of time steps used by CMA-ES and L-BFGS-B when their losses reach 0.01. Again, we observe significant speedup from L-BFGS-B across the board, with the largest speedup from the cloth with the highest DoFs. This observation confirms the benefits of using gradients from our differentiable cloth simulator in inverse design problems.

    5.3 Benefits of Dry Frictional Contact

    We compare the contact model in our differentiable simulator with that in the state-of-the-art differentiable cloth simulator from Liang et al. [2019]. Both models ensure penetration-free simulation and detect self-collisions (node-node collisions in ours and vertex-face and edge-edge collisions in Liang et al. [2019]). However, the contact model in Liang et al. [2019] does not take into account complementarity conditions on either contact forces or frictional forces, which may lead to undesirable artifacts. To visualize this issue, we consider a test scenario in which a napkin falls freely onto the inner surface of a bowl (Figure 5). The differentiable simulators from both Liang et al. [2019] and our work manage to simulate the napkin without numerical explosion. However, the dry frictional contact model in our differentiable simulator shows more physically realistic motion (Figure 5 middle), whereas the contact model from Liang et al. [2019] leads to more drastic changes in the size of the napkin with a popping artifact after its contact with the bowl (Figure 5 top and bottom). These artifacts are explainable, because the collision handling algorithm in Liang et al. [2019] modifies node positions after penetration without verifying whether such an update requires sticky contact forces. When the napkin becomes in contact with the concave inner surface of the bowl, such a direct modification injects extra elastic energies. This experiment confirms supporting a more advanced contact and friction model in differentiable cloth simulation is both viable and beneficial.

    5.4 Evaluation of Iterative Solver in Backpropagation

    Another key component in our differentiable cloth simulation is the iterative solver in Equation (29) that utilizes the prefactorized \( \mathbf {P} \) in PD. In a standard differentiable simulator, solving Equation (29) would be done with a sparse matrix solver treating \( (\mathbf {P}- \Delta \mathbf {P}- \Delta \mathbf {R}) \) as a whole. To understand the performance of the proposed iterative solver, we design two benchmark tests: a “Wind” test where a hanging napkin moves under synthetic wind and a “Slope” test where a ribbon slides on a slanted plane (Figure 6). These two tests represent two extreme cases in contact handling: the napkin in “Wind” barely has any contact or self-collisions, whereas every single node of the ribbon in “Slope” is in contact with the plane. We then compare the time cost of our iterative solver with a sparse LU solver in both tests. We implement both solvers using Eigen [Guennebaud et al. 2010] and choose LU factorization, because \( (\mathbf {P}- \Delta \mathbf {P}- \Delta \mathbf {R}) \) is usually not a symmetric or positive definite matrix, preventing us from using more specialized sparse matrix solvers like Cholesky factorization or Conjugate Gradient methods. For the iterative solver, we report two results from low-precision (1e-4) and high-precision (1e-6) convergence thresholds that control the termination condition in the iterations. We find these thresholds by varying it from 1e-1 to 1e-9 until the gradients computed from the iterative solver start to agree with the direct solver, which we treat as the ground-truth gradients. We repeat the experiments with three mesh resolutions to test the scalability of our method.
    We summarize the statistics from both tests in Table 1. Overall, the iterative solver in backpropagation is faster than the direct solver, and the speedup becomes more substantial as we increase the mesh resolution. The speedup is also more evident with low-precision threshold, which is consistent with the results reported in previous PD papers [Bouaziz et al. 2014; Liu et al. 2017; Du et al. 2021]. A further decomposition of time confirms that solving the linear system takes up the majority of backpropagation time, so any improvement in the choice of solver has a dominating positive effect. Although the low-precision results may not match the ground-truth gradients as closely as their high-precision counterparts, their backpropagation is significantly faster and can still benefit gradient-based optimization. This is because even an imperfect gradient can still guide gradient descent algorithms to converge as long as it is along the descending direction. This is confirmed empirically by our experiments in Section 6, in most of which we use low-precision convergence threshold and still observe successful gradient-based optimization results. It is also worth mentioning that contact-related operators, whose time cost is included in the “Other” and “ \( \Delta \mathbf {R} \) ” columns in Table 1, add very little extra overhead to the backpropagation. Finally, we observe uncommon but non-negligible failure cases of the iterative solvers in one experiment ( \( 48\times 48 \) with 1e-6 as the threshold in Table 1) “Wind.” For the \( 15\% \) failed timesteps, we switch to the sparse LU solver, adding an extra \( 11.5\% \) time in backpropagation.
    Table 1.
    TestRes.SolverBackprop Time (s) \( \Delta \mathbf {P} \) (%) \( \Delta \mathbf {R} \) (%)Iter. (%)Direct (%)Other (%)Fail (%)Speedup
    Wind12x12Direct0.60613.90-84.41.70-
    Ours (1e-4)0.21239.955.5-4.62.9x
    Ours (1e-6)0.42419.278.5-2.31.4x
    24x24Direct3.3609.90-89.11.00-
    Ours (1e-4)0.59158.236.3-5.55.7x
    Ours (1e-6)2.85811.787.2-1.11.2x
    48x48Direct24.0016.80-92.50.70-
    Ours (1e-4)2.26263.229.7-7.1010.6x
    Ours (1e-6)29.2555.482.611.50.6150.8x
    Slope12x12Direct0.97813.03.4-82.41.20-
    Ours (1e-4)0.31270.19.416.1-4.53.1x
    Ours (1e-6)0.64318.92.776.8-1.61.5x
    24x24Direct5.33110.41.5-87.40.70-
    Ours (1e-4)0.78170.19.416.1-4.56.8x
    Ours (1e-6)1.50734.74.958.1-2.43.7x
    48x48Direct37.2966.50.7-92.50.40-
    Ours (1e-4)3.09568.18.219.8-3.812.0x
    Ours (1e-6)6.82531.23.563.6-1.85.5x
    Table 1. Comparison between the Iterative Solver (Ours) and the Sparse LU Direct Solver in Backpropagation Under Various Mesh Resolutions in the “Wind” and “Slope” Tests
    The numbers in the “Res.” column report the mesh resolution. The number in parentheses in the “Solver” column indicates the epsilon value controlling the convergence of the Jacobi solver. The “Backprop Time” column reports the net time in backpropagation and is further decomposed into the next five columns, from which the sum of ratios is \( 100\% \) : “ \( \Delta \mathbf {P} \) ” and “ \( \Delta \mathbf {R} \) ” report the time spent on assembling \( \Delta \mathbf {P} \) and \( \Delta \mathbf {R} \) , respectively, “Iter.” and “Direct” shows the time cost by either solver, and operations not covered by these four columns are in the “Other” column. The “Fail” column reports the ratio between the number of timesteps seeing nonconvergence in our iterative solver and the number of total timesteps. The “Speedup” column is the ratio between the direct solver’s time and our time in “Backprop. Time” in each test.

    6 Applications

    In this section, we demonstrate a variety of cloth-related applications that can benefit from our proposed differentiable cloth simulation with dry frictional contact. We repeat all experiments with multiple random seeds and use the same random seed set (therefore same initial parameter set) for all methods. We report the optimization results and comparisons with other gradient-free algorithms in Table 2. In Table 3, We report the time steps used by each optimization method to reach minimum final loss as well as the convergence ratio of our iterative solver during back-propagation. For gradient-free algorithms, the number of time steps counts the total steps of forward simulation (each steps the simulation forward in time by h). For our gradient-based method, we double this number to include the number of back-propagation steps. Note that in practice, back-propagation takes much less time than forward simulation. We have included the wall clock time for running forward simulation and back-propagation of all examples in Appendix A. In Table 2 and all loss versus time steps plot below, we report the minimum loss or plot the minimum loss envelop achieved across all random seeds. See Appendix C for the complete optimization results for each random seed. Below, we describe each application and highlight major results. More information of each example is detailed in Appendix B. Implementations. We write the backbone of our simulator in C++ and use Eigen for matrix and vector operations. Each application defines an optimization problem that we solve with L-BFGS-B, a classic gradient-based optimizer that can leverage the differentiability of our cloth simulator while limiting parameters to physically-plausible ranges . We use the implementation of LBFGS++ [Yixuan 2021] for L-BFGS-B, which implements the Moré-Thuente line search [Moré and Thuente 1994].
    Table 2.
    Table 2. Comparison between the Performance of Gradient-based and Gradient-free Optimization on All Examples (Except “Hat Controller”) in Section 6.
    The “Param #” and “Seed #” columns report the number of optimization parameters and random seeds used in the experiments, respectively. All methods start the optimization with the same initial random seed set. The “Min Init. Loss” column reports the minimum initial loss across all random seeds. The “Optimized Loss Percentage” column reports the optimized loss as a percentage (0–100%) of the minimum initial loss reached across all random seeds for each method: “Final” reports the loss reached when the optimization stops, and “Equal Step \( \# \) ” reports the loss reached by CMA-ES and (1+1)-ES using the same number of time steps for L-BFGS-B convergence. We color the values of loss percentage using a green-orange color scale: green corresponds to 0% and orange corresponds to 100%.
    Table 3.
    NameConvergence Time StepsIter. Conv. %
    L-BFGS-BCMA-ES(1+1)-ES
    T-shirt4,50053,50047,75099.75
    Sphere2,45018,90011,200100.00
    Hat11,200159,200106,00090.58
    Sock17,600176,80091,60099.41
    Dress2,7503,12510,00084.80
    Flag6,80017,30024,80096.00
    Table 3. The “Convergence Time Steps” Column Reports the Number of Simulation Time Steps used for Each Optimization Method Until Convergence on all Examples Shown in Section 6
    For a fair comparison, the time steps shown for L-BFGS-B include both forward simulation and backward propagation time. The “Iter. Conv. %” column reports the percentage of time steps in backward propagation where the iterative solver converges.

    6.1 System Identification

    We start by showing two system identification examples: “T-shirt” (Figure 7) and “Sphere” (Figure 8).
    T-shirt. In the “T-shirt” example, we are given a sequence of motions of a hanging T-shirt under synthetic wind generated from a parameterized sinusoidal function. The goal is to estimate a material parameter in the cloth (1 DoF) and identify the wind model parameters (5 DoFs controlling the amplitude, phase, and frequency of the sinusoidal function in three dimensions) from the motion data. We define the loss function as the L2-distance between the nodal positions of the T-shirt from the simulation and the given motion sequence.
    Unlike the “Wind” example in Section 5, contacts and frictions are much more frequent in this example due to self-collision between the front and back layer of the T-shirt under the wind. We show the simulation of the T-shirt with parameters before and after optimization in Figure 7 and compare the three optimizers in Tables 2 and 3: L-BFGS-B, CMA-ES, and (1+1)-ES. Both CMA-ES and (1+1)-ES are standard gradient-free evolutionary strategies (ES). We can conclude from Figure 7 and Tables 2 and 3 that all three methods manage to optimize system parameters leading to motion sequences visually identical to the given input, but L-BFGS-B converges much faster due to the extra knowledge of gradients.
    Sphere. To highlight the effect of dry frictional contact in our simulator, we create the “Sphere” example with the goal of matching the motion sequence of a cloth interacting with a sphere by estimating the frictional coefficient between the sphere and the cloth. In this example, we let a piece of square cloth fall freely on a sphere, whose motion after being in contact with the sphere is largely controlled by the frictional coefficient. This example involves both self-collisions between nodes on the cloth and external contacts with the sphere. Similar to the example above, we run both L-BFGS-B and two ES baselines and report their statistics in Tables 2 and 3. All methods can optimize to a frictional coefficient that generates a motion sequence visually identical to the given input. However, this optimization problem is special in that it only has one parameter and the landscape of the loss function is bumpy due to the large variation in the collision set as a function of the frictional coefficient, as suggested by the Continuity of contact sets experiment in Section 5.1. In this case, evolutionary strategies can achieve a lower final loss, because the samples can freely explore the full range of frictional contact, while L-BFGS-B can get trapped in a local optimum.

    6.2 Robot-assisted Dressing

    Another line of research that can benefit from a differentiable cloth simulator is robot-assisted dressing. The mainstream solution to these tasks is typically gradient-free methods like evolutionary strategies, reinforcement learning, or inverse dynamics before a differentiable cloth simulator becomes available. We present two examples to demonstrate the usage of gradients in robot-assisted dressing: “Hat” (Figure 9) and “Sock” (Figure 10). In both examples, the goal is to find trajectories for a kinematic robotic manipulator to put on the hat or the sock. The end effectors of the manipulator pick a few prespecified vertices on the cloth meshes and pull them along the kinematic trajectories, which are parametrized as B-splines. By optimizing the parameters of the B-splines (18 DoFs in “Hat” and 36 DoFs in “Sock”), we can direct the manipulator to move the hat until it reaches the target location on top of the sphere. We define the loss function in “Hat” as the L2-distance between the hat’s final position at the last time step and a predefined target position, which we generate by translating the hat’s rest shape onto the top of the sphere. The loss function for “Sock” is defined as the L2-distance between the desired and simulated locations of a few key points manually chosen on the sock and evaluated at the middle and the end of the simulation.
    With the gradient information at hand, we run the L-BFGS-B optimizer to tune the parameters of the trajectories and compare its performance with CMA-ES and (1+1)-ES (Tables 2 and 3). We notice that within the same time steps, L-BFGS-B converges substantially faster than the gradient-free baselines to a better solution (Figures 9 and 10). We can safely conclude that the fast convergence of L-BFGS-B unlocked by our differentiable cloth simulator is a clear advantage over gradient-free methods.

    6.3 Inverse Design

    The next application we present is “Dress,” an inverse design example that aims to optimize cloth material parameters in a dress so that its dynamic motion can satisfy certain design intents. Specifically, we optimize the material parameters of a twirl dress so that after the dress spins, the apex angle of the cone-like dress agrees with the target value (100 degrees in our experiment). We define the loss function as the difference between the hemline height corresponding to the target apex angle and the estimated apex angle from points on the hemline of the dress at the last frame of the simulation. We report the optimization results from L-BFGS-B and two ES baselines in Table 2 and visualize the simulation results before and after optimization in Figure 1. Similar to the previous tasks, we notice that L-BFGS-B achieves better optimized results using fewer time steps.
    Fig. 1.
    Fig. 1. We present a differentiable cloth simulator with dry frictional contact and demonstrate its efficacy in multiple downstream applications, including designing this twirl dress (10,902 degrees of freedom and 125 time steps with a step size of \( 1/120 \) s). The goal is to optimize the material parameters of the dress so that the apex angle of the cone it forms after a twirl reaches a desired value (100 degrees in this example). Left and middle: the optimized dress before and after a twirl. Top right and bottom right: motion sequences of the twirl dress before and after material parameter optimization using our differentiable simulator. The final apex angles before and after optimization are 39.06 and 100.30 degrees, respectively.
    Fig. 2.
    Fig. 2. We simulate a piece of cloth sliding on a rigid sphere (right) to study the discontinuities and non-smoothness from contact conditions and surface geometry (Section 5.1). The two columns of plots show the velocities of three contact nodes at the 50th and 200th time steps. The “discretized” and “continuous” labels indicate whether these velocities are computed with a triangulated sphere (visualized as pink triangles on the spherical surface) or a smooth sphere (visualized as green sphere surface).

    6.4 A Real-to-Sim Example

    In this section, we present a real-to-sim “Flag” example (Figure 11). In this example, we use the real-world motion sequence captured on a flag flapping in the wind from previous work [White et al. 2007] and aim to reconstruct a digital twin of the scene in simulation. This includes not only estimating the material parameters of the flag but also modeling the unknown wind condition at the capture time, which is particularly challenging due to its intricate stochastic model with unknown degrees of freedom. We model the wind force at each time step as a 3D force applied near the center of the scene and spatially decaying proportional to the inverse distance to the center. To model the transient nature of the wind force, we modulate magnitude of the 3D vector of a sinusoidal wave as a function of time with parameterized frequency and phase offset. Together, the material and wind model define an eight-dimensional parameter space to be optimized. We define the loss function as the L2-distance between the positions of all nodes at each time step in simulation and the ground-truth motion sequence.
    We solve this task using L-BFGS-B and the two ES methods and report their performance in Tables 2 and 3 and Figure 11. All three methods substantially reduce the loss after optimization, but L-BFGS-B achieves a lower final loss. We plot the trajectories of 6 key nodes before and after optimization (orange) along with the ground-truth reference trajectories (yellow) from the motion-captured data in Figure 11. By comparing the left and right images in Figure 11, we can see that the L-BFGS-B optimizer reduces the discrepancy substantially between the simulated and actual trajectories after optimization. The real-to-sim matching is still imperfect as indicated by the nonzero final loss, which we suspect could be due to the simplistic nature of our synthetic wind model. A more sophisticated and expressive wind model, e.g., a neural network, may serve a better role in modeling and matching the real-world physics, which we leave as future work.

    6.5 Hat Controller

    We end this section with an advanced “Hat” task. Unlike the previous open-loop trajectory optimization with a fixed starting position, the goal of this new task is to train a generalizable closed-loop controller that can put on the hat from a random starting position sampled from a fixed-radius hemisphere around the head. Specifically, we train a closed-loop control policy \( \mathbf {a}_t = \pi _\theta (\mathbf {s}_t) \) , which takes as input the current state \( \mathbf {s}_t \) of the task and outputs an action vector \( {\bf a}_t \) at each time step t. The state vector \( \mathbf {s}_t \) includes the hat node positions, the orientation of the hat, and the distance between the two end effectors, and the action vector \( \mathbf {a}_t \) represents the position of the two end effectors at the next time step. We represent the control policy \( \pi _\theta \) as a neural network parametrized by \( \theta \) consisting of two fully-connected hidden layers with 64 neurons and tanh activation functions (117,126 parameters in total). To train the controller with gradient-based optimization, we integrate the neural network policy with our differentiable simulator as described in Figure 13.
    In each epoch during training, we randomly sample 20 starting positions of the hat and compute a loss averaged from all simulation sequences. The loss function of each sequence is defined by \( L=L_{\text{deform}}+L_{\text{target}}+L_{\text{dir}} \) , where \( L_{\text{deform}} \) measures the stretching of the hat using the distance change between the two end-effectors, \( L_{\text{target}} \) measures the L2-distance between the last-time-step pose of the hat and the target pose, and \( L_{\text{dir}} \) is the orientation difference between the last-time-step pose and the target pose of the hat. The gradient of the loss is then computed by our differentiable simulation framework and used by a gradient-based optimizer (Adam [Kingma and Ba 2017]) to update the policy parameters. For testing, we evaluate the controller from 20 fixed starting position configurations uniformly sampled on the hemisphere surface.
    To compare our method with gradient-free methods, we also solve the task with Reinforcement Learning (RL), which has been widely used to train complex neural network policies for robot-assisted dressing problems [Clegg et al. 2018]. Specifically, we compare our gradient-based method with PPO [Schulman et al. 2017], a state-of-the-art RL algorithm. We similarly sample a starting position from the hemisphere in each iteration when training PPO. For a fair comparison, we design the reward function \( r_t \) to be the sum of the negative counterpart of L plus a constant to avoid negative rewards, and observation of the environment to be \( \mathbf {s}_t \) . We evaluate Adam and PPO using L as the common metric and plot the optimization curve at the bottom of Figure 12. We see that both methods reach a similar final loss, but with our differentiable simulation framework, the gradient-based method reaches its final loss with a \( 85\times \) speedup (Adam uses 23,200 time steps; PPO uses 1,978,000 time steps).
    After the training process converges, both our gradient-based method and PPO successfully move the hat onto the head from all 20 testing positions. We visualize the trajectories generated by Adam’s trained policy from 10 testing starting positions at the top of Figure 12. Unlike existing differentiable simulation papers [Du et al. 2021; Hu et al. 2019, 2020; Liang et al. 2019] that train a closed-loop network controller only for a fixed state, we highlight that we use differentiable simulation to train the network from multiple, random states and study its generalizability in a test set of unseen states. This allows us to conduct a fairer comparison between gradient-based optimization method and RL methods, which is typically overlooked in previous papers.

    7 Conclusions, Limitation, and Future Work

    In this article, we presented a differentiable cloth simulator built on PD with Signorini-Coulomb frictional contact. Our differentiable simulator is different from existing papers in its simultaneous accommodation of rich and frequent (self-)contact, Signorini-Coulomb contact law, and differentiability in cloth simulation. We analyzed the numerical properties of gradients from our differentiable simulator, including the source of discontinuities and its empirical speedup over gradient-free approaches in high-dimensional problems. We additionally presented an iterative solver that exploits the contact gradients to speed up the backpropagation and observed a substantial speedup (up to an order of magnitude with low-precision simulation) over direct solvers. Our differentiable cloth simulator enabled gradient-based optimization methods in a diverse set of applications, for which traditional gradient-free methods are generally much less sampling efficient. In particular, we presented a preliminary study on training a generalizable closed-loop controller using differentiable simulation, in which our approach and PPO achieved comparable performance and generalizability, but we used much less time.
    There are still quite a few limitations in our method that are worth further investigation. First, since our method is built on PD, it also limits the choice of material models. It would be useful to generalize the current framework and support more physically accurate cloth material models, e.g., the piecewise linear elastic model described in Wang et al. [2011].
    Second, the contact model we use from Ly et al. [2020] does not take into account vertex-face or edge-edge self-collisions. While we empirically observed that handling only vertex-vertex self-collisions managed to produce plausible results with medium mesh resolution, vertex-face and edge-edge collision detection and handling is still highly desirable for a more physically realistic cloth simulator.
    Third, although we have identified some possible sources of discontinuities and non-smoothness in our differentiable simulator with empirical experiments, their effects on gradient-based optimization still require a thorough investigation. In particular, the locally bumpy energy landscape we observed in Figure 3 due to changes in contact sets makes us question both the necessity and the usefulness of exact gradients in optimization, although Section 6 implies that gradients were still helpful in many downstream applications. Noting that the bumpiness in Figure 3 is local and the global view of the energy landscape is still smooth, we hypothesize an inexact but smoothed gradients would be more powerful, which we leave as future work.
    Fig. 3.
    Fig. 3. We simulate collisions between a piece of cloth and a rigid sphere at four different horizontal locations to study the effects of varying numbers of collisions on the smoothness of the simulation. Top: rendering of one of the time steps when the cloth is expected to be in contact with the sphere. The four scenes are ordered by their number of collisions. Bottom: landscapes of the loss defined as a function of the frictional coefficient \( \mu \) and the stiffness k of the cloth (Section 5.1). The zoomed-in views of the landscapes show increasing discontinuity and non-smoothness as more collisions occur.
    Fourth, there is no theoretical guarantee on the convergence of the iterative solver we implemented in backpropagation. Although non-convergence is uncommon in our experiments, it introduces a costly switch to the slower direct solver, which we hope to fully resolve in future work.
    Finally, many of our applications were in simulation only. It would be more exciting if these results could be replicated in real-world settings. We consider connecting our differentiable cloth simulator to more real-world applications, including real-world robot-assisted dressing, material parameter identification for real-world fabric samples, computational design for sports suits, and so on. Closing the sim-to-real gap is a nontrivial problem, in which we believe our differentiable simulator could play a beneficial role.

    Acknowledgments

    We thank Marco Renedo for his helpful discussions on the preconditioners, Junbang Liang for his help with running the baseline comparison code, and the anonymous reviewers for their helpful comments.

    A Experiment Run Time

    We run all optimizations on a workstation of 80 CPU cores and 80G memory. Depending on the problem complexity, the wallclock time of running these optimizations varies from less than 30 min to 2 h for all methods. We report the run time for optimizing the examples shown in Section 6 using our gradient-based method in Table 4.
    Table 4.
    NameDofTime Stepsh [s]Fwd.[s]Back.[s]
    T-shirt4,2782501/90141.513.2
    Sphere1,8753501/1805.14.2
    Hat1,7374001/10057.920.7
    Sock3,1654001/16089.914.3
    Dress10,9021251/120266.384.7
    Flag1,6201001/12013.71.6
    Table 4. Run Time for our Gradient-based Optimization
    We report the average wall-clock time for optimizing the examples shown in Section 6. We recall the simulation complexity of each example by reiterating its total Degrees of Freedom (“Dof”), number of time steps in each forward simulation sequence and back-propagation (“Time Steps”) and time interval (“ \( h[s] \) ”). “Fwd.[s]” and “Back.[s]” report the mean wall-clock time for performing one iteration of forward simulation and back-propagation, respectively, averaged across all optimization iterations for all initial seeds.

    B Experiment Details

    We provide detailed information for the examples shown in Section 6, including their setup, the exact form of their loss function, and their decision variables in optimization.

    B.1 System Identification

    T-shirt. The loss function is defined as
    \( \begin{align} L = \sum _{n=1}^N \left\Vert {\mathbf {x}}^{\text{current}}_n - {\mathbf {x}}^{\text{target}}_n \right\Vert _2, \end{align} \)
    (31)
    where \( N=240 \) is the total number of time steps, \( {\mathbf {x}}^{\text{current}}_n \) the position of the mesh during optimization, and \( {\mathbf {x}}^{\text{target}}_n \) the position of the ground-truth simulation generated using our system. There are 4 parameters (6 DoFs) to be optimized: \( \theta _{\text{T-shirt}} = (k_\text{stretch}, \phi , \omega , \mathbf {d}) \) , where \( k_\text{stretch} \) controls the stretching stiffness of the cloth material and \( (\phi , \omega , \mathbf {d}) \) controls the parameterized external wind force: each node receives a three-dimensional wind force \( 0.5[\sin (\omega t + \phi) + 1.0]\mathbf {d} \) .
    Sphere. The loss function is defined the same as in the “T-shirt” example above except that the total time \( N=300 \) . The decision variable is the 1-DoF frictional coefficient of the sphere.

    B.2 Robot-assisted Dressing

    Hat. The loss function is defined as the L2 norm between the last-time-step position of the hat \( {\mathbf {x}}^{\text{current}}_N \) and a target position \( {\mathbf {x}}^{\text{target}}_N \) generated by translating the initial pose of the hat onto the head:
    \( \begin{align} L = \left\Vert {\mathbf {x}}^{\text{current}}_N - {\mathbf {x}}^{\text{current}}_N\right\Vert _2, \end{align} \)
    (32)
    where \( N=400 \) is the total number of time steps. The trajectory of each of the two end effectors is controlled by a cubic Hermite spline. Each spline has 3 parameters (9 DoFs): \( \theta _{\text{spline}}=(\mathbf {t}_1, \mathbf {t}_2, \mathbf {p}_{\text{end}}) \) , where \( \mathbf {t}_1 \) and \( \mathbf {t}_2 \) are the two tangents of the spline and \( \mathbf {p}_{\text{end}} \) is the endpoint of the spline.
    Sock. The goal is to optimize for the trajectory of the three end effectors holding onto a sock so that the sock can be put onto a synthetic foot model from an initial starting position. To guide the end effectors to first hook the opening of the sock onto the tip of the foot, then slide the sock upward onto the leg, the loss function is designed as
    \( \begin{align} L = \sum _{n\in \lbrace \frac{N}{2}, N\rbrace } \sum _{(p_{\text{foot}}, p_{\text{sock}}) \in \mathcal {P}_n} \left\Vert {\mathbf {x}}^{\text{target}}_{N,p_{\text{foot}}} - {\mathbf {x}}^{\text{current}}_{n,p_{\text{sock}}}\right\Vert _2, \end{align} \)
    (33)
    where \( \mathcal {P}_t \) defines a set of manually selected keypoint correspondence pairs \( (p_{\text{foot}}, p_{\text{sock}}) \) between the sock mesh \( {\mathbf {x}}_n^{\text{current}} \) and the foot model \( {\mathbf {x}}_N^{\text{target}} \) at halfway \( t=\frac{N}{2} \) and the end of the simulation \( t=N \) , respectively. We sum up the L-2 norm of the position difference between each correspondence. The optimization parameters are the Hermite spline parameters for each of the four end effectors defined similarly as in the “Hat” example (36 DoFs in total).

    B.3 Inverse Design

    Dress. The loss function is defined as
    \( \begin{align} L = \sum _{p\in \mathcal {P}} (h_p- h)^2, \end{align} \)
    (34)
    where h is the calculated target height of the bottom of the dress when the desired apex angle is reached. \( \mathcal {P} \) is the set of all points located at the bottom of the dress, and \( h_p \) is the height of the point p (corresponding to the y coordinate of the point in our implementation). There are 2 parameters (2 DoFs) that are being optimized: \( \theta _{\text{Dress}} = (d, k_{\text{bend}}) \) where d is the density of the fabric and \( k_{\text{bend}} \) is the bending stiffness of the fabric.

    B.4 Real-to-Sim Example

    In this task, we optimize for the material parameters of the flag and the parameters of a simple wind model to match the motion trajectory of a flag to real-world captured data. The wind model is defined as
    \( \begin{align} \mathbf {f}_\text{ext}= \frac{\sin (\omega t + \phi) + 1.0}{2} \mathbf {k} \mathbf {d}^\top , \end{align} \)
    (35)
    where \( \mathbf {d} \) is a 3D vector to be optimized and \( \mathbf {k} \in \mathbb {R}^{m} \) a constant coefficient vector with each entry equal to a node’s inverse distance to the flag center evaluated at the first time step. There are 8 parameters to be optimized \( \theta _{\text{flag}} = (k_\text{stretch}, k_\text{bend}, \rho , \phi , \omega , \mathbf {d}) \) , where \( k_\text{stretch} \) and \( k_\text{bend} \) are the stretching and bending stiffness of the fabric, \( \rho \) the density of the fabric, and \( \phi , \omega , \mathbf {d} \) the parameters of the wind model defined above.

    B.5 Hat Controller

    In this task, the goal is to optimize for the neural network parameters of the hat controller so that the two end effectors put a hat on a head model from any starting position defined on a fixed-radius hemisphere centered at the head model. During training, we uniformly sample 20 starting positions on the hemisphere for each epoch, and compute the loss averaged from all simulation sequences. We define the loss function as
    \( \begin{align} L=L_{\text{deform}}+L_{\text{target}}+L_{\text{dir}}. \end{align} \)
    (36)
    \( L_{\text{deform}} \) minimizes the distance change between the two end effectors and is defined as \( L_{\text{deform}} =\sum _{n=1}^N \Vert {\mathbf {x}}_{n,e_1} - {\mathbf {x}}_{n,e_2} \Vert _2 \) where \( e_1 \) and \( e_2 \) are the indices of the nodes pulled by the two end effectors. \( L_{\text{target}} \) minimizes the L2-distance between the poses of the hat and the target pose at the last few frames (20 in our implementation) and is defined as
    \( \begin{align} L_{\text{target}}= \sum _{n=N-20}^N \left\Vert {\mathbf {x}}_n^{\text{current}} - {\mathbf {x}}_n^{\text{target}} \right\Vert _2. \end{align} \)
    (37)
    \( L_{\text{dir}} \) minimizes the orientation difference between the last-time-step pose and the target pose of the hat and is defined as
    \( \begin{align} L_{\text{dir}} = {\bf d}_{\text{target}} \cdot {\bf d}_{\text{current}}, \end{align} \)
    (38)
    where \( {\bf d}_{\text{target}} \) is the up vector of the hat at the target pose and \( {\bf d}_{\text{current}} \) is defined similarly to the hat at the last time step.

    C Optimization Results for All Random Seeds

    In this section, we report the optimization results for all random seeds in Tables 5 and 6. For most experiments, L-BFGS-B achieves lower or comparable optimized loss than the gradient-free methods using a fraction (often to an order of magnitude) of time steps, thanks to the gradient information provided by our differentiable simulator. For some random seeds, L-BFGS-B converges to a relatively large final loss percentage, possibly due to being stuck in a local minimum. In practice, it is common and recommended to run gradient-based optimizations with several initial seeds to alleviate this problem, and is the rationale behind why we choose to report the minimum loss achieved across all random seeds in the results shown in Table 2 and plot the minimum loss envelop in Figures 4, 9, 10, and 11. It is also worth mentioning that the examples shown Section 6 have a relative low number of design variables, while the speed-up of gradient-based methods becomes more evident with more design variables as demonstrated by the “Flying Napkin” experiment in Figure 4.
    Fig. 4.
    Fig. 4. Flying Napkin. Comparisons between gradient-based and gradient- free methods for optimizing high-dimensional decision variables in differentiable cloth simulation. Top: the motion sequence of a piece of cloth with external forces parametrized with 300 variables. The goal is to find proper external forces with which the cloth ends at a target position. The loss function is defined as the position discrepancy between the simulated motion sequence and the reference motion. Bottom left: the loss vs. time step curves (300 DoF) from gradient-based (L-BFGS-B) and gradient-free (CMA-ES) methods. Both L-BFGS-B and CMA-ES use the same random seeds. Bottom right: we vary the degrees of freedom in the external force parametrization and repeat the experiment three times. For each experiment, we compute the ratio between the number of time steps used by gradient-free and gradient-based methods until they converge or use up the time budget and plot them as a speedup vs. DoFs curve.
    Fig. 5.
    Fig. 5. Bowl. We simulate the motion sequence of the napkin ( \( 50\times 50\times 2 \) triangles, \( h=5 \) ms, 500 time steps) with the contact models from two differentiable cloth simulators: Liang et al. [2019] (top) and ours (middle). The area ratio (bottom) is the ratio between the napkin’s area at the current timestep and in the rest shape. Refer to our video for the full motions.
    Fig. 6.
    Fig. 6. Wind and Slope. Motion sequences from the two benchmark tests for comparing iterative and direct solvers in back-propagation. Top: the “Wind” test ( \( h=1/90 \) s, 200 time steps) where a piece of cloth moves under synthetic wind. Bottom: the “Slope” test ( \( h=1/100 \) s, 300 time steps) where a ribbon slides along a slanted plane.
    Fig. 7.
    Fig. 7. T-shirt (4278 DoFs, \( h=1/90 \) s, 250 time steps). Estimating the cloth material and wind parameters based on a given synthetic motion sequence of the T-shirt. From left to right, we show the simulated T-shirt at 0, 80, 160, and 240 time steps. Top: the ground-truth motion sequence; Middle: simulation with the initial guess on the cloth and wind parameters; Bottom: simulation after optimization with L-BFGS-B.
    Fig. 8.
    Fig. 8. Sphere (1875 DoFs, \( h=1/180 \) s, 350 time steps). Estimating the frictional coefficient \( \mu \) between the sphere and the cloth based on the cloth’s contact with the sphere. From top to bottom, we show the simulation at 0, 100, 200, and 300 time steps. Top: the ground-truth motion sequence; Middle: simulation with the initial guess on \( \mu \) ; Bottom: simulation after optimization with L-BFGS-B.
    Fig. 9.
    Fig. 9. Hat (1737 DoFs, \( h=1/100 \) s, 400 time steps). Optimizing trajectories for a manipulator to move a hat onto the sphere. Top left: Initial trajectory from one random seed before optimization overlaid with intermediate hat positions in simulation. Top right: the optimized trajectory from L-BFGS-B (which shares a visually similar trajectory with the ones optimized by ES algorithms). Bottom: The loss vs. time step curves for all methods.
    Fig. 10.
    Fig. 10. Sock (3165 DoFs, \( h=1/160 \) s, 400 time steps). Optimizing trajectories for a manipulator to put a sock onto the foot model. Top left: One initial trajectory before optimization. We show the intermediate time steps on the left and the final state of the sock on the right. Top right: one control trajectory optimized by L-BFGS-B. The end effectors successfully put the sock onto the foot using the optimized trajectory. Bottom: the loss vs. time step curves for all methods.
    Fig. 11.
    Fig. 11. Flag. A real-to-sim example that reconstructs a digital flapping flag (540 vertices, 1026 triangles, \( h=1/120 \) s, 100 time steps) based on motion data captured from real-world experiments. Top: We plot the trajectories of 6 nodes on the cloth from the ground-truth motion (yellow curves) and the simulation results with guesses on the material and wind parameters before optimization (orange curves, left) and after optimization (orange curves, right). Bottom: The loss vs. time step curves for all methods.
    Fig. 12.
    Fig. 12. Hat Controller. We train a closed-loop controller for the advanced “Hat” task (Section 6.5), which aims to move the hat from different initial positions (sampled from a fixed-radius hemisphere) onto the head. Top two rows: We visualize the control trajectories of the hat in ten initial positions denoted by their elevation and azimuth angle at the bottom of each subfigure. Bottom: The loss vs. time step curve for our gradient-based optimization and PPO.
    Fig. 13.
    Fig. 13. We present the computation graph of the “Hat Controller” task in Section 6.5. We embed the neural network policy into our differentiable simulation pipeline. At time step t during forward simulation (blue arrows), the current particle states \( ({\mathbf {x}}_t,\mathbf {v}_t) \) are transformed into a state vector \( \mathbf {s}_t \) , which is input to the neural network policy \( \pi _\theta \) to produce an action vector \( \mathbf {a}_t = \pi _\theta (\mathbf {s}_t) \) . DiffCloth then simulates a new state \( ({\mathbf {x}}_{t+1},\mathbf {v}_{t+1}) \) using current particle state and the generated action vector. The whole simulation sequence \( \lbrace x_i,v_i\rbrace \) is used to compute a loss. During backward propagation (red arrows), the above computation pass is reversed.
    Table 5.
     Initial LossFinal LossFinal Loss Percentage (%)Convergence Time Steps
    L-BFGS-BCMA-ES(1+1)-ESL-BFGS-BCMA-ES(1+1)-ESL-BFGS-BCMA-ES(1+1)-ES
    T-shirt22.490.0420.0521.4160.20.26.22,50041,75042,000
    60.000.0790.2690.2480.10.40.47,25046,7509,750
    6.626.5600.1690.11599.02.71.83,25017,50047,750
    30.930.0350.2860.2130.10.90.72,25041,00036,750
    10.320.0350.0780.1590.30.81.66,25027,00019,750
    MIN0.0350.0520.1150.10.20.42,25017,5009,750
    AVERAGE1.3500.1710.43020.01.02.14,30034,80031,200
    MEDIAN0.0420.1690.2130.20.81.63,25041,00036,750
    Flag2.880.1371.1181.1544.838.940.13,40017,30024,800
    3.841.1360.9451.07929.624.628.11,10090027,600
    4.071.1750.3041.02128.97.525.15,2001,20028,500
    5.080.5950.9581.04311.718.920.53,8004,50026,600
    4.081.9800.9971.05348.624.525.820029,20027,600
    3.260.1900.7430.9525.822.829.24,50027,50028,400
    3.590.8630.6971.13424.019.431.58009,90028,100
    3.680.1560.7111.0894.219.329.69,80022,50024,600
    3.731.0951.0771.10929.428.929.83,10012,60028,900
    9.980.8611.0860.7158.610.97.21,8005,4009,200
    MIN0.1370.3040.7154.27.57.22009009,200
    AVERAGE0.8190.8641.03519.621.626.73,37013,10025,430
    MEDIAN0.8620.9521.06617.921.128.73,25011,25027,600
    Table 5. We Report the Optimization Results for all Random Seeds of All Methods in the “T-shirt” and “Flag” Examples
    For each random seed, we report its initial loss and final loss achieved by each optimization method. “Final Loss Percentage (%)” reports the optimized loss as a percentage (0–100%) of the initial loss. “Convergence Time Steps” reports the number of time steps used by each method to reach its final loss. For all tasks, we also summarize the minimum, average and median statistics across all random seeds for each column. For each metric (“Final Loss,” “Final Loss Percentage (%),” “Convergence Time Steps”) and each row, the minimum number across the three optimization methods is marked in bold.
    Table 6.
     Initial LossFinal LossFinal Loss Percentage (%)Convergence Time Steps
    L-BFGS-BCMA-ES(1+1)-ESL-BFGS-BCMA-ES(1+1)-ESL-BFGS-BCMA-ES(1+1)-ES
    Hat54.6010.3910.7540.33019.01.40.64,40047,60050,000
    33.810.4020.6650.1051.21.90.32,00046,00036,400
    43.450.0910.7230.2360.21.60.55,60042,80044,000
    48.630.1050.2831.2900.20.62.64,00048,00045,600
    21.830.0960.9460.3140.44.31.42,80038,80030,000
    MIN0.0910.2830.1050.20.60.32,00038,80030,000
    AVERAGE2.2170.6740.4554.22.01.13,76044,64041,200
    MEDIAN0.1050.7230.3140.41.60.64,00046,00044,000
    Sock46.021.9807.2675.3354.315.811.68,80042,80047,600
    41.223.2436.1318.3967.914.920.416,00044,00032,400
    39.108.85610.5473.04722.627.07.84,40038,40046,000
    17.082.5894.1497.83015.224.345.815,20031,20024,000
    33.292.6524.1265.7918.012.417.45,20049,20048,000
    MIN1.9804.1263.0474.312.47.84,40031,20024,000
    AVERAGE3.8646.4446.08011.618.920.69,92041,12039,600
    MEDIAN2.6526.1315.7918.015.817.48,80042,80046,000
    Sphere0.460.0020.0000.0030.40.00.62,45018,90011,200
    0.900.0640.0000.0007.20.00.03,50036,0505,600
    0.580.0020.0000.0000.30.00.01,40024,85010,150
    2.200.9040.0000.00041.10.00.070031,8508,050
    4.030.9040.0000.03122.40.00.870015,05026,250
    0.900.9030.0000.020100.00.02.035026,60044,100
    0.900.0020.0020.0000.20.20.06,6505,60018,200
    0.890.8930.0000.008100.00.00.835048,30046,550
    0.880.8610.0000.00197.60.00.11,40049,7009,100
    0.850.5140.0000.00060.40.00.03,15035,70015,400
    MIN0.0020.0000.0000.20.00.03505,6005,600
    AVERAGE0.5050.0000.00643.00.00.42,06529,26019,460
    MEDIAN0.6880.0000.00131.70.00.11,40029,22513,300
    Dress2.411.8200.7120.84575.433.339.63753,12512,750
    1.350.7160.8300.69653.260.450.61,12549,87510,000
    1.571.4060.8240.78289.352.349.61,62531,8759,750
    1.030.8410.8250.82282.080.380.01,62529,37519,750
    0.900.8800.8240.82397.790.390.175019,75016,250
    1.491.4900.8320.69899.955.446.587544,00020,750
    1.090.8750.8280.83080.375.275.425035,00017,250
    1.880.6930.8610.79237.045.441.81,37525,87540,625
    1.831.3050.8230.85871.256.158.51,12550,00010,250
    1.271.2190.8240.85496.164.466.850049,50014,000
    1.311.1780.8140.87290.162.266.62,3754,12510,250
    1.260.8560.8240.82368.265.065.01,00047,12511,000
    MIN0.6930.7120.69637.033.339.62503,1259,750
    AVERAGE1.1070.8180.80878.461.760.91,08332,46916,052
    MEDIAN1.0290.8240.82381.161.361.71,06333,43813,375
    Table 6. Similar Table as Table 5 for the “Hat,” “Sock,” “Sphere,” and “Dress” Examples

    References

    [1]
    David Baraff and Andrew Witkin. 1998. Large steps in cloth simulation. In Proceedings of the 25th Annual Conference on Computer Graphics and Interactive Techniques (SIGGRAPH’98). Association for Computing Machinery, New York, NY, 43–54.
    [2]
    Aric Bartle, Alla Sheffer, Vladimir G. Kim, Danny M. Kaufman, Nicholas Vining, and Floraine Berthouzoz. 2016. Physics-driven pattern adjustment for direct 3D garment editing. ACM Trans. Graph. 35, 4, Article 50 (July 2016), 11 pages.
    [3]
    Sofien Bouaziz, Sebastian Martin, Tiantian Liu, Ladislav Kavan, and Mark Pauly. 2014. Projective dynamics: Fusing constraint projections for fast simulation. ACM Trans. Graph. 33, 4, Article 154 (July 2014), 11 pages. DOI:
    [4]
    Robert Bridson, Ronald Fedkiw, and John Anderson. 2002. Robust treatment of collisions, contact and friction for cloth animation. ACM Trans. Graph. 21, 3 (July 2002), 594–603.
    [5]
    R. Bridson, S. Marino, and R. Fedkiw. 2003. Simulation of clothing with folds and wrinkles. In Proceedings of the ACM SIGGRAPH/Eurographics Symposium on Computer Animation (SCA’03). Eurographics Association, Goslar, DEU, 28–36.
    [6]
    Bernard Brogliato. 2016. Nonsmooth Lagrangian Systems. Springer International Publishing, Cham, 241–370.
    [7]
    Remi Brouet, Alla Sheffer, Laurence Boissieux, and Marie-Paule Cani. 2012. Design preserving garment transfer. ACM Trans. Graph. 31, 4, Article 36 (July 2012), 11 pages.
    [8]
    George E. Brown, Matthew Overby, Zahra Forootaninia, and Rahul Narain. 2018. Accurate dissipative forces in optimization integrators. ACM Trans. Graph. 37, 6, Article 282 (Dec. 2018), 14 pages.
    [9]
    Kwang-Jin Choi and Hyeong-Seok Ko. 2002. Stable but responsive cloth. ACM Trans. Graph. 21, 3 (July 2002), 604–611.
    [10]
    Alexander Clegg, Zackory Erickson, Patrick Grady, Greg Turk, Charles C. Kemp, and C. Karen Liu. 2020. Learning to collaborate from simulation for robot-assisted dressing. IEEE Robot. Autom. Lett. 5, 2 (2020), 2746–2753.
    [11]
    Alexander Clegg, Wenhao Yu, Jie Tan, C. Karen Liu, and Greg Turk. 2018. Learning to dress: Synthesizing human dressing motion via deep reinforcement learning. ACM Trans. Graph. 37, 6, Article 179 (Dec. 2018), 10 pages.
    [12]
    David Clyde, Joseph Teran, and Rasmus Tamstorf. 2017. Modeling and data-driven parameter estimation for woven fabrics. In Proceedings of the ACM SIGGRAPH / Eurographics Symposium on Computer Animation (SCA’17). Association for Computing Machinery, New York, NY, Article 17, 11 pages.
    [13]
    C. Dario Bellicoso, Christian Gehring, Jemin Hwangbo, Péter Fankhauser, and Marco Hutter. 2016. Perception-less terrain adaptation through whole body control and hierarchical optimization. In Proceedings of the IEEE-RAS 16th International Conference on Humanoid Robots (Humanoids’16). 558–564. DOI:
    [14]
    Filipe de Avila Belbute-Peres, Kevin Smith, Kelsey Allen, Josh Tenenbaum, and J Zico Kolter. 2018. End-to-end differentiable physics for learning and control. Advances in Neural Information Processing Systems 31 (2018), 7178–7189.
    [15]
    Jonas Degrave, Michiel Hermans, Joni Dambre, and Francis wyffels. 2019. A differentiable physics engine for deep learning in robotics. Front. Neurorobot. 13 (2019), 6.
    [16]
    Tao Du, Kui Wu, Pingchuan Ma, Sebastien Wah, Andrew Spielberg, Daniela Rus, and Wojciech Matusik. 2021. DiffPD: Differentiable projective dynamics. ACM Trans. Graph. 41, 2, Article 13 (Oct. 2021), 21 pages. DOI:
    [17]
    Tao Du, Kui Wu, Andrew Spielberg, Wojciech Matusik, Bo Zhu, and Eftychios Sifakis. 2020. Functional optimization of fluidic devices with differentiable stokes flow. ACM Trans. Graph. 39, 6, Article 197 (Dec. 2020), 15 pages. DOI:
    [18]
    Marco Fratarcangeli, Valentina Tibaldo, and Fabio Pellacini. 2016. Vivace: A practical gauss-seidel method for stable soft body dynamics. ACM Trans. Graph. 35, 6, Article 214 (Nov. 2016), 9 pages.
    [19]
    Moritz Geilinger, David Hahn, Jonas Zehnder, Moritz Bächer, Bernhard Thomaszewski, and Stelian Coros. 2020. ADD: Analytically differentiable dynamics for multi-body systems with frictional contact. ACM Trans. Graph. 39, 6 (2020), 1–15.
    [20]
    Peng Guan, Loretta Reiss, David A. Hirshberg, Alexander Weiss, and Michael J. Black. 2012. DRAPE: DRessing any PErson. ACM Trans. Graph. 31, 4, Article 35 (July 2012), 10 pages.
    [21]
    Gaël Guennebaud, Benoît Jacob, et al. 2010. Eigen v3. Retrieved fromhttp://eigen.tuxfamily.org.
    [22]
    David Hahn, Pol Banzet, James M. Bern, and Stelian Coros. 2019. Real2sim: Visco-elastic parameter estimation from dynamic motion. ACM Trans. Graph. 38, 6 (2019), 1–13.
    [23]
    Nikolaus Hansen. 2006. The CMA Evolution Strategy: A Comparing Review.
    [24]
    David Harmon, Etienne Vouga, Rasmus Tamstorf, and Eitan Grinspun. 2008. Robust treatment of simultaneous collisions. In Proceedings of the ACM SIGGRAPH (SIGGRAPH’08). Association for Computing Machinery, New York, NY, Article 23, 4 pages.
    [25]
    Philipp Holl, Nils Thuerey, and Vladlen Koltun. 2020. Learning to control PDEs with differentiable physics. In Proceedings of the International Conference on Learning Representations.
    [26]
    Yuanming Hu, Luke Anderson, Tzu-Mao Li, Qi Sun, Nathan Carr, Jonathan Ragan-Kelley, and Frédo Durand. 2020. DiffTaichi: Differentiable programming for physical simulation. In Proceedings of the International Conference on Learning Representations.
    [27]
    Yuanming Hu, Jiancheng Liu, Andrew Spielberg, Joshua B. Tenenbaum, William T. Freeman, Jiajun Wu, Daniela Rus, and Wojciech Matusik. 2019. Chainqueen: A real-time differentiable physical simulator for soft robotics. In Proceedings of the International Conference on Robotics and Automation (ICRA’19). IEEE, 6265–6271.
    [28]
    Dongho Kang, Simon Zimmermann, and Stelian Coros. 2021. Animal gaits on quadrupedal robots using motion matching and model-based control. In Proceedings of the IEEE/RSJ International Conference on Intelligent Robots and Systems (IROS’21). IEEE.
    [29]
    Diederik P. Kingma and Jimmy Ba. 2017. Adam: A Method for Stochastic Optimization. Retrieved from https://arxiv:cs.LG/1412.6980.
    [30]
    Martin Komaritzan and Mario Botsch. 2018. Projective skinning. Proc. ACM Comput. Graph. Interact. Tech. 1, 1, Article 12 (July 2018), 19 pages. DOI:
    [31]
    Cheng Li, Min Tang, Ruofeng Tong, Ming Cai, Jieyi Zhao, and Dinesh Manocha. 2020. P-Cloth: Interactive complex cloth simulation on multi-GPU systems using dynamic matrix assembly and pipelined implicit integrators. ACM Trans. Graph. 39, 6, Article 180 (Nov. 2020), 15 pages.
    [32]
    Jie Li, Gilles Daviet, Rahul Narain, Florence Bertails-Descoubes, Matthew Overby, George E. Brown, and Laurence Boissieux. 2018b. An implicit frictional contact solver for adaptive cloth simulation. ACM Trans. Graph. 37, 4, Article 52 (July 2018), 15 pages.
    [33]
    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 Trans. Graph. 39, 4, Article 49 (July 2020), 20 pages.
    [34]
    Minchen Li, Danny M. Kaufman, and Chenfanfu Jiang. 2021. Codimensional incremental potential contact. ACM Trans. Graph. (SIGGRAPH) 40, 4, Article 170 (2021).
    [35]
    Minchen Li, Alla Sheffer, Eitan Grinspun, and Nicholas Vining. 2018. Foldsketch: Enriching garments with physically reproducible folds. ACM Trans. Graph. 37, 4, Article 133 (July 2018), 13 pages.
    [36]
    Tzu-Mao Li, Miika Aittala, Frédo Durand, and Jaakko Lehtinen. 2018a. Differentiable monte carlo ray tracing through edge sampling. ACM Trans. Graph. (Proc. SIGGRAPH Asia) 37, 6 (2018), 222:1–222:11.
    [37]
    Yunzhu Li, Jiajun Wu, Russ Tedrake, Joshua Tenenbaum, and Antonio Torralba. 2019. Learning particle dynamics for manipulating rigid bodies, deformable objects, and fluids. In Proceedings of the International Conference on Learning Representations.
    [38]
    Junbang Liang, Ming Lin, and Vladlen Koltun. 2019. Differentiable cloth simulation for inverse problems. In Advances in Neural Information Processing Systems, H. Wallach, H. Larochelle, A. Beygelzimer, F. d'Alché-Buc, E. Fox, and R. Garnett (Eds.), Vol. 32. Curran Associates.Retrieved from https://proceedings.neurips.cc/paper/2019/file/28f0b864598a1291557bed248a998d4e-Paper.pdf.
    [39]
    Dong C. Liu and Jorge Nocedal. 1989. On the limited memory BFGS method for large scale optimization. Math. Program. 45 (1989), 503–528.
    [40]
    Tiantian Liu, Adam W. Bargteil, James F. O’Brien, and Ladislav Kavan. 2013. Fast simulation of mass-spring systems. ACM Trans. Graph. 32, 6, Article 214 (Nov. 2013), 7 pages.
    [41]
    Tiantian Liu, Sofien Bouaziz, and Ladislav Kavan. 2017. Quasi-newton methods for real-time simulation of hyperelastic materials. ACM Trans. Graph. 36, 3 (2017), 1–16.
    [42]
    Mickaël Ly, Romain Casati, Florence Bertails-Descoubes, Mélina Skouras, and Laurence Boissieux. 2018. Inverse elastic shell design with contact and friction. ACM Trans. Graph. 37, 6, Article 201 (Dec. 2018), 16 pages.
    [43]
    Mickaël Ly, Jean Jouve, Laurence Boissieux, and Florence Bertails-Descoubes. 2020. Projective dynamics with dry frictional contact. ACM Trans. Graph. 39, 4, Article 57 (July 2020), 8 pages.
    [44]
    M. Macklin, K. Erleben, M. Müller, N. Chentanez, S. Jeschke, and T. Y. Kim. 2020. Primal/dual descent methods for dynamics. In Proceedings of the ACM SIGGRAPH/ Eurographics Symposium on Computer Animation (SCA’20). Eurographics Association, Goslar, DEU, Article 9, 12 pages.
    [45]
    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 (MIG’16). Association for Computing Machinery, New York, NY, 49–54.
    [46]
    Sebastian Martin, Bernhard Thomaszewski, Eitan Grinspun, and Markus Gross. 2011. Example-based elastic materials. ACM Trans. Graph. 30, 4, Article 72 (July 2011), 8 pages. DOI:
    [47]
    Antoine McNamara, Adrien Treuille, Zoran Popović, and Jos Stam. 2004. Fluid control using the adjoint method. ACM Trans. Graph. 23, 3 (Aug. 2004), 449–456.
    [48]
    E. Miguel, D. Bradley, B. Thomaszewski, B. Bickel, W. Matusik, M. A. Otaduy, and S. Marschner. 2012. Data-driven estimation of cloth simulation models. Comput. Graph. Forum 31, 2 (May 2012), 519–528.
    [49]
    Eder Miguel, Rasmus Tamstorf, Derek Bradley, Sara C. Schvartzman, Bernhard Thomaszewski, Bernd Bickel, Wojciech Matusik, Steve Marschner, and Miguel A. Otaduy. 2013. Modeling and estimation of internal friction in cloth. ACM Trans. Graph. 32, 6, Article 212 (Nov. 2013), 10 pages.
    [50]
    Michael Mistry, Jonas Buchli, and Stefan Schaal. 2010. Inverse dynamics control of floating base systems using orthogonal decomposition. In Proceedings of the IEEE International Conference on Robotics and Automation. 3406–3412. DOI:
    [51]
    Juan Montes, Bernhard Thomaszewski, Sudhir Mudur, and Tiberiu Popa. 2020. Computational design of skintight clothing. ACM Trans. Graph. 39, 4, Article 105 (July 2020), 12 pages.
    [52]
    Jorge J. Moré and David J. Thuente. 1994. Line search algorithms with guaranteed sufficient decrease. ACM Trans. Math. Softw. 20, 3 (Sept. 1994), 286–307. DOI:
    [53]
    Matthias Müller, Bruno Heidelberger, Marcus Hennix, and John Ratcliff. 2007. Position based dynamics. J. Vis. Comun. Image Represent. 18, 2 (April 2007), 109–118.
    [54]
    J. Krishna Murthy, Miles Macklin, Florian Golemo, Vikram Voleti, Linda Petrini, Martin Weiss, Breandan Considine, Jérôme Parent-Lévesque, Kevin Xie, Kenny Erleben, Liam Paull, Florian Shkurti, Derek Nowrouzezahrai, and Sanja Fidler. 2021. gradSim: Differentiable simulation for system identification and visuomotor control. In Proceedings of the International Conference on Learning Representations. Retrieved from https://openreview.net/forum?id=c_E8kFWfhp0.
    [55]
    Rahul Narain, Armin Samii, and James F. O’Brien. 2012. Adaptive anisotropic remeshing for cloth simulation. ACM Trans. Graph. 31, 6, Article 152 (Nov. 2012), 10 pages.
    [56]
    Miguel A. Otaduy, Rasmus Tamstorf, Denis Steinemann, and Markus Gross. 2009. Implicit contact handling for deformable objects. Comput. Graph. Forum 28, 2 (2009), 559–568.
    [57]
    Matthew Overby, George E. Brown, Jie Li, and Rahul Narain. 2017. ADMM \( \supseteq \) projective dynamics: Fast simulation of hyperelastic models with dynamic constraints. IEEE Trans. Visual. Comput. Graph. 23, 10 (Oct 2017), 2222–2234.
    [58]
    Jovan Popović, Steven Seitz, and Michael Erdmann. 2003. Motion sketching for control of rigid-body simulations. ACM Trans. Graph. 22, 4 (Oct. 2003), 1034–1054.
    [59]
    Jovan Popović, Steven M. Seitz, Michael Erdmann, Zoran Popović, and Andrew Witkin. 2000. Interactive manipulation of rigid body simulations. In Proceedings of the 27th Annual Conference on Computer Graphics and Interactive Techniques (SIGGRAPH’00). ACM Press/Addison-Wesley Publishing, 209–217. DOI:
    [60]
    Xavier Provot. 1997. Collision and self-collision handling in cloth model dedicated to design garments. In Computer Animation and Simulation’97, Daniel Thalmann and Michiel van de Panne (Eds.). Springer Vienna, Vienna, 177–189.
    [61]
    Yi-Ling Qiao, Junbang Liang, Vladlen Koltun, and Ming Lin. 2020. Scalable differentiable physics for learning and control. In Proceedings of the International Conference on Machine Learning.
    [62]
    Alvaro Sanchez-Gonzalez, Jonathan Godwin, Tobias Pfaff, Rex Ying, Jure Leskovec, and Peter Battaglia. 2020. Learning to simulate complex physics with graph networks. In Proceedings of the International Conference on Machine Learning.
    [63]
    Connor Schenck and Dieter Fox. 2018. SPNets: Differentiable fluid dynamics for deep neural networks. In Proceedings of the Conference on Robot Learning (CoRL’18).
    [64]
    John Schulman, Filip Wolski, Prafulla Dhariwal, Alec Radford, and Oleg Klimov. 2017. Proximal policy optimization algorithms. Retrieved fromhttps://arXiv:1707.06347.
    [65]
    Ari Stern and Mathieu Desbrun. 2006. Discrete geometric mechanics for variational time integrators. In Proceedings of the ACM SIGGRAPH Courses (SIGGRAPH’06). Association for Computing Machinery, New York, NY, 75–80.
    [66]
    Ari Stern and Eitan Grinspun. 2009. Implicit-explicit variational integration of highly oscillatory problems. Multiscale Model. Simul. 7, 4 (2009), 1779–1794.
    [67]
    Rasmus Tamstorf, Toby Jones, and Stephen F. McCormick. 2015. Smoothed aggregation multigrid for cloth simulation. ACM Trans. Graph. 34, 6, Article 245 (Oct. 2015), 13 pages.
    [68]
    Demetri Terzopoulos, John Platt, Alan Barr, and Kurt Fleischer. 1987. Elastically deformable models. SIGGRAPH Comput. Graph. 21, 4 (Aug. 1987), 205–214.
    [69]
    Marc Toussaint, Kelsey Allen, Kevin Smith, and Joshua Tenenbaum. 2018. Differentiable physics and stable modes for tool-use and manipulation planning. In Robotics: Science and Systems, Vol. 2.
    [70]
    Adrien Treuille, Antoine McNamara, Zoran Popović, and Jos Stam. 2003. Keyframe control of smoke simulations. ACM Trans. Graph. 22, 3 (July 2003), 716– 723.
    [71]
    Nobuyuki Umetani, Danny M. Kaufman, Takeo Igarashi, and Eitan Grinspun. 2011. Sensitive couture for interactive garment modeling and editing. ACM Trans. Graph. 30, 4, Article 90 (July 2011), 12 pages.
    [72]
    Huamin Wang. 2015. A chebyshev semi-iterative approach for accelerating projective and position-based dynamics. ACM Trans. Graph. 34, 6, Article 246 (Oct. 2015), 9 pages.
    [73]
    Huamin Wang. 2018. Rule-free sewing pattern adjustment with precision and efficiency. ACM Trans. Graph. 37, 4, Article 53 (July 2018), 13 pages.
    [74]
    Huamin Wang, James F. O’Brien, and Ravi Ramamoorthi. 2011. Data-driven elastic models for cloth: Modeling and measurement. In Proceedings of the ACM SIGGRAPH (SIGGRAPH’11). Association for Computing Machinery, New York, NY, Article 71, 12 pages.
    [75]
    Huamin Wang and Yin Yang. 2016. Descent methods for elastic body simulation on the GPU. ACM Trans. Graph. 35, 6, Article 212 (Nov. 2016), 10 pages.
    [76]
    Zhendong Wang, Longhua Wu, Marco Fratarcangeli, Min Tang, and Huamin Wang. 2018. Parallel multigrid for nonlinear cloth simulation. Comput. Graph. Forum 37, 7 (2018), 131–141.
    [77]
    Keenon Werling, Dalton Omens, Jeongseok Lee, Ioannis Exarchos, and C. Karen Liu. 2021. Fast and feature-complete differentiable physics engine for articulated rigid bodies with contact constraints. In Proceedings of the Conference on Robotics: Science and Systems. DOI:
    [78]
    Ryan White, Keenan Crane, and David Forsyth. 2007. Capturing and animating occluded cloth. In Proceedings of the ACM Conference on Transactions on Graphics (SIGGRAPH’07).
    [79]
    Andrew Witkin and Michael Kass. 1988. Spacetime constraints. In Proceedings of the 15th Annual Conference on Computer Graphics and Interactive Techniques (SIGGRAPH’88). Association for Computing Machinery, New York, NY, 159–168. DOI:
    [80]
    Chris Wojtan, Peter Mucha, and Greg Turk. 2006. Keyframe control of complex particle systems using the adjoint method. In Proceedings of the ACM SIGGRAPH/ Eurographics Symposium on Computer Animation (SCA’06). Eurographics Association, Goslar, DEU, 15–23.
    [81]
    Zangyueyang Xian, Xin Tong, and Tiantian Liu. 2019. A scalable galerkin multigrid method for real-time simulation of deformable objects. ACM Trans. Graph. 38, 6, Article 162 (Nov. 2019), 13 pages.
    [82]
    Jie Xu, Tao Chen, Lara Zlokapa, Michael Foshey, Wojciech Matusik, Shinjiro Sueda, and Pulkit Agrawal. 2021. An end-to-end differentiable framework for contact-aware robot design. In Proceedings of the Conference on Robotics: Science and Systems. DOI:
    [83]
    Qiu Yixuan. 2021. LBFGS++. Retrieved fromhttps://github.com/yixuan/LBFGSpp/.

    Cited By

    View all
    • (2024)Simulation of cloth with thickness based on isogeometric continuum elastic modelJournal of Image and Graphics10.11834/jig.22119929:1(243-255)Online publication date: 2024
    • (2024)Differentiable solver for time-dependent deformation problems with contactACM Transactions on Graphics10.1145/365764843:3(1-30)Online publication date: 22-May-2024
    • (2024)Enhancing Out-of-distribution Generalization on Graphs via Causal Attention LearningACM Transactions on Knowledge Discovery from Data10.1145/364439218:5(1-24)Online publication date: 26-Mar-2024
    • Show More Cited By

    Index Terms

    1. DiffCloth: Differentiable Cloth Simulation with Dry Frictional Contact

      Recommendations

      Comments

      Information & Contributors

      Information

      Published In

      cover image ACM Transactions on Graphics
      ACM Transactions on Graphics  Volume 42, Issue 1
      February 2023
      211 pages
      ISSN:0730-0301
      EISSN:1557-7368
      DOI:10.1145/3555791
      Issue’s Table of Contents

      Publisher

      Association for Computing Machinery

      New York, NY, United States

      Publication History

      Published: 03 October 2022
      Online AM: 22 April 2022
      Accepted: 18 March 2022
      Revised: 11 February 2022
      Received: 10 October 2021
      Published in TOG Volume 42, Issue 1

      Permissions

      Request permissions for this article.

      Check for updates

      Author Tags

      1. Projective Dynamics
      2. differentiable simulation
      3. cloth simulation

      Qualifiers

      • Research-article
      • Refereed

      Funding Sources

      • Defense Advanced Research Projects Agency (DARPA)

      Contributors

      Other Metrics

      Bibliometrics & Citations

      Bibliometrics

      Article Metrics

      • Downloads (Last 12 months)2,397
      • Downloads (Last 6 weeks)218
      Reflects downloads up to 27 Jul 2024

      Other Metrics

      Citations

      Cited By

      View all
      • (2024)Simulation of cloth with thickness based on isogeometric continuum elastic modelJournal of Image and Graphics10.11834/jig.22119929:1(243-255)Online publication date: 2024
      • (2024)Differentiable solver for time-dependent deformation problems with contactACM Transactions on Graphics10.1145/365764843:3(1-30)Online publication date: 22-May-2024
      • (2024)Enhancing Out-of-distribution Generalization on Graphs via Causal Attention LearningACM Transactions on Knowledge Discovery from Data10.1145/364439218:5(1-24)Online publication date: 26-Mar-2024
      • (2024)MaPa: Text-driven Photorealistic Material Painting for 3D ShapesACM SIGGRAPH 2024 Conference Papers10.1145/3641519.3657504(1-12)Online publication date: 13-Jul-2024
      • (2024)DiffSound: Differentiable Modal Sound Rendering and Inverse Rendering for Diverse Inference TasksACM SIGGRAPH 2024 Conference Papers10.1145/3641519.3657493(1-12)Online publication date: 13-Jul-2024
      • (2024)Soft Pneumatic Actuator Design using Differentiable SimulationACM SIGGRAPH 2024 Conference Papers10.1145/3641519.3657467(1-11)Online publication date: 13-Jul-2024
      • (2024)Iterative Motion Editing with Natural LanguageACM SIGGRAPH 2024 Conference Papers10.1145/3641519.3657447(1-9)Online publication date: 13-Jul-2024
      • (2024)Collaborative Filtering Based on Diffusion Models: Unveiling the Potential of High-Order ConnectivityProceedings of the 47th International ACM SIGIR Conference on Research and Development in Information Retrieval10.1145/3626772.3657742(1360-1369)Online publication date: 10-Jul-2024
      • (2024)Intersection-Free Robot Manipulation With Soft-Rigid Coupled Incremental Potential ContactIEEE Robotics and Automation Letters10.1109/LRA.2024.33810129:5(4487-4494)Online publication date: May-2024
      • (2024)Differentiable Cloth Parameter Identification and State Estimation in ManipulationIEEE Robotics and Automation Letters10.1109/LRA.2024.33570399:3(2519-2526)Online publication date: Mar-2024
      • Show More Cited By

      View Options

      View options

      PDF

      View or Download as a PDF file.

      PDF

      eReader

      View online with eReader.

      eReader

      HTML Format

      View this article in HTML Format.

      HTML Format

      Get Access

      Login options

      Full Access

      Media

      Figures

      Other

      Tables

      Share

      Share

      Share this Publication link

      Share on social media