Skip to main content

使用指南

IAGaussianRenderer 通过一个场景 Actor 加载 .ply 高斯泼溅文件并实时渲染。基本流程:放置 Actor → 设置 PLY 路径与坐标系 → 运行(PIE / 打包游戏)即加载渲染。

1. 放置 Gaussian Splat Actor​

  1. 打开关卡,从 Place Actors(放置 Actor) 面板搜索 Gaussian Splat Actor(类 AIAGSActor),拖入场景。
  2. 选中该 Actor,在 Details(细节) 面板的 GaussianSplat 分类下配置参数(见下表)。
  3. Actor 的世界变换(位置 / 旋转 / 缩放)即整团点云的变换——移动、旋转、缩放 Actor,点云随之变换。

:::info 何时加载 点云可在编辑器或运行时加载。进入 PIE(Play) 或打包游戏后,若 bAutoLoadOnBeginPlay 为真且路径非空,则在 BeginPlay 自动加载并渲染。编辑器中可直接使用 Details 面板的 Load Ply / Unload Ply 按钮,无需进入 PIE。 :::

2. Actor 属性参考​

属性类型默认说明
PlyFilePathString空PLY 文件路径。绝对路径直接使用;相对路径相对工程根目录(<工程>/...)解析。文件不存在则加载失败并报错。
bAutoLoadOnBeginPlaybooltrue运行时是否在 BeginPlay 自动加载 PlyFilePath。
bEnabledbooltrue是否渲染该点云。运行中可随时切换显隐。
CoordSystem枚举ZUp_RightHand源数据坐标系,决定加载时的轴变换(见坐标系转换)。
UnitScalefloat100.0单位缩放(最小 0.01)。默认把米转换为 UE 厘米。
bReferenceColorModebooltrue忠实复现 3DGS 训练参考照片的颜色口径;关闭后融入 UE 场景光照与后处理。
bDepthOcclusionbooltrue允许场景网格遮挡 splat。
bDisableBlurringPostProcessboolfalse是否在运行时全局关闭 TAA/Bloom/MotionBlur(见后处理交互)。

3. 设置 PLY 路径​

PlyFilePath 支持两种写法:

  • 绝对路径:如 D:/Scans/room.ply,直接读取。
  • 相对路径:相对工程根目录解析。推荐把 PLY 放在工程内(例如 Content/GS/room.ply 或自建 GSData/room.ply),填 GSData/room.ply 这类相对路径,便于随工程迁移。

加载时机:

  • 自动:保持 bAutoLoadOnBeginPlay = true,运行即加载。
  • 手动(蓝图):
接口说明
LoadPly()按当前 PlyFilePath 加载。
LoadPlyFromPath(Path)用给定路径加载,并把 PlyFilePath 更新为该路径。
UnloadPly()卸载当前点云。
GetNumSplats()返回当前已加载的 splat 数量(0 表示未加载)。
OnPlyLoaded编辑器或运行时异步加载完成后触发的事件。

:::tip 编辑器操作 Details 面板提供 Load Ply / Unload Ply 按钮,可在不进入 PIE 的情况下加载或卸载当前 Actor 的点云。 :::

:::note 多 Actor 同一关卡可放置多个 Gaussian Splat Actor,每个 Actor 持有独立点云、PLY 路径与世界变换。 :::

4. 对 PLY 的处理要求​

文件格式​

项支持
头部标准 PLY 文本头(element vertex N + property ...)
数据体编码ASCII 或 binary_little_endian
不支持binary_big_endian、未知格式 → 直接报错
属性类型float/float32、double/float64、uchar/uint8、short/int16、int/int32

仅解析 vertex 元素内的 property。uchar 数值会按 /255 归一化。

