游戏物理之碰撞检测

碰撞检测的两个阶段

  1. Broad Phase(初筛): 找出刚体的AABB(轴同向碰撞盒),快速判断是否可能碰撞;
  2. Narrow Phase(精细检测):碰撞点、碰撞方向、碰撞深度;

Broad Phase的方法

BVH Tree

Sort and Sweep

把所有包围盒的minX、maxX、minY、maxY进行排序,判断是否有相交即可;

Narrow Phase

Basic Shape Intersection Test

  1. 球体与球体间的检测
  1. 球体与胶囊体间的检测
  1. 胶囊体与胶囊体间的检测

Minkowski Difference-based Methods

如果两个形体的闵可夫斯基差形成的形体过原点,那么它们两个相交;

通过GJK算法可以在线性时间判断原点是否在形体内;

Separating Axis Theorem(SAT分离轴定理)

对于在空间上的凸多面体,一定能找到一根轴,在这根轴上两个物体的投影一定是分开的;

对于二维空间上的两个形体,依次将其中一个形体的其中一条边作为轴,只要有一个轴能将两个形体分开,那么两个形体之间就是不相交的;

碰撞解决

如果检测到两个物体发生了碰撞,需要将其分离;

Applying Penalty Force

早期物理引擎的解决方法,给物体施加一个力;

Solving Constraints

现代物理引擎中将力学问题转换为了数学问题,通过数学约束去解(拉格朗日约束);

场景解决

暂无评论

发送评论 编辑评论


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