Настройка параметров изображения 3DGS
Документ состоит из трёх частей: общие параметры действуют в обоих конвейерах, далее идут параметры, специфичные для каждого конвейера. Специфичные параметры не отображаются в панели Details другого конвейера.
Общие параметры
Режим отображения
3D Gaussian Splatting (по умолчанию)
Отображает данные как 2D гауссовы эллипсы с полным цветом и прозрачностью.
LCCComponent->SetRenderMode(ERenderMode::Splatting);
Облако точек
Отображает каждый splat как одну цветную точку; подходит для обзорных видов и сцен с ограниченной производительностью.
LCCComponent->SetRenderMode(ERenderMode::PointCloud);

Переключение между режимами отображения 3DGS и облака точек
Режим облака точек поддерживает два способа раскраски, переключаемых свойством ColorationMode:
| Режим | Подпись в панели | Описание |
|---|---|---|
Data | Data | Раскрашивает точки по RGB, сохранённому в данных |
Elevation | Evelation | Задаёт цвет по высоте, перекрывая исходные цвета |
При Elevation границы градиента задают два свойства:
ElevationColorBottom— цвет на наименьшей высотеElevationColorTop— цвет на наибольшей высоте

Раскраска по высоте в режиме облака точек
Используйте Data, чтобы видеть настоящие цвета отснятой сцены, и Elevation, чтобы читать рельеф и перепады высот.

Раскраска Data в режиме облака точек показывает настоящие цвета, сохранённые в данных
Режим загрузки
Данные разделены на основную часть и окружение, и LoadMode определяет, какая часть рендерится:
| Режим | Описание |
|---|---|
| Both | Рендерит основную часть и окружение (по умолчанию) |
| OnlyMain | Рендерит только основную часть |
| OnlyEnvironment | Рендерит только окружение |
| None | Не рендерит ничего, данные остаются загруженными |

Переключение области рендеринга основной части и окружения через LoadMode
Примечание:
Noneтолько останавливает рендеринг, данные по-прежнему занимают видеопамять. Для освобождения ресурсов вызовитеUnLoad().
Режим освещения
Unlit (по умолчанию)
Использует только собственный цвет гауссиан, без взаимодействия с источниками света сцены.
Lit
Включает отложенное освещение, чтобы на сцену 3DGS влияли направленные, точечные и другие источники света. Требует информации о глубине и нормалях.
LCCComponent->SetLightMode(ELightMode::Lit);

Переключение между режимами освещения Unlit и Lit
Mip Filter
Когда включён, применяет двумерный низкочастотный фильтр вместе с компенсацией непрозрачности, чтобы уменьшить мерцание на разных масштабах.
Значение по умолчанию зависит от формата данных:
| Формат | По умолчанию |
|---|---|
.lcc2 / .lcc | Включён |
.ply / .spz / .sog | Выключен |
Одиночные форматы выключают его по умолчанию, чтобы сохранить исходную резкость данных. Включайте вручную, когда появляется мерцание:
LCCComponent->SetUseMipFilter(true);
Сферические гармоники (SH)
Дают зависящее от вида изменение цвета и повышают достоверность освещения.
LCCComponent->SetUseShcoef(true);
Требования:
- Режим отображения — 3DGS
- Сами данные содержат коэффициенты SH
Наличие коэффициентов SH в данных зависит от формата:
| Формат | Как определяется |
|---|---|
.lcc2 / .lcc | Определяется типом файла данных: тип Quality содержит SH, тип Portable — нет |
.ply / .spz / .sog | Маркера типа файла нет, поэтому всё зависит от того, были ли коэффициенты SH фактически записаны в файл |
Когда данные не содержат коэффициентов SH, этот переключатель в панели Details отключён.
Полосы SH
После включения SH свойство SHBands задаёт, сколько степеней участвует в расчёте, от 1 до 3. Свойство доступно только в конвейере LCC2 и одинаково применимо к .lcc2, .sog, .spz и .ply.
LCC2Component->SetSHBands(2);
| Настройка | Эффект |
|---|---|
bUseShcoef выключен | SH не используются вовсе; цвет не меняется с видом, наименьшая стоимость |
SHBands = 1 | Сохраняет самое базовое зависящее от вида изменение; расход памяти GPU — четверть от 3-й степени |
SHBands = 2 | Промежуточный вариант |
SHBands = 3 (по умолчанию) | Полный зависящий от вида эффект, наибольшая стоимость |
Значение по умолчанию берётся из степени, сохранённой в данных, и она же является верхним пределом. Установка 3 для данных, где сохранены только 2 степени, не даёт дополнительного эффекта. По сравнению с полным отключением SH снижение степени — более тонкий компромисс: оно сохраняет часть зависящего от вида изменения, снижая и стоимость шейдинга, и расход памяти GPU. Значения расхода памяти приведены в разделе Рендеринг — структура Buffer.
SplatScale
Управляет размером квада каждого splat, от 0,001 до 1,0.
Снижение уменьшает площадь экрана, покрываемую одним splat, что уменьшает полупрозрачное перекрытие и снижает стоимость заполнения пикселей. Слишком сильное снижение приводит к дырам на поверхностях или заметно «худому» виду. Это также один из вариантов настройки производительности; см. Руководство по производительности.
LCCComponent->SetSplatScale(1.0f);

