Получение реальных нормалей для 3DGS с помощью прокси-меша
Обзор
ProxyMesh — это возможность редакции Pro в LCC4Unreal. Она даёт реальную информацию о глубине и нормалях за счёт размещённого прокси-меша и является единственным режимом нормалей с затенением по реальной форме. Она применима ко всем форматам конвейера LCC2 (.lcc2 / .sog / .spz / .ply). О лицензировании см. Редакции и лицензирование.
Примечание: ProxyMesh требует действующей лицензии. Без неё происходит автоматический откат к режиму Fixed.
Что такое прокси-меш
У данных 3DGS нет собственных нормалей поверхности, и они ничего не записывают в GBuffer, поэтому не могут участвовать в обычных расчётах освещения. Задача прокси-меша — предоставить геометрию, форма которой совпадает с 3DGS. Плагин берёт у неё глубину, нормали и свойства материала в GBuffer и передаёт их освещению и постобработке движка; сам меш в итоговом изображении не появляется.
3DGS data Proxy mesh
(color, opacity) (depth, normals, material properties)
│ │
│ ▼
│ Written into the GBuffer
│ │
│ ┌───────────────┴───────────────┐
│ ▼ ▼
│ Engine lighting Post-processing that
│ (directional, point, shadows) depends on the GBuffer
│ │ (reflection, refraction, etc.)
│ └───────────────┬───────────────┘
▼ ▼
Color source ──────────────▶ Composite final image
│
▼
The proxy mesh itself is invisible
Иначе говоря: цвет в изображении приходит от 3DGS, а отклик на освещение — от прокси-меша.
Происхождение меша не ограничено: плагин читает только результат его рендеринга и не интересуется тем, как он был получен. Распространённые варианты:
| Источник | Описание |
|---|---|
| Приблизительный меш, созданный вместе с 3DGS | Меш, выводимый процессом съёмки; наиболее точное совпадение формы и предпочтительный вариант |
| Меш, полученный преобразованием 3DGS | Меш, восстановленный из 3DGS сторонним инструментом |
| Меш, созданный вручную | Смоделирован по форме 3DGS в DCC-программе, подходит для сцен, где нужен точный контроль |
| Сборка из базовых примитивов | Приблизительные объёмы из Cube, Plane и других базовых мешей, подходит для правильных форм вроде зданий и земли |
Единственное требование — меш должен совпадать по форме с 3DGS в пространстве. Чем точнее совпадение, тем реалистичнее освещение; при слишком большом расхождении направление света перестаёт соответствовать форме, видимой в изображении.
Точность меша не должна быть высокой: достаточно упрощённой низкополигональной геометрии, если объёмы и ориентация верны.
Роль материала
Свойства материала прокси-меша читаются вместе с GBuffer, поэтому именно они определяют, как поверхность 3DGS реагирует на освещение.
Для базового освещения достаточно материала-белой заготовки, текстуры не нужны. Для эффектов, зависящих от свойств материала, используйте соответствующий PBR-материал в нужном месте меша, например:
- Отражение и преломление воды: используйте в области воды материал воды с подходящими значениями Metallic и Roughness
- Металлические блики: задайте соответствующие Metallic и Roughness в местах металлических конструкций
- Шероховатые поверхности: используйте высокое Roughness, чтобы подавить блики, которых не должно быть
Когда свойства материала не соответствуют фактической форме, результат освещения не совпадает с внешним видом 3DGS в изображении, например на стене, которая должна быть шероховатой, появляются зеркальные блики.
Быстрая настройка
Шаг 1: разместите Actor ProxyMesh
- Добавьте Actor
ALCC2ProxyMeshиз панели плагина LCC4Unreal в редакторе - Назначьте StaticMesh его компоненту
StaticMeshComponent(источник любой, см. раздел выше) - Скорректируйте положение ProxyMesh так, чтобы он перекрывался с содержимым 3DGS в пространстве

