XGRIDSДокументация
  • 简体中文
  • English
  • 繁體中文
  • 日本語
  • Deutsch
  • Español
  • Italiano
  • Français
  • Русский
  • 简体中文
  • English
  • 繁體中文
  • 日本語
  • Deutsch
  • Español
  • Italiano
  • Français
  • Русский
  • Lixel CyberColor

    • Руководство пользователя LCC Studio

      • Начало работы
      • Версия и обновления
      • Загрузка и установка
      • Обзор интерфейса и навигация
      • Перед реконструкцией
      • Реконструкция модели
      • Реконструкция одиночной модели
      • Объединение карт
      • Воздушно-наземное объединение
      • Воздушная реконструкция
      • Мои модели
      • Другие функции
      • Настройки и учётная запись
      • Конвертер
      • Реконструкция по видео
      • Часто задаваемые вопросы
    • LCC Scene Editor

      • Версия и обновления
      • Учётная запись и вход
      • Обзор продукта и главная страница
      • Интерфейс редактора
      • Режимы навигации по сцене
      • Файл
      • Настройки
      • Операции редактирования
      • Окно
      • Глобальная панель инструментов
      • Ресурсы и свойства
      • Левая панель инструментов
      • Точки обзора
      • Портал
      • Skybox
      • Аннотации
      • Измерение
      • Flythrough
      • Отчёт по сцене
      • 3D Layout
      • Мини-карта
      • Preview Mode (Viewer)
      • Справка
      • Часто задаваемые вопросы
      • Точка появления
    • LCC Model Editor

      • Версия и обновления
      • Руководство пользователя
      • Обзор и интерфейс
      • Операции с файлами
      • Инструменты выбора
      • Редактирование моделей
      • Измерение
      • Цветокоррекция
      • Управление ресурсами
      • Настройки и справка
      • Часто задаваемые вопросы
  • Plugin & SDK

    • Unreal

      • Введение
      • Быстрый старт — Windows
      • Быстрый старт — Linux
      • Быстрый старт — Quest3
      • Редакции и лицензирование
      • Рендеринг
      • Растеризация Tiled (экспериментально)
      • Визуальные настройки
      • Нормали и освещение
      • Редактирование сцены
      • Параметры производительности
      • Руководство по оптимизации производительности
      • Интеграция со сторонними и движковыми плагинами
      • Прокси-меш
      • Анимация загрузки
      • Коллизии
      • Поддержка системы навигации
      • Поддержка однослойной воды
      • Локализация
      • Частые вопросы
      • Устранение неполадок
      • Журналы и диагностика
      • Свяжитесь с нами
      • Рекомендуемые практики

        • Переосвещение 3DGS с помощью меша LixelStudio
      • Справочник API

        • ALCCActorBase
        • ULCCComponentBase
        • ULCCComponent
        • ULCC2Component
        • Actor SOG / SPZ / PLY
        • ALCC2ProxyMesh
        • ALCCClippingVolume
        • ALCCSectionPlane
        • ALCCLoadVolume
        • ULCCUtilLibrary
        • Enums
        • Structs
      • Журнал изменений

        • v3.4.0
        • v3.3.1
        • v3.0.0
        • v2.2.1
        • v1.0.0
        • v0.9.0
        • v0.8.0
        • v0.7.1
        • v0.6.1
        • v0.5.2
        • v0.4.1
        • v0.4.0
        • v0.3.0
        • v0.0.5
        • v0.0.4
        • v0.0.3
        • v0.0.2
        • v0.0.1

Настройка параметров изображения 3DGS

Документ состоит из трёх частей: общие параметры действуют в обоих конвейерах, далее идут параметры, специфичные для каждого конвейера. Специфичные параметры не отображаются в панели Details другого конвейера.

Общие параметры

Режим отображения

3D Gaussian Splatting (по умолчанию)

Отображает данные как 2D гауссовы эллипсы с полным цветом и прозрачностью.

LCCComponent->SetRenderMode(ERenderMode::Splatting);

Облако точек

Отображает каждый splat как одну цветную точку; подходит для обзорных видов и сцен с ограниченной производительностью.

LCCComponent->SetRenderMode(ERenderMode::PointCloud);
Переключение между режимами отображения 3DGS и облака точек

