Анимации появления и исчезновения 3DGS
Обзор
Анимация загрузки проигрывается во время загрузки данных LCC. В редакторе можно нажать кнопку Refresh, чтобы вызвать перезагрузку и посмотреть анимацию.

Нажатие кнопки Refresh для просмотра анимации загрузки
- Режим 3DGS: двухэтапная анимация (ничего → облако точек → 3DGS)

Анимация загрузки 3DGS переходит от облака точек к 3DGS

Демонстрация двухэтапной анимации загрузки 3DGS
- Режим облака точек: одноэтапная анимация (ничего → облако точек)

Одноэтапная анимация загрузки в режиме облака точек

Демонстрация анимации загрузки в режиме облака точек
Параметры
Параметры управления находятся в категории Animation у LCCComponent:

Настройка параметров анимации загрузки в категории 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

Демонстрация обратной анимации в режиме облака точек
Управление анимацией во время выполнения
Помимо настройки в панели Details, анимацией можно управлять во время выполнения из кода или Blueprint.
Повторное воспроизведение анимации
Помимо включения и выключения анимации, SetEnableAnimation также сбрасывает начало отсчёта времени анимации на текущий момент. Поэтому вызов не ограничен этапом загрузки: обращение к нему в любой момент проигрывает анимацию с начала.
// Replay the animation on an already loaded scene without reloading the data
Component->SetEnableAnimation(true);
Соответствующий узел Blueprint — Set Enable Animation.
Порядок параметров и переключателя
После старта анимация следует текущим параметрам. Параметры можно менять и после старта, изменение вступает в силу на следующем кадре, но это корректировка по ходу, и анимация не начинается заново.
Чтобы параметры действовали на всю анимацию, сначала задайте параметры и только затем вызовите SetEnableAnimation:
// Set the parameters first
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);
// Turn on the switch last; the animation starts at this moment with the parameters above
Component->SetEnableAnimation(true);
Если параметр действительно нужно изменить во время воспроизведения (например, регулировать скорость в реальном времени), меняйте свойство напрямую, не вызывая SetEnableAnimation снова. И наоборот, вызов SetEnableAnimation(true) во время воспроизведения начинает анимацию заново, поэтому в обычном режиме избегайте повторных вызовов.
Воспроизведение анимации исчезновения
Установите bInverseAnimation в true, затем вызовите SetEnableAnimation(true), чтобы сбросить таймлайн:
// Disappear
Component->bInverseAnimation = true;
Component->SetEnableAnimation(true);
// Appear again
Component->bInverseAnimation = false; // remember to reset
Component->SetEnableAnimation(true);
Текстовый Blueprint:
[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)повторно. Каждый вызов сбрасывает таймлайн, и анимация постоянно начинается заново.