物理学家长期以来一直在观察物理现象,如流体的运动和星系的相互作用,并发展出描述这些系统的数学模型。最近,计算机的出现使我们能够在计算环境中以软件的形式实现这些模型,从而开创了物理模拟领域。在计算机上,我们能够在可控的环境中重建和研究物理现象,既可以用于描述,也可以用于探索,从而促进设计、工程和娱乐方面的进步。gydF4y2Ba
然而,尽管计算机硬件受益于摩尔定律,我们编程、调试和维护软件的能力却以较慢的速度发展。当我们为计算机图形开发物理模拟工具时,这一观察决定了我们的优先事项。虽然在今天做出能够带来预先的简单性和出色性能的选择是很重要的,但我们更希望这些选择不会阻碍我们扩展功能和提高物理现实感的长期目标。为了支持物理方法而放弃特殊模型可能需要更深入的初始投资,但它承诺在可预测性、可控性和可扩展性方面获得可观的回报。gydF4y2Ba
1.1.安全、正确、进步gydF4y2Ba
模拟的一个特别困难的方面是复杂碰撞的建模。当两个物体试图同时占据空间中的同一点时,就会发生碰撞。即使是像一件皱巴巴的衬衫这样的简单场景,也包含了大量的这种接触点,它们在模拟过程中出现和消失。复杂接触场景的鲁棒模拟对于跨越图形(训练、虚拟世界、娱乐)和工程(产品设计、安全分析、实验验证)的应用至关重要。频繁和大量碰撞的存在(gydF4y2Ba图1gydF4y2Ba),涉及尖锐边界、静止和滑动接触以及所有这些组合的相互作用使可靠地模拟接触具有挑战性。无法处理这些困难的情况导致了相互渗透,物体相互交叉的视觉假象——明显的非物理配置。这些场景的有效解决需要考虑几何的基本问题gydF4y2Ba安全gydF4y2Ba、物理gydF4y2Ba正确性gydF4y2Ba,计算gydF4y2Ba进步gydF4y2Ba.它们有各自的含义:(a)对于设定良好的问题,模拟不会进入无效(互穿透)状态,(b)碰撞响应遵守因果和守恒的物理定律(质量、动量、能量等),以及(c)算法在有限的,最好是短的时间内完成模拟。一个理想的算法提供了安全、正确性和进展的可证明的保证,即使在计算机的离散设置中也是如此。安全保证消除了由于难看的穿透工件而在动画设计过程中迭代的需要;这样的保证不应该落在被可调参数负担过重的用户身上。尊重离散守恒定律允许在没有人为数值阻尼的情况下发展可控耗散。尊重因果关系对于捕捉连锁反应和波传播和叠加等现象至关重要。然而,如果这两个保证不伴随着有保证的进度,模拟可能永远不会完成,无论硬件多快或多并行。gydF4y2Ba
1.2.同步的缺陷gydF4y2Ba
动态模拟是通过微分方程的积分来进行的,比如我们熟悉的牛顿第二定律。大多数集成方法都是同步的,将整个配置以锁定的方式从一个时刻向前移动到下一个时刻。这种同步从根本上是与安全、正确性和进步相矛盾的:前两个目标是通过按照因果关系顺序处理碰撞来保证的,因为碰撞可能以无限的速度传播,所以可能需要任意小的时间步长。在一个“合理的”时间步内可能发生的影响事件的数量是巨大的:在他们对接触的分析中,Cirak和WestgydF4y2Ba5gydF4y2Ba提出一个计数论证并得出结论,同步“接触模拟算法不能试图精确计算所有冲击的顺序和时间”,因为这将排除合理的进展。gydF4y2Ba
图形社区的主流重点gydF4y2Ba进步gydF4y2Ba激发了很多努力去寻找,gydF4y2Ba追溯gydF4y2Ba这是对之前一段时间内发生的一组碰撞的物理合理解决方案。gydF4y2Ba4gydF4y2Ba,gydF4y2Ba20.gydF4y2Ba这种方法通常有可调节的参数,必须仔细选择,以平衡安全和进度;还有一些方法抛弃了因果关系而倾向于进步。gydF4y2Ba19gydF4y2Ba对可变形物体(如布料和其他柔性材料)的复杂碰撞进行有原则的、忠实的模拟,仍然是一个开放的、具有挑战性的和重要的问题。gydF4y2Ba
1.3.异步gydF4y2Ba
我们建议将安全和正确性与进步放在同等的地位上。为了克服这些要求之间的根本对立,我们转向gydF4y2Ba异步集成gydF4y2Ba,它以自己的速度整合了一个离散形状的每个几何元素(例如,横跨三角形定义的布的拉伸阻力),gydF4y2Ba不gydF4y2Ba与整个对象步调一致。异步为在复杂接触条件下模拟可变形物体提供了令人信服的长期优势,特别是在安全性、正确性和进展方面,这些优势尚未被探索。对于涉及尖锐边界或分散接触点的场景,如皱褶的衣服,异步使非互穿性和动量守恒变得容易处理。因为元素以它们自己的速度前进,那些没有被碰撞纠缠的元素可以以大的时间步前进。所示gydF4y2Ba图2gydF4y2Ba在这种情况下,异步方法的中值时间步长可以是适中的,即使当高碰撞迫使某些元素以较小的时间步长前进时也是如此。gydF4y2Ba
1.4.异步集成gydF4y2Ba
作为出发点,我们考虑gydF4y2Ba异步变分集成商gydF4y2Ba(AVIs),gydF4y2Ba16gydF4y2Ba它们属于一类更大的积分器,既保留动量又保留辛性(与相空间中面积的保留松散相关);这种积分器被高度重视,因为它们在模拟时间的长跨度内可以证明近似的能量守恒。然而,一个正确的接触模型仍有待探索。gydF4y2Ba
1.5.异步的碰撞检测gydF4y2Ba
为了确保安全,我们需要一个同样有原则的碰撞检测方法。由于每个物体都能够与任何其他物体发生碰撞,因此碰撞检测基本上是一个二次元问题。因此,有效的碰撞检测算法是必要的,以修剪不相交的对。此外,我们必须可靠地找到那些接近而不是实际相交的元素,以便我们可以抵消即将到来的穿透。这是一个被广泛研究的问题;可惜的是,许多报告的成功都是特定于同步上下文中的,并且作为一个组,如果在每个本地异步步骤之后应用naïvely,当前方法可能会非常慢。这激发了我们的兴趣gydF4y2Ba动态数据结构gydF4y2Ba(kds)gydF4y2Ba3.gydF4y2Ba: KDS算法维护一个由描述某些离散属性(如无碰撞)的形式不变量控制的数据结构,以响应几何元素的连续运动。许多现有的碰撞检测方法可以从KDS的角度重新制定。kds似乎注定要用于异步应用程序,因为它们专注于快速、最小、“输出敏感”的数据结构更新,这使它们非常适合由每个AVI步骤影响的小型本地更改。gydF4y2Ba
这些观察激发了我们从新的方向探讨接触力学在图形和力学应用中的兴趣。特别地,(a)我们建立了一个接触模型,即gydF4y2Ba安全gydF4y2Ba独立于用户参数,如刚度和碰撞的“弹性”。(b)我们gydF4y2Ba正确gydF4y2Ba离散时间,使用异步来保持模型的安全性并尊重因果关系,使用辛动量积分器来精确地保存动量并在长运行时间中近似地保存能量。最后,(c)我们为AVIs与kds的结合奠定了基本基础,使高变形物体的复杂接触的安全、正确的集成变得可处理。gydF4y2Ba
考虑一个时变配置的物理系统gydF4y2Ba问gydF4y2Ba(gydF4y2BatgydF4y2Ba)在空间里gydF4y2Ba问gydF4y2Ba所有的配置;具体来说,对于有顶点的网格gydF4y2BaxgydF4y2Ba1gydF4y2Ba、……gydF4y2BaxgydF4y2BangydF4y2Ba我们用3D来表示gydF4y2BaQ = RgydF4y2Ba3 ngydF4y2Ba由所有顶点的笛卡尔坐标组成的向量。我们用一个点来表示时间的微分,因此gydF4y2Ba(gydF4y2BatgydF4y2Ba为系统的速度。让gydF4y2Ba米gydF4y2Ba是质量矩阵,所以gydF4y2BapgydF4y2Ba=gydF4y2Ba米gydF4y2Ba是动力。StörmerVerlet(“leapfrog”)积分器演化出一系列位置gydF4y2Ba问gydF4y2Ba0gydF4y2Ba,gydF4y2Ba问gydF4y2Ba1gydF4y2Ba,gydF4y2Ba问gydF4y2Ba2gydF4y2Ba,……而且momenta,……通过更新规则gydF4y2Ba
在哪里gydF4y2BahgydF4y2Ba时间步长和gydF4y2BaFgydF4y2Ba(gydF4y2Ba问gydF4y2Ba)是原力。下标/上标的指标提醒我们位置和速度在时间上是交错的gydF4y2BatgydF4y2BakgydF4y2Ba关联到gydF4y2Ba问gydF4y2BakgydF4y2Ba, (gydF4y2BatgydF4y2BakgydF4y2Ba,gydF4y2BatgydF4y2BakgydF4y2Ba+1gydF4y2Ba)相关gydF4y2Ba.实际上,leapfrog首先更新位置在gydF4y2BatgydF4y2BakgydF4y2Ba使用与前一区间相关的恒定动量(gydF4y2BatgydF4y2BakgydF4y2Ba1gydF4y2Ba,gydF4y2BatgydF4y2BakgydF4y2Ba),然后冲动地“踢腿”,为接下来的音程获得新的动力(gydF4y2BatgydF4y2BakgydF4y2Ba,gydF4y2BatgydF4y2BakgydF4y2Ba+ 1gydF4y2Ba),在间隔上产生分段线性(p.l.)轨迹(gydF4y2BatgydF4y2BakgydF4y2Ba,gydF4y2BatgydF4y2BakgydF4y2Ba+ 1gydF4y2Ba) (gydF4y2Ba图3gydF4y2Ba).作为一个gydF4y2Ba几何积分器gydF4y2Ba,gydF4y2Ba14gydF4y2BaLeapfrog在长运行时间内跟踪守恒定律(如质量、动量、能量)和绝热不变量(如温度),并在时间步长范围内提供更多的一致性和定性可预测的行为。gydF4y2Ba
AVIs自然地越级延伸。每个力都有一个独立的、规律的(固定速率)时钟,根据稳定性要求预先固定。力的脉冲在时间上是有规律的,力的叠加产生的事件在时间上是不规则的。和蛙跳一样,它的运动轨迹是p.l.的,被“踢腿”打断。当它们的时钟嵌套时,四分音符嵌套在半音符中,就减少为多步方法的一个实例gydF4y2Ba14gydF4y2Ba;我们的发展适用于这一系列方法。gydF4y2Ba
例如,卢等人。gydF4y2Ba16gydF4y2Ba为每个网格元素指定一个弹性势。不规则网格具有空间变化的单元形状和相应的时间步稳定限制;在AVIs中,每个元素都以自己的速度前进。由于元素势只依赖于局部网格邻域,所以每个集成事件都是gydF4y2Ba当地的gydF4y2Ba,影响位置和速度的少数gydF4y2Ba钢网gydF4y2Ba顶点。gydF4y2Ba
为了将中断调度到p.l.轨迹,AVIs使用一个优先队列,在概念上填充所有事件时间,直到永恒。实际上,只为每个时钟安排下一个滴答就足够了,因为该事件可以安排后续的滴答。gydF4y2Ba
2.1.确保正确性gydF4y2Ba
对AVIs的几何和守恒性质进行更全面的分析需要用到离散力学和变分积分的思想。gydF4y2Ba16gydF4y2Ba,gydF4y2Ba17gydF4y2Ba这里我们强调一个关键的结果:Lew等人推测AVIs的卓越性能是由于它gydF4y2BamultisymplecticitygydF4y2Ba;推导要求每个力都有一个规律的(恒定速率,不断滴答的)时钟。严禁玩这个钟加速或暂停。用其他机制中断p.l.轨迹(例如,交错一个速度滤波器)打破了多辛性。gydF4y2Ba
2.2.阿维斯和联系gydF4y2Ba
AVIs的守恒性质依赖于多辛形式的守恒gydF4y2Ba17gydF4y2Ba,gydF4y2Ba18gydF4y2Ba并且通过naïvely结合现有的接触解析方法很容易被打破。一个原则性的处理必须考虑接触力学的多辛公式和碰撞检测和响应的异步计算。gydF4y2Ba
作为一个接触模型,考虑一个简单的惩罚方法,惩罚身体之间的接近性。我们将这种惩罚表示为线性半弹簧,它只抵消来自其指定休息长度的压缩。伸长被忽略,允许分离体自由移动。gydF4y2Ba
对于给定的表面厚度,间隙函数gydF4y2Ba
痕迹表明移动点之间的接近性gydF4y2BaxgydF4y2Ba一个gydF4y2Ba而且gydF4y2BaxgydF4y2BabgydF4y2Ba.当gydF4y2BaggydF4y2Ba< 0时,这些点称为gydF4y2Ba直接gydF4y2Ba.我们可以用表示惩罚(半弹簧)势和力gydF4y2BaggydF4y2Ba
分别在哪里gydF4y2BargydF4y2Ba是联系gydF4y2Ba刚度gydF4y2Ba.罚刚度的选择是罚法中最受诟病的问题。gydF4y2Ba1gydF4y2Ba对于任何固定刚度gydF4y2BargydF4y2Ba,存在足够大的接近速度,使接触电位将被动量所克服,允许构型非法隧道进入穿透状态。gydF4y2Ba
的gydF4y2Ba障碍的方法gydF4y2Ba用一个函数代替上面的接触势,随着构型接近边界而无界增长gydF4y2BaggydF4y2Ba(gydF4y2Ba问gydF4y2Ba) = 0,消除了隧道的可能性。然而,这样的函数也必须有无界的二阶导数,从而排除了稳定的定步时间积分gydF4y2Ba任何gydF4y2Ba步长选择。gydF4y2Ba14gydF4y2Ba
为了缓解这些问题,我们提出了一种由无限族组成的结构gydF4y2Ba嵌套的潜力gydF4y2Ba
(在哪里gydF4y2BalgydF4y2Ba)是一个单调递减的接近度(或“厚度”)gydF4y2BalgydF4y2Bath潜力,gydF4y2BargydF4y2Ba(gydF4y2BalgydF4y2Ba)为单调递增的惩罚刚度。要使这些嵌套的势垒成为势垒,这些势垒的累积能量必须随着两个原语之间距离的消失而发散:gydF4y2Ba
我们使用gydF4y2BargydF4y2Ba(gydF4y2BalgydF4y2Ba) =gydF4y2BargydF4y2Ba(1)gydF4y2BalgydF4y2Ba3.gydF4y2Ba和(gydF4y2BalgydF4y2Ba) = (1)gydF4y2BalgydF4y2Ba1/4gydF4y2Ba,在那里gydF4y2BargydF4y2Ba(1)和(1)为与模拟相关的最外层基础刚度和厚度。gydF4y2Ba
我们称这个区域为(gydF4y2BangydF4y2Ba+ 1)gydF4y2BaggydF4y2Ba(gydF4y2Ba问gydF4y2Ba) (gydF4y2BangydF4y2Ba),具体在哪里gydF4y2BangydF4y2Ba在非零的势中gydF4y2BangydF4y2BathgydF4y2Ba离散点球层gydF4y2Ba(见gydF4y2Ba图4gydF4y2Ba).gydF4y2Ba
嵌套势各自的最大稳定时间步长形成一个衰减序列,因此构造了这种结构gydF4y2Ba需要gydF4y2Ba一种自适应或异步时间步进算法。每个相互作用电势都有自己的积分时钟,并有机会应用脉冲变化的轨迹,当它的时钟滴答。问题是如何对这样一个无限序列进行时间步进。gydF4y2Ba
正如我们将要看到的,上述结构转变了计算力学中一个看似棘手的问题,建立了接触力学的多辛处理gydF4y2Ba保证gydF4y2Ba缺乏对计算机科学中一个具有挑战性但可解决的问题的深入研究:对概念上无限的交互潜力集的有效记账。gydF4y2Ba
3.1.中央的观察gydF4y2Ba
在任何时间间隔内,虽然概念上(无限个)时钟继续滴答作响,而且时钟滴答声的总数在时间上是密集的,但只有一个gydF4y2Ba有限的,稀疏的gydF4y2Ba一组时钟滴答应用(非零)脉冲。特别是索引(gydF4y2BalgydF4y2Ba)表示离散惩罚层(DPL)的个数gydF4y2Ba活跃的gydF4y2Ba势;其余部分虽然在概念上存在,但不影响轨迹,无需近似即可剔除(gydF4y2Ba图5gydF4y2Ba).我们需要的是有效的记账,以跟踪哪些交互潜力是活跃的;每一次状态的变化都对应着惩罚层与惩罚层之间的转换gydF4y2Ba离散gydF4y2Ba由于沿a运动而引起的状态变化gydF4y2Ba连续gydF4y2Ba轨迹。kds的诞生就是为了解决这个问题。gydF4y2Ba
GuibasgydF4y2Ba12gydF4y2Ba给出了动力学数据结构的概述。我们对非活跃部队的筛选使用了一种动态分离板的实现,用于跟踪原始部队之间的接近程度,这与古斯伯等人使用的方法密切相关。gydF4y2Ba13gydF4y2Ba在刚性多面体的背景下。gydF4y2Ba
4.1.动力分离板gydF4y2Ba
三角形网格的接近度可以用顶点-三角形和边对之间的距离来表示。因此,我们的算法跟踪这些原语之间的接近性gydF4y2Ba证书gydF4y2Ba,一个来自动力学数据结构文献的概念。证书是某种不变式的声明,在本例中,两个原语至少由(分隔)gydF4y2BalgydF4y2Ba)为惩罚层gydF4y2BalgydF4y2Ba.gydF4y2Ba
为了维护数据结构,我们必须计算一个gydF4y2Ba证书失败gydF4y2Ba在给定当前配置和速度的情况下,该时间是证书停止有效的时间。计算具有分段线性运动的两个原语进入某个固定接近点的时间需要找到一个六次多项式的根。这对于我们的应用程序来说代价太大了,所以我们观察到证书失败的时间只需要是保守的,而不是精确的。gydF4y2Ba
在此基础上,我们引入了一个动力学分离板,我们将其定义为一个在三空间中匀速挤压的平面(gydF4y2BalgydF4y2Ba).然后,对于每个顶点gydF4y2Ba问gydF4y2Ba我gydF4y2Ba在原始对中,我们可以计算它进入平板的时间,gydF4y2Ba
在哪里gydF4y2Ba分离平面的法线和gydF4y2BavgydF4y2Ba是指定的恒定速度(我们使用两个原语的最近点之间的相对速度)。选择其中最早的时间作为证书失败事件时间。gydF4y2Ba
因为这个时间是保守的,所以在出现证书失败事件时,我们必须在创建适当的惩罚层事件之前检查原语是否在附近。参见5.1节了解完整算法的演练。gydF4y2Ba
4.2.广泛的阶段gydF4y2Ba
我们的实现从上面描述的简单分离板KDS开始。我们认为这是碰撞检测的“窄阶段”,即跟踪几何元素之间相交所需的低级处理。gydF4y2Ba
虽然形式上是正确的,但单独使用简单的KDS并不能有效地扩展到大型场景。各种复杂的kds跟踪邻近性,提供更好的“宽相位”缩放,并且可以很容易地适应DPL索引的记账。gydF4y2Ba6gydF4y2Ba,gydF4y2Ba9gydF4y2Ba,gydF4y2Ba11gydF4y2Ba
在传统的(同步)仿真中,一种常见的宽相位算法是边界体积层次算法(BVH)。gydF4y2Ba7gydF4y2Ba在我们的实现中,我们采用了威勒和扎克曼描述的动力学BVH,gydF4y2Ba22gydF4y2Ba扩展他们基于轴向包围盒的方法来使用gydF4y2BakgydF4y2Ba-离散面向Polytopes,或gydF4y2BakgydF4y2Ba- ops,通常提供更严格的界限。关于实现和优化的细节,我们建议读者阅读完整的出版物。gydF4y2Ba
动力学数据结构已经存在了一段时间,但这是它们第一次与AVIs集成,尽管它们的实现类似。在本节中,我们将引导读者通过一个简单的设置来揭示算法的逻辑。为了说明的简单,我们将放弃a的存在gydF4y2BakgydF4y2Ba-DOP等级,并假设分离板负责所有接近检测。gydF4y2Ba
5.1.预排gydF4y2Ba
考虑一个粒子落向固定的地板(gydF4y2Ba图6gydF4y2Ba).从概念上讲,第一层惩罚的时钟总是滴答作响;然而,只有当粒子下降到高度(1)以下时,比如在时间,它才有活性(施加非零脉冲)gydF4y2BatgydF4y2Ba.我们必须“激活时钟”,不能晚于时间gydF4y2Bat。gydF4y2Ba太晚激活会导致错误(错过脉冲),而过早激活则是正确的,尽管过于保守(一些空事件没有被剔除)。分离板KDS负责这种激活。gydF4y2Ba
我们初始化一个按时间排序的事件优先队列。最初,该队列包含一个具有时间步长的重力事件gydF4y2BaggydF4y2Ba(通常,还会添加内力)和一个证书失败事件,表示颗粒和地板之间的分离板。模拟过程通过重复从队列中弹出事件并处理它们(更新速度或重新调度证书)来进行。当一个力事件修改速度时,依赖于该速度的所有证书都必须重新调度。gydF4y2Ba
最初,粒子的速度为零,重力事件在队列的前面(gydF4y2Ba图6gydF4y2Ba).当被处理时,粒子被赋予向下的速度(gydF4y2Ba图6 bgydF4y2Ba).证书必须按照粒子进入分离板的时间重新安排,也就是时间gydF4y2BatgydF4y2BacgydF4y2Ba.gydF4y2Ba
在时间gydF4y2BatgydF4y2BacgydF4y2Ba证书事件从队列中弹出(gydF4y2Ba图6 cgydF4y2Ba).我们看到粒子在地板附近,并向队列中添加第1层惩罚事件。队列现在包含两个力事件:重力和一个惩罚层1事件。一般来说,惩罚事件比重力事件频繁得多。gydF4y2Ba
随着惩罚层1事件的创建,证书事件切换到跟踪(2)接近。然而,惩罚层1事件仍然抵消这个动作,以减少进一步的穿透(gydF4y2Ba图6 dgydF4y2Ba).gydF4y2Ba
模拟过程中,惩罚力事件和重力事件施加相反方向的脉冲。最终会发生两种情况中的一种:要么粒子进入第2层,第二个更强的惩罚力将帮助第1层抵消重力,要么第1层事件的力将平衡向下的重力。在我们的例子中,第一层力与重力达到平衡,这种状态称为gydF4y2Ba休息时联系gydF4y2Ba(gydF4y2Ba图6 egydF4y2Ba).gydF4y2Ba
对于相互作用的元素分离的弹性接触,我们需要使惩罚力失效。惩罚层力事件是一个检查粒子是否正在过渡到较浅的惩罚层的机会:如果(a)惩罚脉冲为零,即分离距离超过(gydF4y2BalgydF4y2Ba),和(b)相对速度是分离而不是接近,那么我们取消惩罚力,过渡到下一个较浅的层,并相应地调整证书。仅通过第(a)条,这种惰性的去激活方法是安全的;第(b)条有助于提高效率,避免处罚层次的快速切换。gydF4y2Ba
5.2.模板、支持和调度依赖关系gydF4y2Ba
考虑在预定时间执行事件。其速度被此事件改变的顶点集合是gydF4y2Ba钢网gydF4y2Ba的事件。用于调度的轨迹的顶点集是gydF4y2Ba支持gydF4y2Ba的事件。建立在模板和支持的概念上,一个事件gydF4y2Ba取决于gydF4y2Ba,还是gydF4y2Ba或有gydF4y2Ba如果前者的支架与后者的模板重叠,则在另一事件上;反之亦然,事件gydF4y2Ba支持gydF4y2Ba另一种情况是前者的模板与后者的支撑重叠。gydF4y2Ba表1gydF4y2Ba显示对一组典型事件的支持和模板。gydF4y2Ba
kds以前只应用于同步模拟,其中所有原语的速度都在同一时刻更新,即gydF4y2Ba的gydF4y2Ba的集合gydF4y2Ba所有gydF4y2Ba顶点。相比之下,在AVI模拟中,力集成事件通常使用较小的模板。gydF4y2Ba
执行一个支持事件后,我们必须在继续之前重新安排所有相关事件。这是一个执行具有依赖关系的部分有序指令的问题,在计算机系统文献中有详细的研究。gydF4y2Ba15gydF4y2Ba
我们的实现维护了一个有向图,其中从事件到顶点的边和从顶点到事件的边分别表示模板关系和支持关系。当事件执行时,传出边的两个邻域产生要重新调度的事件集。图抽象揭示了带有大型模板的事件(如重力)应该缓存一个偶发事件列表,而带有小型模板的事件应该动态构造一个偶发事件列表;指gydF4y2Ba图7gydF4y2Ba分别和b。gydF4y2Ba
我们将注意力转向具有挑战性的问题,涉及复杂的接触几何图形,尖锐的特征,以及在极紧密接触时的滑动。gydF4y2Ba
6.1.结gydF4y2Ba
我们模拟将丝带系成珊瑚礁结gydF4y2Ba图8gydF4y2Ba而且gydF4y2Ba9gydF4y2Ba).缎带被建模为一个松散的结,指定的材料具有刚性拉伸和弱弯曲,两端由规定的力拉动。最后的配置是忠实于实际的“童子军手册”结的形状。gydF4y2Ba
这个例子演示了在向紧密接触的位置分配资源时异步的优势。随着结的收紧,越来越精细的时间步骤被用于最紧密的接触区域。如果不是规定合理的力,我们直接规定丝带两端向外运动,模拟执行到网格分辨率成为限制剂的点,即,一个更紧的结不能打不分裂三角形;过了这个点,计算速度就会减慢,因为惩罚相互作用会深入到更深的层次,平均时间步长也会衰减。这突出了该方法的一个特点和潜在的艺术异议:当出现一个不可能或几乎不可能的情况时(无弹性的缎带在其两端具有规定的截然相反的位移),该方法的安全保证引发芝诺悖论(gydF4y2Ba图9gydF4y2Ba).gydF4y2Ba
6.2.垃圾压实机gydF4y2Ba
我们将不同复杂程度的三角形网格放入一个由地板和四面墙组成的虚拟垃圾压实器中,然后规定相反的墙向内运动(参见gydF4y2Ba图10gydF4y2Ba和事件的形象)。该方法能够模拟墙壁的接近,而不允许任何可见或不可见的穿透。与结一样,当模拟接近极限配置时,总体进展速率衰减。gydF4y2Ba
6.3.床上的钉子gydF4y2Ba
我们设计了一个问题来测试孤立点接触和尖锐边界的处理。四个银色三角形被组装成一个钉子,许多这样的钉子被垂直地放置在平床上。我们在钉子床上叠上两块织物(见gydF4y2Ba图11gydF4y2Ba),并观察到模拟的轨迹是真实的,并且没有穿透、振荡或任何其他典型的与接触不连续相关的工件。接下来,我们规定了织物的一端的运动,拖动悬挂的配置,以演示滑动在尖锐的特征。我们把钉子床延伸成一个供各种粗网弹丸使用的着陆垫。不同大小的弹丸几乎不适合或不适合钉子之间,以不同的初始速度和角度投掷,弹丸表现出各种各样的行为,包括弹跳、滚动、简单的堆叠、高频率的弹跳(这需要在发生碰撞时解决每个碰撞,因为解决固定的碰撞步长会导致混淆,从而防止弹跳);滑动和卡在钉子之间(滑动需要一个可变形的模型和摩擦,因为一个完全刚性的物体会受到钉子之间距离的限制而突然停止)。gydF4y2Ba
6.4.时机gydF4y2Ba
我们列出了各种示例的计算时间,如在3.06 GHz、4GB RAM的Intel Xeon单线程上执行。大部分分配给用于碰撞检测的动力学数据结构的维护。gydF4y2Ba
更详细的研究,考虑珊瑚礁结模拟中,弹性力和重力的积分需要总模拟时间的4.8%,惩罚力的积分需要总模拟时间的0.09%,分离平面事件的处理和重新调度分别需要0.9%和1.0%,的处理和重新调度分别需要5.2%和23.0%gydF4y2BakgydF4y2Ba分别夹住事件。事件图演示了每帧运行时如何随着缎带上的压力升高而增加。gydF4y2Ba
6.5.参数gydF4y2Ba
我们列出了各种示例的参数。弯曲和拉伸刚度是指离散壳层gydF4y2Ba10gydF4y2Ba和共边弹簧型号。COR是指恢复系数,或碰撞的“弹性”。gydF4y2Ba
7.1.参数和安全、正确和进步的三位一体gydF4y2Ba
我们的驱动目标之一是研究确保安全、正确性和进展的方法,而不考虑参数的选择。这里提出的方法确实向用户公开了一些参数,例如接近度。这些参数影响性能,而不是三个保证。因此,我们在运行问题场景中的经验与使用其他方法在质量上是不同的,因为我们不需要搜索参数来确保接触的成功建模。另一方面,我们的方法没有解决弹性的空间离散化(拉伸和弯曲模型),这也可能需要用户调整。gydF4y2Ba
虽然在理论上嵌套惩罚势垒有无限多的惩罚层可使用,但如果惩罚层的稳定时间步长太小,例如低于浮点值,则激活惩罚层是不切实际的。如果模拟的厚度(1)太小,或者速度或质量太高,就可能无法取得进展(但仍然安全)。这个限制可以通过选择一个缓慢收缩的层分布函数来解决,这就是为什么我们推荐(gydF4y2BalgydF4y2Ba) = (gydF4y2BalgydF4y2Ba)gydF4y2BalgydF4y2Ba1/4gydF4y2Ba.gydF4y2Ba
多步方法,如AVIs是已知的gydF4y2Ba共振不稳定gydF4y2Ba,gydF4y2Ba8gydF4y2Ba,gydF4y2Ba14gydF4y2Ba特别是当模拟包含了大小非常不同的相邻网格元素时。然而,在我们使用该方法时,我们还没有观察到任何这样的不稳定性或工件,我们可以将其归因于这样的不稳定性。gydF4y2Ba
7.2.更广泛的探索gydF4y2Ba
在本文中,我们关注的是构建最健壮的联系实现;因此,我们尽可能地把这些结系紧,直到每个三角形都尽可能地与相邻的三角形紧密相连。在最严密的构型中,空间离散化变得很明显。因此,引入空间适应性,细化曲率高的网格是很有趣的。另一种选择是提高渲染时的平滑度,例如使用Bridson等人的碰撞感知细分。gydF4y2Ba4gydF4y2Ba
耗散和摩擦对于在物理模拟中表达尽可能广泛的场景是至关重要的。我们在这个扩展的摘要中省略了他们的讨论,但是请读者参考原始出版物,以获得符合这个标准的简单模型。然而,未来的工作可能会探索处理叠加和静摩擦的有效算法,同时仍然适合多辛处理。gydF4y2Ba
7.3.当前和未来的影响gydF4y2Ba
在考虑将这种方法立即用于工业使用时,我们预计有两个重要的障碍。从融入动画系统的角度来看,第一个障碍是该方法对安全性的坚持,即使是以牺牲艺术自由为代价。这有效地禁止了所有的压缩,gydF4y2Ba2gydF4y2Ba,gydF4y2Ba21gydF4y2Ba以及从无效配置开始。我们相信,该方法可以扩展到允许浅(“略读”)捏取,但在这个框架内处理极端非物理边界条件似乎至少在最初与基本前提不一致,需要进一步研究。gydF4y2Ba
第二,与现有的方法相比,所提出的方法在性能上没有竞争力,没有试图做出强有力的安全性和正确性保证;如果一个艺术家愿意寻找那些不具有穿透力的好看的结果的参数,他们可能会对这里提出的方法失去耐心。gydF4y2Ba
然而,从长期的、好奇心驱动的研究的角度来看,这种方法的吸引力不仅在于它的形式主义,还在于它的性能,因为它提供了一个正式的异步框架,人们可以从这个框架研究并行化、优化,甚至是保持安全、正确性和进展的近似技术。为了帮助未来的研究,我们的初始c++实现的源代码以及生成本文中所示示例所需的数据文件都可以在网上获得gydF4y2Ba一个gydF4y2Ba.gydF4y2Ba
1.非穿透刚体动力学模拟的解析方法。在gydF4y2Ba第16届计算机图形学和交互技术年会论文集gydF4y2Ba(1989), ACM,纽约,纽约,美国,223232。gydF4y2Ba
2.巴拉夫,D.威特金,A.卡斯,M.解布。gydF4y2BaACM反式。图22。gydF4y2Ba(3)(2003), 862870。gydF4y2Ba
3.Basch, J. gu, L. J. Hershberger, J.移动数据的数据结构。gydF4y2Baj .算法31gydF4y2Ba(1999), 128。gydF4y2Ba
4.布里森,R, Fedkiw, R,安德森,J.布动画的碰撞、接触和摩擦的鲁棒处理。在gydF4y2BaSIGGRAPH 02gydF4y2Ba(2002), 594603。gydF4y2Ba
5.Cirak, F., West, M.基于分解的接触响应(DCR)的显式有限元动力学。gydF4y2BaInt。j .号码。Eng方法。, 64年gydF4y2Ba(8)(2005), 10781110。gydF4y2Ba
6.Erickson, J., gu, L. J., Stolfi, J., Zhang, L.凸物体分离敏感碰撞检测。在gydF4y2Ba第10届ACM-SIAM离散算法研讨会论文集gydF4y2Ba(1999), 102111。gydF4y2Ba
7.Ericson C。gydF4y2Ba实时碰撞检测(Morgan Kaufmann交互式3D技术系列)gydF4y2Ba.摩根·考夫曼,2004年12月。gydF4y2Ba
8.方文华,刘文华,刘文华。异步变分积分器的稳定性。gydF4y2Baj .第一版。理论物理。, 227年gydF4y2Ba(18)(2008), 83678394。gydF4y2Ba
9.高军,古伯斯,李军,张林,朱军。离散移动中心。gydF4y2Ba离散的第一版。30几何学。gydF4y2Ba(1): 4565, 2003。gydF4y2Ba
10.格林斯潘,E., Hirani, A., Desbrun, M., Schröder, P.离散壳。在gydF4y2Ba计算机动画ACM SIGGRAPH/欧洲图形研讨会gydF4y2Ba(2003年8月),6267年。gydF4y2Ba
11.谢芳,张磊,古士伯。动力学碰撞检测算法与实验。在gydF4y2Ba机器人与自动化国际会议论文集gydF4y2Ba(2001), 29032910。gydF4y2Ba
12.古伯斯,l。j。动力学数据结构是最先进的报告。在gydF4y2Ba第三届机器人算法基础研讨会论文集(WAFR)gydF4y2Ba(1998), 191209。gydF4y2Ba
13.谢芳,张磊。动力学碰撞检测算法与实验。在gydF4y2BaICRAgydF4y2Ba(2001), 29032910。gydF4y2Bahttp://www.cs.columbia.edu/cg/ACM/gydF4y2Ba
14.海勒,E,吕比奇,C,瓦纳,G。gydF4y2Ba几何数值积分:常微分方程的保结构算法gydF4y2Ba.施普林格,2002年。gydF4y2Ba
15.科尔尼耶夫(V.);基谢列夫(A.)gydF4y2Ba现代微处理器gydF4y2Ba.查尔斯河传媒,2004年。gydF4y2Ba
16.卢,马斯登,j.e,奥尔蒂斯,M,韦斯特,M.异步变分积分器。gydF4y2Ba拱门。合理的机械。167年肛门。gydF4y2Ba(2003), 85146。gydF4y2Ba
17.马斯登,Patrick, G. Shkoller, S.多辛几何,变分积分器和非线性偏微分方程。gydF4y2BaCommun。数学。phy。199gydF4y2Ba(2)(1998), 351395。gydF4y2Ba
18.马斯登,裴卡斯基,史科勒,韦斯特,M.变分方法,多辛几何和连续介质力学。gydF4y2Baj .几何学。理论物理38gydF4y2Ba(34)(2001年6月),253284。gydF4y2Ba
19.米伦科维奇,V. J.施密特,H.基于优化的动画。在gydF4y2BaSIGGRAPH'01:第28届计算机图形和交互技术年会论文集gydF4y2Ba(2001), ACM,纽约,纽约,美国,3746。gydF4y2Ba
20.Provot, X.专门设计服装的布料模型的碰撞和自碰撞处理。在gydF4y2Ba计算机动画和模拟,1997gydF4y2Ba(1997), Verlag, Wien, 177189。gydF4y2Ba
21.通过交叉轮廓最小化来解决表面碰撞。在gydF4y2Ba标志'06:ACM标志2006论文gydF4y2Ba(2006), ACM,纽约,纽约,美国,11541159。gydF4y2Ba
22.威勒,R.和扎克曼,G.用于可变形物体连续碰撞检测的动力学分离列表。在gydF4y2Ba第三届虚拟现实交互与物理模拟研讨会(Vriphys)gydF4y2Ba(2006年11月67日,西班牙马德里)。gydF4y2Ba
一个。gydF4y2Bahttp://www.cs.columbia.edu/cg/ACMgydF4y2Ba
这篇论文的原始版本发表在gydF4y2BaSIGGRAPH '09会议记录gydF4y2Ba, 2009年7月,ACM。gydF4y2Ba
图1。一个指定的粒子缓慢地穿过一组帘子,然后冲动地转移到一个非常高的速度。慢速阶段和快速阶段突出了该方法处理平滑静止和深度叠加滑动的能力,以及任意快速无穿透移动的能力,在碰撞发生时(而不是在碰撞发生之前或之后很久)处理碰撞。窗帘持续摆动很长一段时间,甚至当被控制的内部耗散阻尼高频率时。gydF4y2Ba
图2。帷幕模拟中的异步,通过顶点时间步长的时间演化分布来描述,使计算资源能够在时空中自适应分配。gydF4y2Ba
图3。分段线性轨迹,中间步动量gydF4y2Ba携带位置from.qgydF4y2Ba我gydF4y2Ba要问gydF4y2Ba我gydF4y2Ba+1gydF4y2Ba.gydF4y2Ba
图4。gydF4y2Ba离散点球层gydF4y2Ba.层势能gydF4y2BangydF4y2Ba策划反对接近。gydF4y2Ba插图:gydF4y2Ba各层贡献的总势能”gydF4y2BangydF4y2Ba.势能发散为gydF4y2BaxgydF4y2Ba一个gydF4y2Ba方法gydF4y2BaxgydF4y2BabgydF4y2Ba,保证约束实施是健壮的。gydF4y2Ba
图5。力的评估(虚线)必须在时间上均匀间隔,但只有那些潜力非零(蓝色区域)必须明确评估。gydF4y2Ba
图6。这个说教性的例子展示了一个粒子落向固定的地板。队列显示了事件的处理顺序:重力将粒子向下拉(a)(b),证书产生惩罚力(c),惩罚力抵消穿透力(d)(e)。gydF4y2Ba
图7。描述事件(框)、顶点(点)和依赖关系(有向边)的有向图。集成事件(左绿色方框)改变顶点轨迹,强制由于证书失败(右橙色方框)而重新调度依赖事件。(a)如果集成事件有一个大的模板,我们存储事件依赖。(b)如果一个顶点属于多个模板和支持关系,我们存储eventvertexevent依赖关系。gydF4y2Ba
图11。用一层钉子做的实验突出了该方法处理尖锐边界、孤立接触点、条子三角形和两个几乎相交表面之间的局部高压点的能力。gydF4y2Ba
©2012 acm 0001-0782/12/0400 $10.00gydF4y2Ba
允许为个人或课堂使用部分或全部作品制作数字或硬拷贝,但不得为盈利或商业利益而复制或分发,且副本在首页上附有本通知和完整的引用。除ACM外,本作品的其他组件的版权必须受到尊重。允许有信用的文摘。以其他方式复制、重新发布、在服务器上发布或重新分发到列表,都需要事先获得特定的许可和/或费用。请求发布的权限gydF4y2Bapermissions@acm.orggydF4y2Ba传真(212)869-0481。gydF4y2Ba
数字图书馆是由计算机协会出版的。版权所有©2012 ACM, Inc.gydF4y2Ba
没有发现记录gydF4y2Ba