作者:Miles Macklin & Matthias Muller
单位:NVIDIA
时间:2016

前言

本文要解决的主要问题是PBD中的刚度系数的迭代次数依赖问题。具体来说,仿真效果依赖于时间步长,或者说迭代次数。这会在以下两个方面造成问题:

  1. 参数(也就是刚度系数)与迭代次数有关。而且刚度系数是全局的,假如场景内同时出现多种材料(比如刚体和软体混合),就很难调整参数。
  2. 迭代次数的影响是非线性的,很难去手动调整参数。(迪士尼定律:参数与最终效果最好成线性关系,以利于艺术家去调整)

为了解决该问题,本文提出了一种新的约束公式。该约束公式与弹性势能的概念对应。公式的推导基于隐式时间积分和总拉格朗日乘数。

背景

让我们先回顾一下PBD:
PBD针对每个粒子,移动其位置以满足粒子间约束。下面的施公式给出了每个粒子应该移动的方向和距离。这有些类似梯度下降法。移动的方向为约束的梯度方向

而其中s控制了应该移动的步长

除了s以外,k是刚度系数,为用户给定的参数,M则是粒子质量所决定的一个系数。k在0到1之间取值。

下标i代表第i次迭代,j代表第j个约束。这个公式对每个粒子都成立,所以我们就不标注粒子的下标了。

关键问题就在于这个kj。我们看到k具有下标j。这代表它和迭代次数是有关的。但是用户控制的参数与迭代次数有关,这就造成了很难给定合适的参数。

XPBD正是为此而提出的新算法。它的算法流程如下:

公式(17)为

公式(18)为

我们对比PBD,发现其算法只是在一个方面进行了修改:也就是公式(18)。这就是XPBD的核心所在。

刚度系数k不见了,取而代之的是新的系数αj~\tilde{\alpha_j}αj​~​。

这个新的系数αj~\tilde{\alpha_j}αj​~​是融入到之前的缩放因子s当中的。

很显然,当αj~=0\tilde{\alpha_j}=0αj​~​=0的时候,XPBD的公式18就退化回了PBD的s公式。

这个αj~\tilde{\alpha_j}αj​~​叫做柔度系数。它实际上就是刚度系数的倒数(注意是整个矩阵的倒数,也就是矩阵的逆,不是单个值取倒数)。它和刚度系数一样,代表约束的强弱。如果是柔度为0,代表约束必须被满足。而柔度大则代表这个约束比较弱。

除了αj~=0\tilde{\alpha_j}=0αj​~​=0以外,我们还发现公式(18)中有一个新的变量λij\lambda_ijλi​j。这是一个标量,需要在迭代循环中也一起存储并且更新。这就是XPBD的额外开销。我们看算法流程中的步骤9就是更新λij\lambda_ijλi​j。它代表的是总拉格朗日乘数法中的乘数。下标ij代表它对应第i次迭代的第j个约束。

结果

1 简单谐振

首先对比精确解与数值解以衡量该方法的精度。

下图展示的是不同迭代次数的PBD方法与XPBD方法与精确解的对比。

所模拟的是弹簧的简单谐振运动。只使用了距离约束。静息距离为x=1,初始距离x0=1.5,质量mass=1,柔度alpha设为0.001。

显然XPBD的结果(绿色曲线)和精确解(蓝色曲线)吻合得很好。而PBD吻合较差。无论XPBD所采用的迭代次数是多少,结果总是这样的。而PBD结果则显然与迭代次数有关。

2 铰链

本算例用于与牛顿求解器进行对比。

用20个粒子组成一个铰链。然后令它自由下落。下图是不同时刻的铰链位置图(所有时刻都被画出来了)。左图是牛顿求解器,右图是XPBD。 mass=1.0, α=10−8\alpha=10^{-8}α=10−8 XPBD迭代次数50

下图是铰链顶部粒子所受约束力的曲线对比图。横坐标为帧数。

3 悬臂梁

此算例与FEM进行对比。

为了与FEM进行对比,首先要把不同的参数进行统一。于是定义柔度矩阵为刚度矩阵的逆。其中lambda和mu是两个拉梅参数

FEM采用Saint Venant-Kirchoff公式。杨氏模量E取10510^5105,泊松比0.3,时间步长0.008s。仍然采用第50帧结果。XPBD迭代次数50。

从视觉效果上几乎无差别。左图为FEM。右图为XPBD,迭代次数20。仿真结果为第50帧。


下图曲线对比的是悬臂梁例子FEM(牛顿求解器)与XPBD的约束h^2的曲线。

布料

下图为PBD(上排)与XPBD(下排)对比。从左到右迭代次数依次为20 40 80 160。

该布料采用64x64个粒子。约束共计24K个,均为距离约束。

PBD刚度系数为0.01。可以认为alpha=0的情况对应k=1的情况。

上图中PBD结果会随着迭代次数增加而变硬阻尼变大,但XPBD不受影响。