必需 / 可选属性​

  • 必需(所有文件):x、y、z(缺失直接报错)。
  • 3DGS 文件:需同时具备三组属性才会被识别为高斯泼溅——
    • SH 颜色:f_dc_0、f_dc_1、f_dc_2
    • 缩放:scale_0、scale_1、scale_2
    • 旋转四元数:rot_0、rot_1、rot_2、rot_3(顺序为 w, x, y, z)
    • opacity 可选(缺失按完全不透明处理)。
  • 点云文件(缺少上述任一组 3DGS 属性):使用 red、green、blue 作为颜色;splat 尺寸按点密度自动估算(约束在 0.1–20 cm)。

数据变换(加载时自动完成)​

数据处理
位置按 CoordSystem 做轴变换,再 × UnitScale
不透明度(3DGS)PLY 存逆 sigmoid 值 → sigmoid() → [0,1]
缩放(3DGS)PLY 存 log 值 → exp() → × UnitScale
颜色(3DGS)原始 SH DC 系数(在 shader 内按 SH_C0·x + 0.5 转换)
颜色(点云)uchar [0,255] → [0,1],再按 (c − 0.5) / SH_C0 伪造为 SH DC

:::info 球谐颜色 插件支持 SH degree 0–3,并默认启用高阶系数。包含 f_rest_* 的标准 3DGS 模型可呈现视角相关颜色。 :::

加载校验​

加载后会做有限性 / 退化校验并尽量清洗:

  • NaN/Inf 位置、退化缩放(≤0)、非法四元数的 splat 会被清洗为安全默认值。
  • 若超过 50% 的 splat 无效或有效数为 0 → 判定不可渲染,加载失败(日志报错)。
  • 包围盒异常会给出提示:范围 > 10 km 提示检查 UnitScale;范围 < 1 cm 提示单位可能不对;最大缩放 > 10000 cm 提示可能产生渲染瑕疵。

排查时请查看 Output Log 中的 === Validation Report ===(含总数 / 有效 / 剔除数、包围盒与缩放区间)。

坐标系转换​

通过 Actor 的 CoordSystem 选择源坐标系:

源坐标系适用数据
ZUp_RightHand(默认)Z-Up 右手系 3DGS 数据
YUp_RightHandOpenGL / Blender 等 Y-Up 右手系数据
YDown_RightHandCOLMAP / 3DGS 数据集,例如 Tanks and Temples tandt;等效于 ZUp 预设再绕 X 轴旋转 −90°
UE_Native已采用 UE 原生坐标系的数据,不做转换

选择与源数据一致的预设即可。UnitScale 默认 100,用于把米转换为 UE 厘米。

后处理交互​

默认的 reference 颜色模式按训练参考照片的颜色口径输出,splat 不受 TAA、Bloom、MotionBlur 影响,因此无需为了保持锐利度而全局关闭这些效果。这也是 bDisableBlurringPostProcess 现在默认关闭的原因。

关闭 reference 模式后,splat 会进入场景的光照与后处理链,以获得与周围 UE 网格更一致的观感,但颜色会偏离源参考照片。如果确需排除全局模糊效果,可手动开启 bDisableBlurringPostProcess;该选项会影响整个场景,而不只当前 Actor。

全景(ERP)或立方体贴图采集需要关闭 reference 模式,具体采集方式请参阅 IADataSDG 文档。

已知限制​

  • LOD 默认关: 近景保真走全量;大场景远距需显式打开 bLod(依赖 bClip)。VRAM 仍按全量常驻。
  • 极端 FOV: 投影近似存在 EWA 泼溅的固有误差。
  • 非方形像素: UE 相机只有单一 FOV 标量,无法表达标定中 fx≠fy 的情况;Truck benchmark 数据集约有 0.6% 差异,属于引擎固有限制。
  • 全景采集: ERP / 立方体贴图采集需使用非 reference 颜色口径。
  • 版本状态: 0.1,Beta / Experimental。

:::caution 实验状态 IAGaussianRenderer 为 0.1 Beta / Experimental 版本,上述限制属当前已知范围,后续版本可能调整。 :::