Настройка масштаба splat и глобальной прозрачности 3DGS
Глобальная прозрачность
У каждого режима отображения своё свойство глобальной прозрачности, оба в диапазоне от 0,0 до 1,0:
| Свойство | Применяется к |
|---|---|
| GlobalAlpha | 3DGS |
| GlobalAlpha_PointCloud | Облако точек |
LCCComponent->SetGlobalAlpha(1.0f);
LCCComponent->SetGlobalAlpha_PointCloud(1.0f);

Настройка глобальной прозрачности режима облака точек
Коррекция цвета

Настройка параметров насыщенности, контраста и оттенка LCC
Изменения во время выполнения поддерживаются:
| Свойство | Диапазон | Описание |
|---|---|---|
| Saturation | 0.0~2.0 | Насыщенность по каналам |
| Contrast | 0.0~2.0 | Контраст по каналам |
| Gamma | 0.0~2.0 | Гамма-коррекция по каналам |
| Offset | -1.0~1.0 | Аддитивное смещение цвета |
| ColorTint | LinearColor | Мультипликативный оттенок |
LCCComponent->SetSaturation(FVector4(1.2, 1.2, 1.2, 1.0));
LCCComponent->SetColorTint(FLinearColor::White);

Изображение после динамической настройки параметров цвета
Сглаживание
Когда включено bAffectAntiAliasingMethod, плагин управляет методом сглаживания автоматически:
| Конфигурация | Метод по умолчанию |
|---|---|
| LCC1 Splat | FXAA |
| LCC2 Splat | TSR |
| LCC1 Point Cloud | MSAA |
| LCC2 Point Cloud | TSR |
Значения по умолчанию можно изменить в ProjectSettings > Plugins > LCC4Unreal.
Примечание: метод сглаживания — это глобальная настройка уровня вида. Когда в одной сцене есть Actor и из конвейера LCC, и из конвейера LCC2, каждый задаёт метод сглаживания по своей конфигурации, поэтому результат зависит от порядка выполнения и не определён. В таких сценах задайте метод сглаживания одинаковым для обоих конвейеров вручную.

Настройка метода сглаживания по умолчанию для каждого конвейера LCC
Постобработка

