游戏物理之布料模拟

基于动画的布料模拟

在布料中埋几根骨骼,由动画驱动,角色移动时通过插值;

在移动端游戏中较为泛用;

基于RigidBody的布料模拟

通过几根动力学骨骼实现;

基于Mesh-based的布料模拟

不同于渲染Mesh,一般布料模拟会另外做一个PhysicalMesh,密度更低;

为了不让如风一吹整个布料就飞了一类情况出现,一般会给每个部分加上权重,通常越靠近身体(固定点)的部分权重越低,如披风的根部活动范围就比较小;

布料怎么模拟?

弹簧质点模型

构建弹簧系统

按照不同材质的布料,弹簧的疏密程度也会不一样;一般对于比较硬的布料。会给予更多的bend。

本质上,构建布料的弹簧系统是一个经验工作;

弹簧点的受力

对于图中红色的点,受到的力有:

  1. 重力
  2. 风力
  3. 空气阻力:通常简单模拟成线性
  4. 弹力与弹力damping(阻尼)

拉格朗日数学

拉格朗日数学把所有的力学关系描述成了一堆数学约束,认为所有的力学过程必须符合约束,直接通过约束(Constraint)解出位置,而不关心速度;

好处:

  1. 可以处理更复杂的情况
  2. 更快

自穿插(Self Collision)

多层布料模拟时可能会出现穿插

解决方法:

  1. 把物理模拟模型加厚,即便穿透了也不够深就不那么明显(土嗨方法)
  1. 把物理仿真的步伐变得更细,拆成多个sub step,保证在解的时候不会过深地穿过布料;
  1. Enforce maximal velocity:添加反向力场,在布料穿过的时候强行弹回来;
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