unity给头发添加物理_基于PBD算法的布料和头发的实时模拟(Unity Demo)

  • 什么是PBD算法

PBD算法的全称是Position-Base-Dynamic,顾名思义,它是一种计算机视觉方面的动态模拟算法,主要用于各种需要实时模拟的场景。相比起过去的基于真实物理规则的模拟来说,PBD算法具有这样的特征:

1、 直接基于位置而非受力情况来计算位置。计算的结果虽然并不是完全真实的物理模拟,但是可信度很高。

2、 性能更好,而且性能消耗的力度可控,可以根据实际应用中对真实性的需求强度来决定计算量。

3、 实时计算,动态模拟。

从这两个特征看出,PBD算法最适合的就是游戏、电影、VR之类的场景,不需要百分之百的完全真实,而是“看起来像”就可以了。由于PBD算法是一种实时模拟,尤其受到游戏行业的青睐。事实上,目前PBD算法在游戏领域也已经得到了广泛的应用,NVIDIA的Flex引擎包、网易的一些游戏都已经在使用该算法,有兴趣的同学可以自行查阅相关资料。相关背景就不再多做介绍,下面我们来直接进入算法环节。

  • 算法流程

在计算机领域,很多惊艳算法的核心流程都称得上是微言大义,并不冗长,例如蒙特卡洛算法、牛顿迭代法等。PBD算法的流程也十分精炼,一张图搞定:

b6436db62d458a37976cd6359ba6cb0a.png

算法的原理涉及到很多数学知识,不在这里赘述,数学好的同学可以参阅下面的论文:

https://matthias-research.github.io/pages/publications/posBasedDyn.pdf​matthias-research.github.io

在本文中,我们重点只说明一下这个算法是怎么用的。

首先,在算法的前三行,我们把想要模拟的复杂系统,例如流体、布料、头发等,拆解成一个个质点,质点拆解得越多,消耗的性能就越多,效果也就越逼真,大家可以根据自身的实际需求来进行拆解。x指的是质点i的位置,v指的是质点的初速度,m是质点的质量(并不一定是真实质量,

  • 3
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值