Размещение Actor ALCC2ProxyMesh в сцене
Шаг 2: включите режим ProxyMesh
- Выберите Actor конвейера LCC2 (
ALCC2Actor/ASogActor/ASpzActor/APlyActor) - Найдите в панели Details параметр LightMode и измените его на Lit
- Найдите в панели Details категорию Lighting у LCC2Component
- Установите
NormalModeвProxyMesh

Включение Lit и установка NormalMode в ProxyMesh
Шаг 3: проверка
- Измените направление освещения сцены и посмотрите, появляется ли у 3DGS самозатенение
- Убедитесь, что прокси-меш скрыт в итоговом изображении

Результат освещения после того, как ProxyMesh даёт реальные нормали
Пример использования ProxyMesh

Процесс настройки ProxyMesh и результат освещения
ALCC2ProxyMesh
Прокси-Actor, используется в паре с Actor конвейера LCC2 при NormalMode = ProxyMesh.
Свойства
| Свойство | Описание |
|---|---|
| StaticMeshComponent | Статический меш, дающий глубину и нормали сцены |
Преобразование по умолчанию
- Масштаб (100, 100, 100): единица меша по умолчанию — метры, а UE использует сантиметры
- Поворот (0, 180, 0): компенсирует противоположное направление оси вперёд у конвейера создания меша относительно UE
Поведение
- При корректном StaticMesh автоматически включает рендеринг CustomDepth
- При пустом StaticMesh записывает предупреждение и отключает CustomDepth
Проверка лицензии
Режим ProxyMesh требует лицензии редакции Pro, см. Редакции и лицензирование. Без лицензии происходит автоматический откат к режиму Fixed, а сохранённое значение свойства не изменяется.
Переключение во время выполнения
NormalMode можно изменить во время выполнения из Blueprint или C++, изменение вступает в силу на следующем кадре.
Использование в Blueprint
Создание ProxyMesh
SpawnActor->Class: ALCC2ProxyMesh
→ Set the StaticMesh of StaticMeshComponent
→ Adjust the position to align with the 3DGS content
Переключение режима
LCC2Component->NormalMode = ProxyMesh
Рекомендации
- Охват меша: убедитесь, что прокси-меш покрывает ту же область пространства, что и содержимое 3DGS.
- Точность меша: достаточно упрощённого приближения геометрии сцены, высокое число полигонов не нужно.
- Несколько Actor: можно разместить несколько Actor
ALCC2ProxyMeshдля разных областей. - Явная привязка не нужна: ProxyMesh не нужно связывать с конкретным Actor, объединение в пару происходит автоматически.
- Обратная совместимость: проекты, не использующие ProxyMesh, ведут себя точно так же, как до обновления, без дополнительных издержек.
Устранение неполадок
ProxyMesh не даёт результата
- Убедитесь, что
NormalModeустановлен вProxyMesh - Убедитесь, что лицензия действительна
- Убедитесь, что Actor ProxyMesh назначен корректный StaticMesh
- Убедитесь, что ProxyMesh перекрывается с содержимым 3DGS в пространстве
Предупреждение «has a null StaticMesh»
Назначьте StaticMesh Actor ALCC2ProxyMesh. Предупреждение ограничено по частоте и выдаётся только один раз на экземпляр.
В итоговом изображении виден цвет белой заготовки
- Убедитесь, что хотя бы один LCC2Component находится в режиме ProxyMesh
- Если сопоставление глубины слишком строгое, скорректируйте
LCC2.ProxyMeshDepthEpsilon
Освещение выглядит неправильно
- Проверьте, являются ли нормали прокси-меша разумным приближением фактической геометрии сцены
Тени появляются только вблизи и обрезаются в отдалении
Это проблема самого движка. Выберите Actor ProxyMesh, выключите и снова включите Far Shadow у StaticMeshComponent, чтобы восстановить полные тени.