本文是《A Fast Robust GJK Implementation for Collision Detection of Convex Object》论文的解读。
此论文基于GJK原始论文。阅读本文前也可阅读原始论文,或阅读我这篇的原始论文解析。
由于这篇论文是Gino Van Den Berge写的。我后文中就称其为GinoGJK。
GinoGJK是目前游戏物理引擎中广泛采用的GJK实现。此论文的代码在Github。几乎是现代GJK的标准实现。十分建议参考。本论文也是偏工程向的,看起来比原始GJK论文舒服很多。
本论文的算法假定在$R^3$下。但可以推广到$R^n$。
Gino Van Den Berge这个人也有著作《Collision Detection in Interactive 3D Environments》。里面详细描述了此论文的GJK实现(以及后续他发布的带有Margin的GJK和EPA的论文实现)。
本文是对GJK原始论文的解析。着眼于GJK算法本身的正确性证明,以及阐述数值上的缺陷。补充了一些原论文中证明的省略步骤。
建议看过更白话的文章中的GJK,了解GJK整体算法流程之后再看。
本文说明了游戏开发中的寻路算法。从BFS到Dijkstra到A*以及A*的变体等。
大部分参考这篇由浅入深的文章
这一章描述了各种几何体的最近点计算
大部分的算法在参考一节的公式大全中都有详细推导。我只记录一些较难理解的。
这一章描述了物理引擎的结构,并对整个系列文章的路线进行介绍
在使用C++ atomic原子变量的时候,需要指定内存序(memory order),比如memory_order_relaxed,memory_order_acquire等。我一直没搞明白这些内存序是在做什么。这几天深入理解了一下于是写下这份文章。
7112
15 本文基于PhysX5.5.0源码分析(不过PhysX在这方面从4.0开始几乎没有什么改动)。讲述了PhysX CharacterController的设计实现,以及其中存在的问题。
注:PhysX的CCT实现非常简陋(如果不是工作原因不建议看源码,有这时间不如去看看UE或者Jolt这种物理引擎的实现),而且存在很多问题。我是因为工作原因才要学习,没办法。