GAMES104-现代游戏引擎:从入门到实践 - 物理引擎课程笔记汇总

发布时间:2024年01月16日

0 入门资料

1 物理引擎

  • 物理引擎的用途:
    • 碰撞检测
    • 解决碰撞、其它约束限制
    • 更新所有物体的世界坐标(world Transform)

基本概念

Actor & shapes

Actor

  • 静态 static actor:不会移动,阻碍你
  • 动态 dynamics actor:符合动力学原理,可以被 forces、torque、impulse影响
  • 触发器 trigger
  • kinematic actor:可以违背物理学,让它按照设计的运动

Actor Shapes

  • 求交点
Shapes图例备注
Spheres 球体在这里插入图片描述
Capsules 胶囊体在这里插入图片描述- 人体
Boxes 盒子在这里插入图片描述
Triangle Meshes 三角在这里插入图片描述- 必须是密闭的

- Dynamic actors 不能使用
Height Fields在这里插入图片描述- 用于地形

Shape 的属性

  • 质量/密度 Mass and Density
  • 质心 Center of Mass
  • 摩擦力/弹性 Friction & Restitution :受到物理材质的影响
  • 力 Forces:常见的力包括拉力、重力、摩擦力
  • 冲力/冲量 impulse:例如爆炸
  • 移动 movement

半隐式欧拉积分
在这里插入图片描述

  • 【优点】
    • 容易模拟
    • 较稳定
  • 【缺点】
    • 实际消耗时间比真实时间要久一点

Rigid body dynamics

粒子动力学 Particle Dynamics刚体动力学 Rigid body Dynamics
位置 Position x ? \vec{x} x 旋转 Orientation R \boldsymbol{R} R
线速度 Linear Velocity v ? = d x ? ? d t \vec{v}=\frac{\mathrm{d} \vec{x}}{\mathrm{~d} t} v =?dtdx ?角速度 Angular velocity ω ? = v ? × r ? ∣ r ? ∣ 2 \vec{\omega}=\frac{\vec{v} \times \vec{r}}{|\vec{r}|^2} ω =r 2v ×r ?
加速度 Acceleration a ? = d v ? ? d t = d 2 x ? d t 2 \vec{a}=\frac{\mathrm{d} \vec{v}}{\mathrm{~d} t}=\frac{d^2 \vec{x}}{d t^2} a =?dtdv ?=dt2d2x ?角加速度 Angular acceleration α ? = d ω ? d t = a ? × r ? ∣ r ? ∣ 2 \vec{\alpha}=\frac{\mathrm{d} \vec{\omega}}{\mathrm{d} t}=\frac{\vec{a} \times \vec{r}}{|\vec{r}|^2} α =dtdω ?=r 2a ×r ?
质心 Mass M = ∑ m i M=\sum m_i M=mi?转动惯量 Inertia tensor I = R ? I 0 ? R T \mathbf{I}=\mathbf{R} \cdot \mathbf{I}_{\mathbf{0}} \cdot \mathbf{R}^{\mathrm{T}} I=R?I0??RT
动量 Momentum p ? = M v ? \vec{p}=M \vec{v} p ?=Mv 角动量 Angular momentum L ? = I ω ? \vec{L}=\mathbf{I} \vec{\omega} L =Iω
力 Force F ? = d p ? d t = m a ? \vec{F}=\frac{d \vec{p}}{d t}=m \vec{a} F =dtdp ??=ma 力矩 Torque τ ? = d L ? d t \vec{\tau}=\frac{d \vec{L}}{d t} τ =dtdL ?

Collision Detection

  • 碰撞检测:东西是否撞上了
碰撞检测的两个阶段方法
粗筛1. 直接用AABB找到相交的刚体

2. 找到潜在的重叠刚体对
1. BVH Tree

2. Sort and Sweep
细筛1. 进一步检测重叠

2. 得到相交信息

1. 相交点

2. 相交法线

3. 穿透深度
1. Basic Shape Intersection Test

2. MinkowskiDifference-based Methods

3. Separating Axis Theorem
  1. Basic Shape Intersection Test
圆与圆碰撞圆与胶囊体碰撞胶囊体与胶囊体碰撞
在这里插入图片描述在这里插入图片描述在这里插入图片描述
  1. MinkowskiDifference-based Methods
碰撞未碰撞
在这里插入图片描述
在这里插入图片描述
  1. Separating Axis Theorem(SAT)
  • 一定能找到一根轴,分离两个凸包
碰撞不碰撞
2D 情况在这里插入图片描述在这里插入图片描述
3D 情况在这里插入图片描述在这里插入图片描述
  • 连续碰撞检测 Continuous Collision Detection(CCD)

Collision Resolution

  • 如何处理碰撞?分离
方法具体方法
加入Penalty Force分离加一个反向的惩罚力
转为约束问题解决速度约束不断尝试给一个冲量
解决位置约束见 ragdoll - joint constraints

应用与实践

Character controller

  • 反物理的系统:摩擦力无穷大
  • 用 Kinematic Actor
    • 不受物理规则影响
    • 推动别的物体
  • 形状
    • 双层胶囊
  • Sweep test
    • 与物体碰撞后,往旁边平移
  • Stepping 爬楼梯
    • 尝试往上提,再往前走

Ragdoll

在这里插入图片描述

  • 人体的 joint 约束(joint constraints)
Hinge

铰链
Ball-and-socket 球窝Pivot 枢轴Saddle

鞍状
Condyloid

髁状突
Gliding

滑行
在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述
文章来源:https://blog.csdn.net/iteapoy/article/details/135620516
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。