实验还对比了两者的耗时。对比发现XPBD只比PBD慢了不到2%。其主要效果在于仿真效果不受迭代次数的影响。

气球

气球内部采用体积约束,外部类似于可拉伸、弯曲、剪切的布料。
下图为XPBD效果

【文献导读】XPBD: Position-Based Simulation of Compliant Constrained Dynamics相关推荐

  1. 惊涛怪浪(double dam-break) -- position based fluids

    切入正题之前,先胡说八道几句.     据说爱因斯坦讲过:关于这个世界最难以理解的就是它是可以被理解的.人类在很长的时间里,都无法认知周围变幻莫测的世界,只能编造出无数的神祗来掌控世上万物的运行.到了 ...

  2. 无线通信经典文献导读

    无线通信经典文献导读1:Enhancing the Physical Layer Security of Non-Orthogonal Multiple Access in Large-Scale N ...

  3. SPH(光滑粒子流体动力学)流体模拟实现六:Position Based Fluid(PBF)

    SPH(光滑粒子流体动力学)流体模拟实现六:Position Based Fluid(PBF) PBF方法和前篇提到的PCISPH方法类似,都属于迭代矫正法.PCISPH是通过迭代预测压力,通过压力变 ...

  4. position based dynamics

    应读者需求,今天终于抽出时间把这篇文章整理一下,不过只把其中的一些公式进行了推导,如果需要细看,仍需阅读论文 Position Based Dynamics文章来源 首先对比一下PDF与FEM之间的关 ...

  5. 文献笔记 —— GIDS: GAN based Intrusion Detection System for In-Vehicle Network

    文献笔记 -- GIDS: GAN based Intrusion Detection System for In-Vehicle Network(GIDS: 基于GAN的车载网络入侵检测系统) 这篇 ...

  6. 文献解读-CVPR2019-Stereo R-CNN based 3D Object Detection for Autonomous Driving

    小菜鸡最近跟着大佬们学看文献,那就适当地记录一下,当作自己的学习笔记吧.文中也有很多理解不到位的地方的,毕竟还只是个小菜鸟,不懂的地方多得是.所以哪里有问题的还请各位读者好好指点指点. 今天要介绍的论 ...

  7. 影像组学视频学习笔记(24)-文献导读:了解88种降维、分类器组合、Li‘s have a solution and plan.

    本笔记来源于B站Up主: 有Li 的影像组学系列教学视频 本节(24)主要讲解: 解读一篇文献,了解不同的降维.分类器组合方法 这篇文献2018年发表在European Radiology上: Rad ...

  8. 文献记录(part13)--Hypergraph based geometric biclustering algorithm

    学习笔记,仅供参考,有错必纠 关键词:双聚类:霍夫变换:超图划分:基因芯片数据分析 文章目录 Hypergraph based geometric biclustering algorithm 摘要 ...

  9. 文献学习(part16)--Oracle Based Active Set Algorithm for Scalable Elastic Net Subspace Clustering

    学习笔记,仅供参考,有错必纠 文章目录 Oracle Based Active Set Algorithm for Scalable Elastic Net Subspace Clustering A ...

最新文章

  1. 硬核干货:一位码农的架构师封神之路!
  2. 孕期骨质疏松危害大 及时补钙很重要
  3. TNS-04404 dbca
  4. 【转载】SAP表修改概览
  5. 梳理各算法基础应用及场景
  6. 贪心只能过样例 loj515
  7. bigdecimal 小于等于0_半场0-0比分的比赛,你需要注意这些
  8. WCF发布到IIS 7.0,并以https访问
  9. java方法语法_Java基础语法----方法
  10. DataFrame列转json以及json转DataFrame列
  11. python从入门到精通 明日科技 电子书-Python从入门到精通(明日科技出版) 源代码+课件+视频 全套...
  12. 大学生涯规划800字计算机,我的大学生活规划(我的大学生活规划800字作文)
  13. 项目配置管理CM(Configuration Management)
  14. operator new与placement new
  15. jquery 将下拉框重置_select下拉框之默认选项清空
  16. 女人最不动声色的诱惑招数
  17. c语言开发一个学生成绩统计程序,用C语言实现成绩统计程序的设计课程设计报告.doc...
  18. 12306排队是什么意思_12306订单请求排队中是什么意思 要等多久
  19. scrapy框架之分布式爬虫
  20. C陷阱与缺陷(C Traps and Pitfalls)学习笔记

热门文章

  1. xlsx 导出 多级表头数据
  2. SpringBoot项目MybatisPlus中时间的自动填充
  3. 安全开发--3--Python实现ARP缓存投毒
  4. 聊聊Java8之后的JDK升级内容(看这一篇就够了)
  5. 光速不变原理与狭义相对论的关系——思想实验推导狭义相对论(一)
  6. 《高效能人士的七个习惯》读书笔记
  7. 如何高效地引导自己的行为
  8. webshell木马文件如何彻底清除
  9. TopOpt | 针对99行改进的88行拓扑优化程序完全注释
  10. SmartNavigation苗条版ClientNavigation增肥