0. 为什么需要这份规范
在大多数因 Niagara 导致性能问题的项目中,常见现象并不是"GPU 模拟太慢",而是:
- 渲染线程长时间阻塞在等待 Niagara 系统创建渲染缓冲(
WaitForGatherDynamicMeshElements); - 单帧内大量
CreateRHIBuffer调用; - 关卡里同一资产被复制粘贴几十上百个实例;
- 视野外、远距离的 Ambient 系统没有被正确剔除,每帧仍在渲染线程上分配显存缓冲。
在大多数因 Niagara 导致性能问题的项目中,常见现象并不是"GPU 模拟太慢",而是:
WaitForGatherDynamicMeshElements);CreateRHIBuffer 调用;方法蓝图:
UE自带工具:
导出Json:
这篇文章写的非常详细: RootMotionSource原理分析和插件封装
我们来详细解释一下 Unreal Engine 中 UAnimNotifyState::bIsNativeBranchingPoint 这个属性的含义和作用。
首先,bIsNativeBranchingPoint 是一个布尔值成员变量,定义在 UAnimNotifyState 类中。它的名字直译为“是原生分支点”。
要理解它,关键在于理解“分支点(Branching Point)”这个概念。
什么是分支点?
原生(Native)的含义:
Overlay Layer(覆盖层)是Unreal Engine动画蓝图中的一个强大功能,它允许你在基础动画之上叠加额外的动画效果,而不会影响底层动画状态机。
通过设置不同的覆盖动画状态来去设置播放的覆盖的动画
在动画中设置不同部位的混合曲线:
在动画蓝图中Layer Blending中根据曲线来对姿势混合: