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)。 每次調用都重置時間軸,動畫會反覆從頭開始。