PBD(基于位置动力学)算法的程序开发

研究背景

PBD(Position based dynamics)是一种快速、稳定、可控的数值模拟技术,该方法直接操作物体节点位置,通过力与运动约束关系,更新节点位置,避免了传统基于牛顿第二定律的高精度迭代计算。

 

PBD方法是一种基于几何的方法,和有限元方法与无网格方法相比计算量更小,和质点弹簧方法相比,提供了更好的稳定性,并且可以直接控制模型的位置。虽然它的计算精度没有上述方法高,但是提供了视觉合理、快速定性计算的途径,在计算动画领域获得应用。该方法结合具体力学问题,针对定性计算需求可以构建快速的仿真场景。

算法简介

PBD的它的求解过程是:

  1. 初始化三维物体的质量、速度和位置,然后通过一个简单的显式欧拉积分步骤计算出三维物体中每个质点的预测位置。

  2. 针对上述预测位置,根据约束函数梯度等信息将每个点投影到合适的位置。

算例

SiPESC课题组开展PBD的学习与程序开发,初步实现典型算例求解。

1、布料模拟

通过添加拉伸约束和弯曲约束对布料进行模拟。

A. 布四角固定在重力作用下的运动

PBD(基于位置动力学)算法的程序开发的图1
PBD(基于位置动力学)算法的程序开发的图2

B. 布上边缘固定在重物拉扯下撕裂

PBD(基于位置动力学)算法的程序开发的图3
PBD(基于位置动力学)算法的程序开发的图4

C. 布自由落体时与物体碰撞(没有考虑碰撞检测和摩擦因素)

PBD(基于位置动力学)算法的程序开发的图5
PBD(基于位置动力学)算法的程序开发的图6

上述动画均属于实时演示。

2、刚体模拟

同时我们结合AABB层次包围盒碰撞检测方法利用PBD方法对刚体进行了模拟。如下图,左边是一个刚体做自由落体运动掉落在另一个刚体上,右图是一个刚体在弹簧的作用下与比自己质量大的刚体进行碰撞。

PBD(基于位置动力学)算法的程序开发的图7
PBD(基于位置动力学)算法的程序开发的图8

另外,它也可以基于SPH方法对流体进行仿真模拟。目前我们的研究阶段主要是利用PBD方法对流体和柔性体耦合进行模拟,计划开展软体机器人的仿真研究。

特别鸣谢:

感谢SiPESC软件所李娜对PBD算法所做的研究工作。

来源: SiPESC 公众号

登录后免费查看全文
立即登录
App下载
技术邻APP
工程师必备
  • 项目客服
  • 培训客服
  • 平台客服

TOP