ULodGlspComponent C++ 扩展接口
以下接口没有蓝图反射标记,适用于自定义 LOD 调度、拾取或渲染集成。
LOD 计算与调度
| 接口 | 说明 |
|---|---|
GetLevelFittedByProjectedVoxelError(...) | 按体素屏幕投影误差选择 LOD。 |
GetLevelFittedByScreenPixelQuality(...) | 按 允许误差 = 4 / Quality 选择 LOD,并输出本地单位/像素。 |
GetLevelFittedAverageSplatScreenSize(...) | 按平均 Splat 屏幕半径选择 LOD。 |
ChangeLevelWithView(...) | 可提供共享视图快照,并控制是否允许动态过滤。 |
NeedsDynamicFilterUpdate(...) | 判断当前层是否需要重新过滤。 |
InvalidateViewDependentLod() | 标记视图相关 LOD 结果失效。 |
RequestExplicitLodReschedule() | 即使层级未变化,也强制重新调度。 |
HasPendingExplicitLodReschedule() | 判断强制重调度是否尚未完成。 |
IsTaskRunning() | 判断是否有 LOD 任务运行。 |
ShouldUseFullData() | 判断当前 VR 视图是否使用完整数据。 |
IsDynamicV2ActiveForCurrentView() | 判断当前 VR 视图是否使用 Dynamic V2。 |
Chunk、驻留数据与拾取
| 接口 | 说明 |
|---|---|
GetChunkBounds() | 返回当前 Chunk 的本地包围盒。 |
GetChunkResourceName() | 返回缓存 Chunk 名称或回退名称。 |
GetResidentRenderCenter(...) | 返回驻留点的 Alpha 加权世界中心。 |
GetResidentRenderRevision() | 返回驻留渲染数据修订号。 |
RaycastSplats(...) | 在当前 CPU 驻留点中检测最近命中。 |
CopyResidentRenderSnapshot(...) | 复制内部渲染快照;字节布局不是稳定存储格式。 |
SDK 内部协作
| 接口 | 说明 |
|---|---|
GetSplatAssetInterface() | 以 ISplatAsset 接口返回当前资产。 |
GetCollisionAsset() | 返回资产关联的碰撞数据。 |
GetCollisionSourceFingerprint() | 返回碰撞源指纹。 |
SupportsLodRenderFeatures() | 固定返回 true。 |
HasExplicitSceneSurfaceProxy() | 返回 Actor 下发的表面代理状态。 |
SetRenderFeatureSettings(...) | Actor 向 Chunk 传播渲染设置。 |
C++ 示例
按屏幕像素质量计算并切换 LOD:
cpp
double LocalUnitsPerPixel = 0.0;
const int32 Lod = Chunk->GetLevelFittedByScreenPixelQuality(
CameraPosition,
ViewProjection,
ViewportSize,
Chunk->ScreenPixelQuality,
LocalUnitsPerPixel);
if (Lod != INDEX_NONE && !Chunk->IsTaskRunning())
{
Chunk->ChangeLevel(Lod);
}检测当前驻留数据:
cpp
FVector HitCenter;
float HitDistance = 0.0f;
const bool bHit = Chunk->RaycastSplats(
RayOrigin, RayDirection, 100000.0f, 1.0f,
HitCenter, HitDistance);Unreal 生命周期重载和私有函数不属于文档范围。