17k 16 分钟

以下为个人学习笔记整理。参考 PhysX SDK 3.4.0 文档,部分代码可能来源于更高版本。 # PhysX——Collision 篇 碰撞检测常常用来计算物体之间的碰撞,在动作游戏的攻击受击、射击游戏中子弹命中等有广泛的运用。要让游戏更加趋近真实,碰撞是其中必不可少的一环。 常规的检测方式有以下三种: raycasts:射线检测。 sweeps:扫描检测。 overlaps:重叠检测。 由于 PhysX 的 Collision 实在过于复杂,因此本文主要以 overlap 检测作为入口,一步步分析其中的原理。 //--------------------- 官方用法...
8.3k 8 分钟

以下为个人学习笔记整理。参考 PhysX SDK 3.4.0 文档,部分代码可能来源于更高版本。 # Collision 分享 碰撞检测常常用来计算物体之间的碰撞,在动作游戏的攻击受击、射击游戏中子弹命中等有广泛的运用。常用的检测方式有以下三种: Overlaps:重叠检测。 Raycasts:射线检测。 Sweeps:扫描检测。 三者在检测流程上都比较接近,因此这里以 Overlaps 的检测模式来介绍一下检测流程。 # 接口说明 bool NpSceneQueries::overlap( const PxGeometry& geometry, const...
69 1 分钟

以下为个人学习笔记整理。参考 PhysX SDK 3.4.0 文档,部分代码可能来源于更高版本。 # PhysX——Simulate 篇(开坑中...)
10k 9 分钟

以下为个人学习笔记整理。参考 PhysX SDK 3.4.0 文档,部分代码可能来源于更高版本。 # 「Scene Queries」AABBPruner 本篇基于 「Scene Queries」AABBTree 的扩展,阅读之前建议先了解 AABBTree。( ̄︶ ̄)↗ 如果说 AABBTree 是场景查询中最基础的数据结构,那么 AABBPruner 则是再此基础上进行了全方位的优化 —— 交替帧渲染。该理论的核心是同时存储画面 A 和画面 B,其中一个展示给用户,另一个则在后台渲染,等到渲染完成后,对两者进行替换,从而实现流畅的观看体验。同理,为了保证 AABBTree...
4.7k 4 分钟

以下为个人学习笔记整理。参考 PhysX SDK 3.4.0 文档,部分代码可能来源于更高版本。 # 「Scene Queries」AABBTree—— 下 下篇主要介绍 AABBTree 的增量版本 ——IncrementalAABBTree。阅读本文之前建议请先了解 「Scene Queries」AABBTree—— 上,不然很可能看的迷迷糊糊 (~ ̄▽ ̄)~ IncrementalAABBTree 相比于 AABBTree 最大的区别在于支持了插入删除时能够动态更新树结构(旋转操作,并且由于动态特性,一定程度上简化了数据结构,没那么扣扣嗖嗖了~ #...
11k 10 分钟

以下为个人学习笔记整理。参考 PhysX SDK 3.4.0 文档,部分代码可能来源于更高版本。 # 「Scene Queries」AABBTree—— 上 AABBTree 是 PhysX 用来实现场景查询的基本数据结构,通过 AABBTree 可以实现高效的 AABB 粗筛,从而提高物理检测的查询效率。 之所以把 AABBTree 单独拎出来说,主要是因为其涵盖的内容较多。当作一个单独的篇幅来展开讨论完全合适~ # AABBTree 中的数据组成 AABBTree 中的类变量总计有十个: PxU32* mIndices;PxU32...
3.6k 3 分钟

纯粹记录个人知识盲区,并系统性的做个学习 # C++ 中的 extern extern 可以应用于「变量」「函数」和「模板」,用于只声明不定义。 这里有个比较严格的规则:所有常规「变量」「函数」「模板」可以多次声明,只能有一次定义;这个很好理解,如果定义多次的情况下,编译器也不清楚改用哪次的定义作为最终的结果。 这里先做个简单的测试: // test_extern.h#pragma onceint a;void func() {}template<typename T1>void func(T1...
17k 15 分钟

本文主要是介绍一些个人开发过程中遇到的奇怪代码,奇怪并非指代代码错误或写法低效,单纯个人知识盲区 # 杂项 # new 运算符和对象初始化 一般调用构造函数的时候,都会初始化对象里的变量,如果不指定的情况下就会执行零构造,对于以下代码,想必大家都很熟悉: class CMyClass{ int c;}CMyClass a = new CMyClass();// a.c == 0初始化一个类对象,但其中实际还隐含了一个操作 —— 值初始化。这一步实际上会把 CMyClass 中的成员 c 初始化为...
9.5k 9 分钟

以下为个人学习笔记整理。参考 PhysX SDK 3.4.0 文档 # PhysX——Transform 篇 用于描述 PhysX 系统下 Transform 操作的类,其提供了两个数据: PxQuat q:用于描述旋转的四元数 q PxVec3 p:用于描述平移的向量 p # PxVec3 一个三维向量,用于表示一个物体从 A 点移动到 B 点所需的方向和距离 # PxQuat 四元数,用于描述三维空间下角度变化的数据结构,说到四元素,这里就不得不提到「旋转矩阵」和「欧拉角」,三者均用于表示空间层面的旋转。 四元数:由四个数字组成 旋转矩阵:由 3X3...
13k 12 分钟

# UE 基础篇 # Unreal 中常见类说明 # UObject 所有 UE 对象的基类 # UClass 用于描述 UObject 类型的类型 # FField 字段,组成复杂结构的基本单元 # UField 成员(成员字段 | 成员函数 | 成员结构),于 Unreal4.25 更新后移除了成员字段的作用,仅作为成员函数和成员结构使用。 https://docs.unrealengine.com/4.27/en-US/WhatsNew/Builds/ReleaseNotes/4_25/ # Unreal 中反射和类关系 #...