UE4/5 开启HLOD进行优化

本文介绍了如何在UnrealEngine(UE)中启用和设置HierarchicalLOD(HLOD),通过分簇和合批优化场景显示,降低内存占用。步骤包括检查WorldSettings中的HLOD选项,使用HierarchicalLODOutliner编辑参数,以及生成和测试ProxyMeshes。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

HLOD指最后一个LOD级别下,对物件对象分簇,将周围零碎物体静态合批并以符合当前距离的贴图低分辨率进行显示。HLOD的缺点是占用内存较多。

本文将讲解UE中HLOD功能的使用。

1.确保HLOD开启

在WorldSettings里检查HLOD各选项是否正常,可以设置较低的Bound距离,方便调试:
在这里插入图片描述

2.设置HLOD

以UE沙发场景为例,点开Window -> Hierarchical LOD Outliner,开始编辑HLOD参数:
在这里插入图片描述
点击Regenerate Clusters,UE会自动搜寻所有适合进行HLOD的对象:
在这里插入图片描述
注意这里左下角有个选项,如果勾选会将整个Level生成为1个Cluster,这会影响HLOD的优化效果,如果合并物件数量不是很夸张,可以去掉勾选;手动设置Cluster。
在这里插入图片描述
Shift多选需要加入Cluster的物件,拖入HLOD面板即可:
在这里插入图片描述
点击Generate Proxy Meshes,生成代理Mesh,需要注意这时候Build All不需要再点。
在这里插入图片描述

3.测试HLOD

测试有一个很简单的方法,在HLOD面板中选择物件,会有黄色描边,然后拉远,描边会消失,说明已经被替换为HLOD网格,当然在WorldSettings里的Bound距离修改也要设置的比较近才行:
在这里插入图片描述

### 关于Unreal Engine中的HLOD实现 在Unreal Engine (UE) 中,分层细节级别(Hierarchical Level of Detail, HLOD) 是一种优化技术,用于提高大型场景的渲染性能。通过减少远处对象的几何复杂度来降低GPU负载。 对于C++层面的具体实现,主要涉及以下几个方面: #### 1. 定义HLOD体积 为了创建HLODHierarchy,需要定义包含Actor集合的HLODVolume。这些体积决定了哪些Actors会被组合成单个网格体以供远距离查看[^2]。 ```cpp AHLODLayer::FWorldPartitionHLODSettings Settings; // 设置HLOD参数... ``` #### 2. 构建层次结构 构建过程会自动分析并生成简化版本的对象群组表示形式。此过程中涉及到对原始模型的数据处理以及新代理模型的生成逻辑。 ```cpp void AHLODLayer::Build() { Super::Build(); // 自动化流程:收集、聚类、烘焙... } ``` #### 3. 动态切换LOD等级 当玩家视角发生变化时,引擎内部机制负责判断何时应该加载更精细或粗糙的表现形式。这通常基于视距和其他因素决定。 ```cpp UHierarchicalInstancedStaticMeshComponent* MeshComp = ... ; float DistanceToCameraSquared = FVector::DistSquared(CameraLocation, ActorLocation); if(DistanceToCameraSquared > SwitchDistanceSquared) { ApplyLowerDetailLevel(MeshComp); } else { RestoreFullDetail(MeshComp); } ``` 尽管上述代码片段展示了如何管理不同级别的细节转换,但实际应用中还需要考虑更多细节,比如内存管理和多线程支持等问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值