作者:pjkui
UE4线条渲染机制分析[AI]
## 问题背景 在UE4引擎中,当近距离观察线条时,会看到线条实际上是由两个垂直交叉的面片构成。这种设计选择背后有着深刻的渲染技术考量。 ## 核心实现机制 ### 1. 几何体生成原理 UE4的线条渲染系统采用了一种巧妙的几何体扩展技术: - **一维到三维转换**:将原始的起点-终点线段扩展为具有视觉厚度的3D几何体 - **双面片结构**:通过生成两个垂直交叉的四边形面片来保证线条的可见性 ### 2. 具体实现细节 #### 厚度计算(BatchedE...
运行时生成NavModifierVolume
## 概述 引擎默认的`ANavModifierVolume` 如果在游戏运行时生成是不起作用的,它只有在编辑器中放置的时候起作用。为了解决这个问题,我们实现了`ARuntimeNavModifierVolume` `ARuntimeNavModifierVolume` 是一个专门为运行时动态导航修改体积类。该类继承自 `ANavModifierVolume` 并实现了 `IUnLuaInterface` 接口,支持在蓝图预览模式和运行时模式下动态创建和管理导航网格修改区域。 ## 类继承...
UE4 延迟生成的工作原理
UE4 的延迟生成(Deferred Spawning)机制。 ## UE4 延迟生成的工作原理 ### 核心概念 延迟生成是 UE4 提供的一种 Actor 生成模式,允许在 Actor 完全初始化之前对其进行配置。这个过程分为两个阶段: 1. **延迟生成阶段**:创建 Actor 实例但不完全初始化 2. **完成生成阶段**:完成初始化并将 Actor 正式加入世界 ### 工作流程 从你选中的代码可以看到典型的使用模式: ```cpp /...
UGameplayDebuggerLocalController为什么没有跟着玩家一起移动
## 问题根源分析 ### 核心原因:`UGameplayDebuggerLocalController` 不是 Actor,它是一个 UObject 通过代码分析,我发现了关键问题: 1. **`UGameplayDebuggerLocalController` 是 `UObject`,不是 `AActor`** ```cpp UCLASS(NotBlueprintable, NotBlueprintType, noteditinlinenew, hidedr...
# UE4如何定制AI的移动寻路方式
# 如何定制AI的移动寻路方式 ## 初始化寻路过滤器 ```C++ const FSharedConstNavQueryFilter& ATestMonsterAIController::GetOrCreateNavmeshQueryFilter() { UNavigationSystemV1* NavSys = FNavigationSystem::GetCurrent<UNavigationSystemV1>(GetWorld()); if (NavSy...
UE4自定义NavLink实现指南
# UE4 自定义 NavLink 实现指南 ## 概述 本文档详细介绍了如何在 UE4 中实现自定义的 NavLink 系统,包括自定义 NavLink 组件、路径跟随组件和 NavLinkProxy 的完整实现方案。该系统主要用于 Test 功能,支持 AI 在导航过程中与游戏对象(如门)进行交互。 ## 系统架构 自定义 NavLink 系统由三个核心组件构成: 1. **UNavLinkTestCustomComponent** - 自定义 NavLink 组件...
[c++]float浮点数精度问题
遇到一个问题,AI无论如何都走不到距离自己0.0315cm处的一个点。最后跟踪下来是浮点数精度的问题。因为此时AI的坐标是(123548.758,-214606.125,3982.34863),进行垂直射线往下打的时候,获取的位置是(123548.758,-214606.094, 3982.34863),按理说垂直射线不会产生水平面偏移,最后发现是精度问题。 因为IEEE 754单精度标准,符号位一位,指数位8位,尾数位23位。尾数位表示的最大精度为2^-23^次方,既 1.19X10^(-7)^...
[UE4]追查了两天内存疯狂泄露的原因,竟然是Log没关???——UE4如何查内存泄露
各种怀疑,各种debug,最后发现是log窗口没关,因为cache机制所以内存越来越多。然后内存耗尽。。。 好吧,我比较菜。 一天后。。。[更新] 内存耗尽和log窗口的log关系不大(为了减少LOG的影响,可以在项目里面把UE_LOG定义为空,这样就不会被log影响日志了。),主要是ue4下使用std标准库,因为不同的内存管理机制,会造成内存被cache住无法释放。 在UE4引擎端,会hook所有的内存分配。 `Engine\Source\Runtime\Core\Public\HA...
UE4中的SubSystem的使用
## 引言 Subsystems 是一套可以定义、自动实例化和释放的类的框架。可以将其理解为 GamePlay 级别的 Component. UE在4.22版本的时候开始引入Subsystems,并在4.24完善.SubSystem其实可以算是GamePlay框架基础上的一个增强功能,属于GamePlay架构的范围. Subsystem的好处是利用它的特性可以很好的安排好对象的生命周期,也会使程序的架构更加的清晰. ## SubSystem分类及其生命周期 ...