3DGS 出现与消失动画
概述
加载动画会在 LCC 数据加载时播放。编辑器中可点击 Refresh 按钮触发重加载以预览动画。

点击 Refresh 按钮预览加载动画
- 3DGS 模式:两阶段动画(无→点云→3DGS)

3DGS 加载动画从点云过渡到 3DGS

3DGS 两阶段加载动画演示
- 点云模式:一阶段动画(无→点云)

点云模式的一阶段加载动画

点云模式加载动画演示
参数
控制参数位于 LCCComponent 的 Animation 分类下:

在 Animation 分类中配置加载动画参数
| 参数 | 默认 | 说明 |
|---|---|---|
| bEnableAnimation | false | 启用加载动画 |
| AnimationSpeed | 100 | 动画速度 |
| AnimationMinScale | 0.001 | 第一阶段点云大小(仅 3DGS 模式) |
| FirstStageDelay | 0 | 第一阶段延迟(秒)。未开始前数据不显示 |
| SecondStageDelay | - | 第二阶段延迟(点云→3DGS)。等于 FirstStageDelay 时跳过第一阶段 |
| EnvironmentDelay | - | 环境节点延迟。环境不参与动画,到时直接显示 |
| AnimationOriginOffset | (0,0,0) | 扫描起始点偏移 |
| FirstStageColor | 金色 | 第一阶段扫描线颜色(透明度为 0 则隐藏扫描线) |
| SecondStageColor | - | 第二阶段扫描线颜色 |
| ScanLineThickness | 5 | 扫描线宽度 |
反向动画
启用反向动画后,动画从远处向中心收缩并消失。

在 Animation 分类中配置反向动画参数
| 参数 | 默认 | 说明 |
|---|---|---|
| Inverse Animation | false | 启用反向动画。启用后,动画从远处向中心收缩并消失 |
| Inverse Max Range Time | 30 | 设置反向动画的初始可见范围。数值需要覆盖整个场景 |

3DGS 两阶段反向动画演示

点云模式反向动画演示
运行时控制动画
除了在细节面板里配置,也可以在运行时通过代码或蓝图控制动画。
重播动画
SetEnableAnimation 除了开关动画,还会把动画计时起点重设为当前时间。所以它不限于加载阶段,任何时刻调用都会让动画从头播一遍。
// 让已加载的场景重新播一次动画,不需要重新加载数据
Component->SetEnableAnimation(true);
对应的蓝图节点是 Set Enable Animation。
参数与开关的先后顺序
动画一旦开播就按当前参数走。参数在开播之后仍然可以改,改动会在下一帧生效,但那属于中途调整,动画不会从头重来。
所以想让参数完整作用于整段动画,先设参数,最后调 SetEnableAnimation:
// 先设参数
Component->AnimationSpeed = 30.0f;
Component->AnimationMinScale = 0.1f;
Component->SecondStageDelay = 1.0f;
Component->bUseFirstStageColor = true;
Component->FirstStageColor = FLinearColor(0.f, 0.8f, 1.f, 1.f);
// 最后开开关,动画从这一刻按上面的参数开始
Component->SetEnableAnimation(true);
如果确实需要在播放过程中改参数(比如实时调速),直接改属性即可,不用再调 SetEnableAnimation。反过来说,播放中调 SetEnableAnimation(true) 会让动画重新开始,正常模式下要避免重复调用。
播放消失动画
把 bInverseAnimation 设为 true,再调 SetEnableAnimation(true) 重置时间轴:
// 消失
Component->bInverseAnimation = true;
Component->SetEnableAnimation(true);
// 再次出现
Component->bInverseAnimation = false; // 记得复位
Component->SetEnableAnimation(true);
文本蓝图:
[Custom Event: PlayDisappear]
│
▼
[Set Inverse Animation]
Target = (LCC Component)
bInverse Animation = true
│
▼
[Set Enable Animation]
Target = (LCC Component)
b In Enable Animation = true
实践要点
bInverseAnimation要在SetEnableAnimation之前设好。 顺序颠倒的话时间轴在方向切换前就重置了,动画会以旧方向播一次。- 每次出现动画播完后把
bInverseAnimation复位为false。 否则同一对象再次使用时会一直停在反向模式。 InverseMaxRangeTime默认 30 秒对快速交互偏大,需要调小。 这个值乘以AnimationSpeed得到初始可见半径,要足够覆盖整个场景,但过大会让消失过程显得拖沓。- 正常模式下注意别重复调用
SetEnableAnimation(true)。 每次调用都重置时间轴,动画会反复从头开始。