物理模拟技术
- 刚体动力学模拟
- 平移、旋转及碰撞等
- 柔体动力学模拟
- 柔软的有机材料的直观可信的仿真
- 流体动力学模拟
- 碰撞侦测
物理动画关键因素
- 根据已知物理运动规律来模拟物体运动
- 动画制作更注重运动的整体质量,不涉及物体的位置和方向的精准控制
- 可信度胜过精准度
运动学模拟
基于牛顿运动三大定律(但是不用解析法求解物体任意时刻的状态)
采用欧拉方法作数值积分求解任意时刻t的状态
记位置矢量
p
(
t
)
p(t)
p(t),速度矢量
v
(
t
)
v(t)
v(t),加速度矢量
a
(
t
)
a(t)
a(t),其中
lim
Δ
t
→
0
p
(
t
+
Δ
t
)
−
p
(
t
)
Δ
t
=
v
(
t
)
lim
Δ
t
→
0
v
(
t
+
Δ
t
)
−
v
(
t
)
Δ
t
=
a
(
t
)
当
Δ
t
取
很
小
值
,
则
有
:
p
(
t
+
Δ
t
)
≈
p
(
t
)
+
v
(
t
)
Δ
t
v
(
t
+
Δ
t
)
≈
v
(
t
)
+
a
(
t
)
Δ
t
\lim_{\Delta t \rightarrow 0} \frac{p(t+\Delta t)-p(t)}{\Delta t} = v(t)\\ \lim_{\Delta t \rightarrow 0} \frac{v(t+\Delta t)-v(t)}{\Delta t} = a(t)\\ 当\Delta t取很小值,则有:\\ p(t+\Delta t) \approx p(t) + v(t)\Delta t\\ v(t+\Delta t) \approx v(t) + a(t)\Delta t
Δt→0limΔtp(t+Δt)−p(t)=v(t)Δt→0limΔtv(t+Δt)−v(t)=a(t)当Δt取很小值,则有:p(t+Δt)≈p(t)+v(t)Δtv(t+Δt)≈v(t)+a(t)Δt
基本步骤
- 获取(初始)状态信息
- 绘制(需清楚之前绘制的结果)
- 更新状态信息
运动模糊
运动模糊又叫动态模糊,用来表现场景中物体的移动效果非实时渲染
优点:使得运动变得更加平滑,场景更逼真
实现
- 保留每帧绘图结果
- 每帧画一个半透明的黑色长方形,将前面绘制的结果变暗
粒子系统
大量微小物质组成的系统,这些微小的物质按一定的规则运动(变化)
粒子特点
- 粒子的运动状态
- 粒子独立,一般不考虑相互影响,考虑与环境的影响
- 粒子有生命周期,生命结束后消失
- 粒子形状可以是任意形状
- 粒子若处于聚集状态,粒子不向其他粒子的投射阴影,不考虑反射光,只考虑对环境的投射阴影
基本属性
- 运动属性
- 位置
- 速度
- 加速度
- 生命
- 衰减速度
- 颜色
- 大小
基本思想
- 许多简单形状的粒子聚集起来形成一个模糊物体
- 粒子的生命周期内控制他们的产生,运动,变化和消失
程序架构
- 初始化
- 更新粒子系统状态(生命与运动状态)
- 绘制粒子
渲染效果
粒子与环境交互
- 简单碰撞——完全弹性碰撞
纹理效果
纹理贴图(Texture Map)的范围是[0.0,1.0],通过投影映射到几何物体上
形状
- 正方形——两个三角形
运动模糊(见物理模拟技术)
粒子生成
粒子数=
n
=
m
+
v
×
R
a
n
d
(
)
n=m+v \times Rand()
n=m+v×Rand()
其中
m
m
m为平均粒子数,
v
v
v为方差
粒子上的力
- 一元力:重力、粘性阻力
- 偶力:可表示弹簧阻尼器
- 环境力:根据粒子与环境的关系来得到
绘制
- 点光源:小图元+颜色相加
- 布告板:纹理多边形面向视点
- 元球:可用于模拟水等液态效果
- 隐式曲面:具有等势场的点集来定义曲面
- Alpha Blending
- snowflakes
碰撞检测
响应
把模拟回退到接触点,修改粒子的位置和速度
v
n
e
w
=
−
ε
v
n
+
v
t
v_{new}=-\varepsilon v_n+v_t
vnew=−εvn+vt,其中
ε
是
回
弹
系
数
\varepsilon是回弹系数
ε是回弹系数
弹性
弹性网络
弹簧- 质量模型:质点+连接(边)
改进
弹簧-质量-阻尼系统:以免一直晃动