GinoGJK论文解析

本文是《A Fast Robust GJK Implementation for Collision Detection of Convex Object》1论文的解读。

此论文基于GJK原始论文2。阅读本文前也可阅读原始论文,或阅读我这篇的原始论文解析。

由于这篇论文是Gino Van Den Berge写的。我后文中就称其为GinoGJK。

GinoGJK是目前游戏物理引擎中广泛采用的GJK实现。此论文的代码在Github3。几乎是现代GJK的标准实现。十分建议参考。本论文也是偏工程向的,看起来比原始GJK论文舒服很多。

本论文的算法假定在$R^3$下。但可以推广到$R^n$。

Gino Van Den Berge这个人也有著作《Collision Detection in Interactive 3D Environments》4。里面详细描述了此论文的GJK实现(以及后续他发布的带有Margin的GJK和EPA的论文实现)。

GJK原始论文解析

本文是对GJK原始论文1的解析。着眼于GJK算法本身的正确性证明,以及阐述数值上的缺陷。补充了一些原论文中证明的省略步骤。

建议看过更白话的文章中的GJK,了解GJK整体算法流程之后再看。

C++原子内存序和MESI

在使用C++ atomic原子变量的时候,需要指定内存序(memory order),比如memory_order_relaxedmemory_order_acquire等。我一直没搞明白这些内存序是在做什么。这几天深入理解了一下于是写下这份文章。

PhysX CCT设计与缺陷

本文基于PhysX5.5.0源码分析(不过PhysX在这方面从4.0开始几乎没有什么改动)。讲述了PhysX CharacterController的设计实现,以及其中存在的问题。

注:PhysX的CCT实现非常简陋(如果不是工作原因不建议看源码,有这时间不如去看看UE或者Jolt这种物理引擎的实现),而且存在很多问题。我是因为工作原因才要学习,没办法。