📌 Film:24fps,video: 30 fps, VR: 90fps,否则会晕
📌 前面动画基础部分和关键帧部分跳过了。直接进入物理仿真[21:10]
物理仿真:Physical Simulation 通过推导或实现物理公式,来计算出物体的形状和位置的变化。
质点弹簧系统 Mass Spring System
Mass:质点, Sping:弹簧
MSS可以用于模拟绳子、头发、布料。
A simple Spring
fa→b=ks(b−a)
fa→b代表弹簧应用在a上,使得a受到的往 b 方向去的力。
假设rest length = 0,a和b之间只要有距离就会有力。
ks为弹簧系数。
胡克定律:
fb→a=−fa→b
Non-zero Length Spring
fa→b=ksb−a||b−a||(||b−a||−l)
说明:
b−a||b−a||:归一化之后的受力方向。
||b−a||−l:弹簧受力的大小,与长度有关。
l:rest length,弹簧长度为l时不受力,与方向无关
公式中没有提到摩擦力。没有摩擦力的弹簧会永远震荡下去。
有摩擦力的弹簧
✅ 符号:
x:位置
˙x:速度
¨x:加速度
简单的摩擦力定义
摩擦力的大小与方向都与弹簧的速度相反。
fb=−kd˙b
💡 摩擦力是由于物理微表面的不平整引起的,但这样很难模拟。是否可以参考微表面模型的统计方法来建模?
这种方式只能描述来自外部的摩擦力,不能描述来自弹簧内部的损耗。
更合理的摩擦力定义
fb=−kd(b−a||b−a||⋅(˙b−˙a))b−a||b−a||
说明:
fb:摩擦力。可将弹簧恢复到正常长度。
第一项kd:弹性系数
第二项b−a||b−a||⋅(˙b−˙a):在弹簧力的方向上的速度分量的大小。与a和b的相对速度有关。在特定方向上的相对速度的大小,向量点乘,得到的是一个标量。
第三项b−a||b−a||:力的方向与b和a的相对位置,并做了归一化。
❓ 为什么是b相对a的速度而不是相对运动表面的速度?
摩擦力与弹簧本身长度没有关系。
多个弹簧的组合
Sheets 用于布料
增加用于抵抗切变的力:
局限性:各项异性,且不能对抗弯折
增加用于对抗弯折的力:
💡 我的想法:可以增加质点对抗旋转的力
有限元方法 Finite Element Method
用于模拟汽车碰撞,考虑碰撞体内力的传导。
本文出自CaterpillarStudyGroup,转载请注明出处。
https://caterpillarstudygroup.github.io/GAMES101_mdbook/