Настройка постобработки и тональной компрессии в LCC4Unreal
| Настройка | По умолчанию | Описание |
|---|---|---|
| Enable Post Process | Включено | Участвуют ли пиксели LCC в конвейере постобработки движка |
| Apply Tonemap Inverse | Выключено | Применяет FilmToneMapInverse во время преобразования цветового пространства, чтобы после тональной компрессии движка восстановился исходный вид данных |
Это глобальные настройки в ProjectSettings > Plugins > LCC4Unreal > Rendering, действующие в обоих конвейерах. Все компоненты LCC в сцене используют один и тот же режим, и задать его отдельно для каждого Actor нельзя.
Результат отключения Enable Post Process
Два состояния обрабатываются по-разному:
| Состояние | Обработка | Результат |
|---|---|---|
| Включено | Применяет InverseACES к пикселям LCC, чтобы они попали в конвейер постобработки движка | 3DGS получает тональную компрессию, Bloom, экспозицию, цветокоррекцию и другую постобработку вместе с обычными объектами сцены |
| Выключено | Сохраняет снимок до тональной компрессии и смешивает его обратно в изображение по альфе после её завершения | 3DGS сохраняет исходные цвета и не затрагивается тональной компрессией и всеми последующими этапами постобработки |
Отключение подходит для случаев, требующих строгого воспроизведения исходных цветов данных, например для проверки цвета или сравнения с эталонным изображением. Плата за это — 3DGS и обычные объекты сцены перестают выглядеть согласованно, а общие эффекты постобработки, такие как Bloom и экспозиция, к части 3DGS не применяются.
Примечание: отключение Enable Post Process требует вывода альфа-канала в движке, иначе результат композитинга будет неверным. Включите Alpha Output в ProjectSettings > Engine > Rendering (в UE 5.4 и ранее это соответствует параметру «Enable alpha channel support in post processing», который нужно установить в Linear color space only и затем перезапустить редактор). Плагин показывает подсказку, когда обнаруживает, что этот параметр выключен.
Для чего нужен Apply Tonemap Inverse
Цвета данных 3DGS — это готовые цвета, уже прошедшие тональную компрессию при съёмке. Повторный проход таких цветов через тональную компрессию движка сжимает их второй раз, что обычно проявляется как понижение контраста и серые светлые участки.
Когда параметр включён, плагин применяет FilmToneMapInverse к цветам LCC на этапе преобразования цветового пространства, чтобы отменить последующую тональную компрессию движка, и итоговое изображение восстанавливает исходный вид данных.
| Состояние | Сценарий применения |
|---|---|
| Выключено (по умолчанию) | 3DGS и обычные объекты сцены проходят одну и ту же тональную компрессию для согласованного общего вида |
| Включено | 3DGS должен показывать исходные цвета и контраст данных |
Этот параметр действует в обоих конвейерах и имеет смысл только при включённом Enable Post Process: когда тот выключен, 3DGS не участвует в тональной компрессии, поэтому отменять нечего.
Параметры, специфичные для конвейера LCC2
Порог глубины
Свойство AlphaThreshold определяет, какой слой глубины 3DGS записывает в буфер глубины. 3DGS состоит из множества слоёв полупрозрачных splat, и плагин накапливает непрозрачность от близких к дальним. Когда накопленное значение достигает этого порога, текущая глубина записывается как представительная глубина этого пикселя.
| Параметр | Значение |
|---|---|
| Диапазон | 0.01 ~ 0.99 |
| По умолчанию | 0.5 |
Снижение смещает глубину к камере, повышение — от камеры. Эта глубина участвует в освещении, тестах перекрытия и зависящей от глубины постобработке, поэтому вместе с ней меняются отклик поверхностей в режиме Lit и взаимное перекрытие с обычными мешами.
LCC2Component->AlphaThreshold = 0.5f;
Типичный случай для снижения: данные содержат тонкие структуры с очень низкой непрозрачностью, например крылья насекомых или птиц, сетчатые полотна, кромки листьев. Splat в таких областях никогда не достигают накопленной непрозрачности по умолчанию 0,5, поэтому глубина не записывается. Если в сцене к тому же есть небесная сфера, туман или другой не чёрный фон, эти области из-за отсутствия глубины смешиваются с цветом фона, что проявляется как выцветшие структуры и потеря деталей. Снижение порога позволяет таким областям записывать глубину раньше и восстанавливает детали.
Снижайте порог постепенно и наблюдайте. Слишком низкое значение подтягивает всю глубину к камере и влияет на отношения перекрытия и зависящую от глубины постобработку.
Примечание: это свойство находится в свёрнутой области Advanced панели Details, и значение по умолчанию подходит для большинства сцен.
Параметры, специфичные для конвейера LCC
Приём теней
LCCComponent->bReceiveShadows = true;
Примечание: требуется режим отображения 3DGS. Включение существенно влияет на производительность.

Рендеринг 3DGS с включённым приёмом теней
Устранение швов
Свойство bEnableSeamCutting устраняет швы, которые рендеринг по частям создаёт на границах узлов. Данные LCC версии 5.0 и выше включают его автоматически; включайте вручную, если в данных более низких версий появляются заметные швы.
LCCComponent->bEnableSeamCutting = true;
Примечание: это свойство находится в свёрнутой области Advanced панели Details.
Сортировка прозрачности между несколькими Actor
Конвейер LCC не выводит глубину, поэтому несколько LCC Actor не могут получить корректное взаимное перекрытие через тест глубины и могут лишь приблизить его через порядок отрисовки прозрачных объектов. Свойство bEnableMultipleLCCActorAutoSort (включено по умолчанию) автоматически задаёт TranslucentSortPriority по расстоянию от каждого Actor до камеры, так что более близкие Actor рисуются позже, и в большинстве случаев это даёт разумный результат наложения.
Эта сортировка работает на уровне Actor: каждый Actor участвует целиком и не разбивается до splat. Отсюда неизбежные ограничения:
- Когда ограничивающие боксы двух LCC Actor пересекаются или взаимно проникают в пространстве, никакой единый общий порядок не может выразить корректное соотношение «спереди-сзади», и перекрытие в области пересечения будет неверным
- Когда один Actor сам охватывает большой диапазон глубины, сортировка по расстоянию до центра Actor может не соответствовать фактическому соотношению «спереди-сзади»
Переходите на конвейер LCC2, когда несколько наборов данных 3DGS должны корректно перекрывать друг друга. Отключайте этот параметр, когда порядок наложения нужно задать вручную, и вместо него задавайте TranslucentSortPriority у каждого Actor.
В конвейере LCC2 такого свойства нет: его данные объединяются в один Buffer, глобально сортируются по splat и выводят глубину для участия в тестах перекрытия, поэтому вмешательство не требуется.