Skip to content

ULodGlspComponent C++ 扩展接口

ULodGlspComponent · API参考

以下接口没有蓝图反射标记,适用于自定义 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 生命周期重载和私有函数不属于文档范围。

返回 ULodGlspComponent

LiSplat Unreal SDK 产品文档中心