从0开始制作游戏物理引擎(七)
本章说明了射线检测Raycast算法。
大部分Raycast都是使用向量方程的数值解直接得出,这种的公式大全1都有记载不再赘述。
本文主要叙述:
- 射线与凸多面体求交的Slab方法(Cyrus-Beck, Liang-Barsky和Kay-Kajiya)
- Gino编写的对任意凸体的Raycat算法的论文2解释。此算法也用来做任意凸体之间的Sweep算法。
本章说明了射线检测Raycast算法。
大部分Raycast都是使用向量方程的数值解直接得出,这种的公式大全1都有记载不再赘述。
本文主要叙述:
本文解释了EPA算法及其常见实现。
本文说明了游戏开发中的寻路算法。从BFS到Dijkstra到A*以及A*的变体等。
大部分参考这篇由浅入深的文章1
本文解释了GJK算法及其常见实现。
这一章描述了判交和MTD算法,包括SAT等。
大部分的判交算法都在公式大全1中有推导。这里只记录一些难理解的。
这一章描述了各种几何体的最近点计算
大部分的算法在公式大全1中都有详细推导。我只记录一些较难理解的。
这一章描述了各种几何体表示法,以及BV构建。
这一章描述了物理引擎的结构,并对整个系列文章的路线进行介绍
在使用C++ atomic原子变量的时候,需要指定内存序(memory order),比如memory_order_relaxed,memory_order_acquire等。我一直没搞明白这些内存序是在做什么。这几天深入理解了一下于是写下这份文章。
本文基于PhysX5.5.0源码分析(不过PhysX在这方面从4.0开始几乎没有什么改动)。讲述了PhysX CharacterController的设计实现,以及其中存在的问题。
注:PhysX的CCT实现非常简陋(如果不是工作原因不建议看源码,有这时间不如去看看UE或者Jolt这种物理引擎的实现),而且存在很多问题。我是因为工作原因才要学习,没办法。