计算机图形学入门GAMES103——布料模拟约束(PD方法)

由于PBD的方法是直接根据约束来调整顶点的位置,本身并不具有太多的物理含义,因此如何使用不同的方式来利用约束是今天人们一直在研究的方向

PD模型(projective Dynamics)该模型和PBD有很多的相似之处,但区别也很明显,主要体现在,我们用约束做什么

PBD模型的主要优势在于内存开销少,因为只需要访问顶点的位置

PD模型的主要优势在于具有物理含义,在cpu上速度比较快,但在GPU上优势不大

PDB——直接通过约束来修改位置

PD——使用约束重新构造一个新的能量函数

如上图所示,对每一个边来说,也就是spring来说,我们通过约束得到新的位置,不直接使用,而是将其用来构造一个能量函数,由于新的位置差值肯定为原长(约束),方向肯定为边的方向,最后我们可以得到的是一个近似于弹簧的能量方程,也就是我们将新的位置这个变量作为了能量函数的一个中间结果,我们也就拥有了能量对x的一个二阶函数,根据这个能量求导我就能算出来力fi(其中有一个假设是新的位置x_i^new和x_i没有关系)

可以得出:

与上面的结论类似,最后也是和弹簧的力方程是一致的,也就是说我们所做了这么多的东西,最后其实和我们使用物理的方法模拟弹簧是一样的,我们所做的无非是在其中加入了一个中间变量,也就是通过约束算出的新的顶点位置,然后用这个顶点位置来构造了能量和力,那么这么做的意义在哪?

主要的目的在于我们会得出不同的Hessian矩阵:

回顾:Hessian矩阵,所谓的Hessian矩阵是是一个多变量函数的二阶偏导数构成的方阵。对于一个有n个变量的函数f(x1​,x2​,…,xn​),它的Hessian矩阵定义为:

一般来说在物理模拟中,这个函数就是能量函数,也就是说hessian矩阵式是能量函数对多个顶点的二阶偏导数构成的矩阵

作用举例:

  1. 稳定性分析:通过分析Hessian矩阵的特征值,我们可以判断系统的稳定性。如果所有特征值都是正的,那么该点是局部最小点,系统在这个配置下是稳定的

  2. 模拟精确度:在迭代优化或时间积分过程中,Hessian矩阵可以帮助我们更精确地预测系统的行为。这在处理复杂的动态场景时尤其重要

  3. 速度和效率:虽然计算Hessian矩阵可能较为复杂和耗时,但它可以提供关于如何有效调整参数(比如弹簧的刚度或阻尼)的重要信息,从而优化整个系统的性能

对于PD模型就有

其中最后我们所得出的hessian矩阵为一个常数矩阵,这就是该方法的关键 

该方法的模拟方式和传统的使用隐式积分的方法类似(牛顿法),无非是多了一步用于计算投影,当我们拥有常数的hessian矩阵的时候,我们就可以使用直接法,因为只需要对A分解一次

与原弹簧系统的方法比较,传统方法需要计算真正的Hessian矩阵,需要使用到位置

  • 5
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值