Переключение между режимами отображения 3DGS и облака точек

Режим облака точек поддерживает два способа раскраски, переключаемых свойством ColorationMode:

РежимПодпись в панелиОписание
DataDataРаскрашивает точки по RGB, сохранённому в данных
ElevationEvelationЗадаёт цвет по высоте, перекрывая исходные цвета

При Elevation границы градиента задают два свойства:

  • ElevationColorBottom — цвет на наименьшей высоте
  • ElevationColorTop — цвет на наибольшей высоте
Раскраска по высоте в режиме облака точек

Раскраска по высоте в режиме облака точек

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

Раскраска Data в режиме облака точек

Раскраска Data в режиме облака точек показывает настоящие цвета, сохранённые в данных

Режим загрузки

Данные разделены на основную часть и окружение, и LoadMode определяет, какая часть рендерится:

РежимОписание
BothРендерит основную часть и окружение (по умолчанию)
OnlyMainРендерит только основную часть
OnlyEnvironmentРендерит только окружение
NoneНе рендерит ничего, данные остаются загруженными
Переключение режимов рендеринга основной части и окружения в LoadMode

Переключение области рендеринга основной части и окружения через LoadMode

Примечание: None только останавливает рендеринг, данные по-прежнему занимают видеопамять. Для освобождения ресурсов вызовите UnLoad().

Режим освещения

Unlit (по умолчанию)

Использует только собственный цвет гауссиан, без взаимодействия с источниками света сцены.

Lit

Включает отложенное освещение, чтобы на сцену 3DGS влияли направленные, точечные и другие источники света. Требует информации о глубине и нормалях.

LCCComponent->SetLightMode(ELightMode::Lit);
Переключение между режимами освещения Unlit и 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);
Настройки SplatScale и GlobalAlpha

Настройка масштаба splat и глобальной прозрачности 3DGS

Глобальная прозрачность

У каждого режима отображения своё свойство глобальной прозрачности, оба в диапазоне от 0,0 до 1,0:

СвойствоПрименяется к
GlobalAlpha3DGS
GlobalAlpha_PointCloudОблако точек
LCCComponent->SetGlobalAlpha(1.0f);
LCCComponent->SetGlobalAlpha_PointCloud(1.0f);
Настройка прозрачности в режиме облака точек

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

Коррекция цвета

Параметры коррекции цвета LCC

Настройка параметров насыщенности, контраста и оттенка LCC

Изменения во время выполнения поддерживаются:

СвойствоДиапазонОписание
Saturation0.0~2.0Насыщенность по каналам
Contrast0.0~2.0Контраст по каналам
Gamma0.0~2.0Гамма-коррекция по каналам
Offset-1.0~1.0Аддитивное смещение цвета
ColorTintLinearColorМультипликативный оттенок
LCCComponent->SetSaturation(FVector4(1.2, 1.2, 1.2, 1.0));
LCCComponent->SetColorTint(FLinearColor::White);
Результат динамической коррекции цвета

Изображение после динамической настройки параметров цвета

Сглаживание

Когда включено bAffectAntiAliasingMethod, плагин управляет методом сглаживания автоматически:

КонфигурацияМетод по умолчанию
LCC1 SplatFXAA
LCC2 SplatTSR
LCC1 Point CloudMSAA
LCC2 Point CloudTSR

Значения по умолчанию можно изменить в ProjectSettings > Plugins > LCC4Unreal.

Примечание: метод сглаживания — это глобальная настройка уровня вида. Когда в одной сцене есть Actor и из конвейера LCC, и из конвейера LCC2, каждый задаёт метод сглаживания по своей конфигурации, поэтому результат зависит от порядка выполнения и не определён. В таких сценах задайте метод сглаживания одинаковым для обоих конвейеров вручную.

Настройки сглаживания LCC4Unreal

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

Постобработка

Настройки постобработки LCC4Unreal

Настройка постобработки и тональной компрессии в 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 принимает тени

Рендеринг 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 и выводят глубину для участия в тестах перекрытия, поэтому вмешательство не требуется.

Назад
Растеризация Tiled (экспериментально)
Далее
Нормали и освещение