4.1k 4 分钟

以下为个人学习笔记整理。参考 PhysX SDK 3.4.0 文档,部分代码可能来源于更高版本。 # GJK && EPA GJK 用来计算物体间的最短碰撞距离,而 EPA 用于计算物体发生嵌入的最短脱离距离,通过 GJK 和 EPA 可以知道物体是否嵌入,还需要运动多久发生碰撞。 # 基本概念 闵可夫斯基差(Minkowski difference) 也经常被称为「闵可夫斯基和」,简单来说就是两个集合的顶点两两做加法 (减法) 得到的新集合所组成的凸包。 支撑面 &&...
3.9k 4 分钟

# 基于 Clion 开发的 WorkFlow 汇总 项目的 IDE 五花八门,作为一个不太硬核的程序员,还是希望尽可能的简化开发流程,忽略琐碎问题,提高编码体验。下面简单介绍一下我目前基于 Clion 的工作流: # Clion 相关配置 # 插件推荐 # 仿 vscode 插件,感觉就像是在用 vscode,0 成本的编辑器转换: vscode 快捷键映射 映射之后,全局搜索是会失效的,我这边改成了 atl + a 此外自动格式化代码快捷键也被我修改为了 shift + f 各位可以根据自己的习惯进行修改。 vscode 主题模板 # 汉化包 # git 相关集成插件 #...
17k 16 分钟

本篇内容和源码均参考 UE5。 # UE 资产导出和加载 资产(Asset)是 Unreal Engine 中持久化对象的重要文件,通常以 .uasset 结尾,Asset 的官方定义是存储 UObject 被序列化后的二进制文件。而在 Unreal Engine Editor 中预览和修改操作,本质上就是对这些「资产」文件的读写。下面以 BlueprintStruct 为例,分成以下几个步骤,简单梳理整个流程: 资产加载(Load) 反序列化(UnSerialize) 资产导出 (Export) 序列化(Serialize) # 资产加载 Unreal...
5k 5 分钟

本篇内容和源码均参考 UE5。 # UE VirtualMachine enum EExprToken : uint8{ // Variable references. EX_LocalVariable = 0x00, // A local variable. EX_InstanceVariable = 0x01, // An object variable. EX_DefaultVariable = 0x02, // Default variable for a class context. // = 0x03, EX_Return =...
18k 17 分钟

本篇内容和源码均参考 UE5。 # Delegate 委托 委托是 Unreal 对于 C++ 函数的一种封装。在 Unreal...
5.3k 5 分钟

以下为个人学习笔记整理。参考 PhysX SDK 3.4.0 文档,部分代码可能来源于更高版本。 # PhysX——Task Management 篇 任务管理器是 PhysX 管理 CPU 和 GPU 计算资源的调度管理器。在保证每个 Task 按部就班执行的情况下尽可能的提高运行效率,在 Cloth 和 Simulate 等场景有广泛的应用。因此本篇也作为 Simulate 的前篇来着重介绍一下「任务管理器」的实现逻辑。由于调度逻辑被拆分成了 GPU 和 CPU 两部分,本篇主要还是介绍 CPU 的调度规则。 为了能够更好理解,文章内会使用部分 Simulate 代码作为示例,来介绍...
8.3k 8 分钟

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

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