本文以GAMES103课程为始,围绕图形学物理仿真话题,根据自己的理解重新排版、增删。如有侵权,请联系删除。
仿真是指,根据仿真代理在当前时刻的力计算下一时刻仿真代理的状态。 把仿真的对象抽象成不同的代理,可以得到不同的仿真效果。不同的仿真代理,其状态特点、受力响应、擅长场景都各不相同。因此本文根据仿真代理来划分章节。对每一种仿真对象,分析
✅ 这里涉及到时间步的概念。仿真的帧率不需要与渲染的帧率保持一致。通常一个渲染step会包含多个仿真step。
- 属性,包含固有属性、需要仿真的状态、可能产生的内力
- 对象在力的作用下如何响应,即更新状态
- 这种仿真对象的使用场景

✅ Fracture 有大量的 remesh。游戏引擎中的 Fracture 通常通过预计算而不是模拟得到。
✅ 流体的形态很多,例如水滴、水花、水浪,对应的模拟方法也不同。难以用通用的方法高效地模拟所有场景。
✅ 流体、烟通常使用粒子法或网格法。水波可以看作是整体,因此能用 mesh,用 mesh的好处是可以做到实时,Grid 的好处是更真实。Splashes(水花)的问题是多变,因此不能实时,通常使用粒子和网格。
✅ Hybrid 方法:MPM = Particle + Grid,兼容二者优点,常用于模拟雪或粘滞物体
✅ SPA 与弹性体模拟结合,可用于模拟物体破碎, 粒子法与网格法相结合,称为 MPM. 用于模拟雪、沙子。
一个真实的场景中,肯定会包含多个仿真对象,每个对象都可能用的不同的仿真代理去仿真。除了单个仿真代理的仿真,还考虑仿真代理之间的相互作用。
✅ Coupling: 场景中同时有不同类别的物体,怎样模拟它们的交互。
mindmap
物理仿真
单个仿真代理的仿真
Particle
单个粒子的仿真
粒子系统
Mesh
不可形变Mesh
可形变Mesh
Skeleton
体素
Grid
2D Grid
3D Grid
SDF
混合代理
仿真代理之间的作用
碰撞
碰撞检测
离散相交检测
粗检测
细检测
连续穿透检测
粗检测
细检测
碰撞响应
相交解除
状态更新
约束
✅ 王老师建议的学习方法:
读 paper 而不是教材
只读重点不读全文
学知识而不是学用 Unity
多读多写多想
Reference
-
基于物理的计算机动画入门 原始课程链接
-
知乎、Deepseek等网络材料
-
图形学相关
数学基础
Animation - 角色动画
Animation - 物理动画
Geometry
Rendering
本文出自CaterpillarStudyGroup,转载请注明出处。
https://caterpillarstudygroup.github.io/GAMES103_mdbook/