【文献导读】XPBD: Position-Based Simulation of Compliant Constrained Dynamics
作者:Miles Macklin & Matthias Muller
单位:NVIDIA
时间:2016
前言
本文要解决的主要问题是PBD中的刚度系数的迭代次数依赖问题。具体来说,仿真效果依赖于时间步长,或者说迭代次数。这会在以下两个方面造成问题:
- 参数(也就是刚度系数)与迭代次数有关。而且刚度系数是全局的,假如场景内同时出现多种材料(比如刚体和软体混合),就很难调整参数。
- 迭代次数的影响是非线性的,很难去手动调整参数。(迪士尼定律:参数与最终效果最好成线性关系,以利于艺术家去调整)
为了解决该问题,本文提出了一种新的约束公式。该约束公式与弹性势能的概念对应。公式的推导基于隐式时间积分和总拉格朗日乘数。
背景
让我们先回顾一下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λij。这是一个标量,需要在迭代循环中也一起存储并且更新。这就是XPBD的额外开销。我们看算法流程中的步骤9就是更新λij\lambda_ijλij。它代表的是总拉格朗日乘数法中的乘数。下标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相关推荐
- 惊涛怪浪(double dam-break) -- position based fluids
切入正题之前,先胡说八道几句. 据说爱因斯坦讲过:关于这个世界最难以理解的就是它是可以被理解的.人类在很长的时间里,都无法认知周围变幻莫测的世界,只能编造出无数的神祗来掌控世上万物的运行.到了 ...
- 无线通信经典文献导读
无线通信经典文献导读1:Enhancing the Physical Layer Security of Non-Orthogonal Multiple Access in Large-Scale N ...
- SPH(光滑粒子流体动力学)流体模拟实现六:Position Based Fluid(PBF)
SPH(光滑粒子流体动力学)流体模拟实现六:Position Based Fluid(PBF) PBF方法和前篇提到的PCISPH方法类似,都属于迭代矫正法.PCISPH是通过迭代预测压力,通过压力变 ...
- position based dynamics
应读者需求,今天终于抽出时间把这篇文章整理一下,不过只把其中的一些公式进行了推导,如果需要细看,仍需阅读论文 Position Based Dynamics文章来源 首先对比一下PDF与FEM之间的关 ...
- 文献笔记 —— GIDS: GAN based Intrusion Detection System for In-Vehicle Network
文献笔记 -- GIDS: GAN based Intrusion Detection System for In-Vehicle Network(GIDS: 基于GAN的车载网络入侵检测系统) 这篇 ...
- 文献解读-CVPR2019-Stereo R-CNN based 3D Object Detection for Autonomous Driving
小菜鸡最近跟着大佬们学看文献,那就适当地记录一下,当作自己的学习笔记吧.文中也有很多理解不到位的地方的,毕竟还只是个小菜鸟,不懂的地方多得是.所以哪里有问题的还请各位读者好好指点指点. 今天要介绍的论 ...
- 影像组学视频学习笔记(24)-文献导读:了解88种降维、分类器组合、Li‘s have a solution and plan.
本笔记来源于B站Up主: 有Li 的影像组学系列教学视频 本节(24)主要讲解: 解读一篇文献,了解不同的降维.分类器组合方法 这篇文献2018年发表在European Radiology上: Rad ...
- 文献记录(part13)--Hypergraph based geometric biclustering algorithm
学习笔记,仅供参考,有错必纠 关键词:双聚类:霍夫变换:超图划分:基因芯片数据分析 文章目录 Hypergraph based geometric biclustering algorithm 摘要 ...
- 文献学习(part16)--Oracle Based Active Set Algorithm for Scalable Elastic Net Subspace Clustering
学习笔记,仅供参考,有错必纠 文章目录 Oracle Based Active Set Algorithm for Scalable Elastic Net Subspace Clustering A ...
最新文章
- 硬核干货:一位码农的架构师封神之路!
- 孕期骨质疏松危害大 及时补钙很重要
- TNS-04404 dbca
- 【转载】SAP表修改概览
- 梳理各算法基础应用及场景
- 贪心只能过样例 loj515
- bigdecimal 小于等于0_半场0-0比分的比赛,你需要注意这些
- WCF发布到IIS 7.0,并以https访问
- java方法语法_Java基础语法----方法
- DataFrame列转json以及json转DataFrame列
- python从入门到精通 明日科技 电子书-Python从入门到精通(明日科技出版) 源代码+课件+视频 全套...
- 大学生涯规划800字计算机,我的大学生活规划(我的大学生活规划800字作文)
- 项目配置管理CM(Configuration Management)
- operator new与placement new
- jquery 将下拉框重置_select下拉框之默认选项清空
- 女人最不动声色的诱惑招数
- c语言开发一个学生成绩统计程序,用C语言实现成绩统计程序的设计课程设计报告.doc...
- 12306排队是什么意思_12306订单请求排队中是什么意思 要等多久
- scrapy框架之分布式爬虫
- C陷阱与缺陷(C Traps and Pitfalls)学习笔记