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 с помощью меша LixelStudio

Плагин поддерживает гибридное переосвещение: используйте 3DGS вместе с мешем того же масштаба, чтобы 3DGS получил отклик на освещение, близкий к мешу, и мог давать самозатенение.

Результат зависит от геометрической точности меша под 3DGS. Чем лучше меш совпадает с 3DGS, тем достовернее отклик на освещение и тени.

Принцип работы и параметры см. в Прокси-меше, выбор режима нормалей — в Нормалях и освещении.

Какой меш выбрать

LCC Studio и LixelStudio оба создают меши, но назначение у них разное.

Меш LCC StudioМеш LixelStudio
Точность поверхностиГрубееБлиже к реальной форме
Размер файлаНебольшойБольшой
Подходит дляОпределения коллизийПереосвещения

Для коллизий достаточно меша LCC Studio, см. Коллизии. Для переосвещения выбирайте меш LixelStudio.

Меш LCC Studio:

Меш LCC Studio, общий вид
Меш LCC Studio, вблизи

Меш LixelStudio:

Меш LixelStudio, общий вид
Меш LixelStudio, вблизи

Шаг 1: соберите модели по частям в одну папку

LixelStudio экспортирует меши по частям. У крупной сцены получается много папок, в каждой — файл .obj и текстуры. Перед импортом в Unreal Engine их нужно объединить в один меш, иначе вы получите множество отдельных .obj.

Ниже показан порядок действий в Blender, любой другой трёхмерный редактор работает так же. Blender доступен на официальном сайте.

Blender не принимает набор папок целиком, поэтому файлы .obj, разбросанные по вложенным папкам, нужно сначала поднять на один уровень. Перетаскивать десятки папок вручную нереально, задачу решает одна команда PowerShell.

Откройте корневую папку со всеми вложенными папками, введите в адресной строке powershell и нажмите Enter. Терминал откроется в текущем каталоге.

Ввод powershell в адресной строке

Ввод powershell в адресной строке проводника

Скопируйте и вставьте следующую команду:

Get-ChildItem -Recurse -File | Move-Item -Destination .

Примечание: команда поднимает все файлы из вложенных папок в текущий каталог. Перед запуском убедитесь, что находитесь в нужной папке. Например, если в папке A находятся B и C, откройте PowerShell из адресной строки A: после выполнения все файлы из B и C окажутся в A.

Вложенные папки до запуска

Структура папок до запуска

Вставка команды

Вставка и выполнение команды

После вставки нажмите Enter. Это займёт несколько секунд. Новое приглашение командной строки означает, что команда выполнена.

Теперь всё содержимое поднято наверх. Откройте несколько вложенных папок и убедитесь, что они пусты.

Список файлов после извлечения

Все файлы .obj и текстуры собраны на одном уровне

Шаг 2: объедините в один файл в Blender

Нажмите Ctrl + A, чтобы выделить все файлы, и перетащите их в Blender.

Выделение всех файлов

Выделение всех файлов

Перетаскивание в Blender

Перетаскивание в Blender

Нажмите Import Wavefront OBJ для импорта. Чтобы ориентация была правильной, задайте Up Axis равным Z, а Forward Axis равным X.

Настройка ориентации при импорте

Up Axis задан как Z, Forward Axis как X

Теперь все части импортированы.

Импортированные части

Все части импортированы

Нажмите A, чтобы выделить все части, затем Ctrl + J, чтобы объединить их в один меш. У крупной сцены это займёт около минуты, дайте операции завершиться.

Объединённый меш

После объединения получается один меш

Примечание: если переосвещение нужно не для всей сцены, удалите ненужные части. Это повысит производительность в Unreal Engine.

Шаг 3: сократите вызовы рендеринга

Когда этот меш попадает в Unreal Engine для переосвещения, все его материалы оказываются ненужными. Изображение даёт 3DGS, прокси-меш участвует только в расчётах, а материалы бесполезны и расходуют ресурсы.

Каждая текстура меша LixelStudio в Unreal Engine — это один вызов рендеринга. При большом масштабе вызовов рендеринга получается очень много, и использование такого меша в качестве прокси напрямую приводит к рывкам.

Выберите меш в Collection и посмотрите количество вызовов рендеринга через консоль Python в Blender.

Консоль Python в Blender

Переключение на консоль Python

Вставьте следующую команду и нажмите Enter:

obj = bpy.context.object
print("Material slots:", len(obj.data.materials))
Вывод количества слотов материалов

Выведенное значение — это количество вызовов рендеринга

У меша на снимке 8859 вызовов рендеринга.

Чтобы сократить их число, удалите все существующие материалы и замените их одним:

import bpy

# Get the currently selected object in Blender
obj = bpy.context.object

# Make sure a valid Mesh object is selected
if obj is None or obj.type != "MESH":
    raise Exception("Please select a Mesh object first.")

# Create a new white clay material
mat = bpy.data.materials.new("M_White_Clay")
mat.use_nodes = True

# Configure the Principled BSDF shader settings
bsdf = mat.node_tree.nodes.get("Principled BSDF")
if bsdf:
    bsdf.inputs["Base Color"].default_value = (1, 1, 1, 1)  # White color
    bsdf.inputs["Roughness"].default_value = 1.0            # Fully rough / matte surface
    bsdf.inputs["Metallic"].default_value = 0.0             # Non-metallic material
    bsdf.inputs["Alpha"].default_value = 1.0                # Fully opaque

# Remove all existing material slots from the mesh
obj.data.materials.clear()

# Add the single new white material
obj.data.materials.append(mat)

# Assign every face to material slot 0
for poly in obj.data.polygons:
    poly.material_index = 0

# Print the result for verification
print("Done")
print("Material slots:", len(obj.data.materials))
print("Used material indices:", len(set(p.material_index for p in obj.data.polygons)))
print("Estimated draw calls:", len(set(p.material_index for p in obj.data.polygons)))

После выполнения убедитесь, что количество вызовов рендеринга снизилось до одного.

Вызовы рендеринга сокращены до одного

Вызовы рендеринга сокращены до одного

Шаг 4: импортируйте в Unreal Engine

Экспортируйте меш как .obj или .fbx и импортируйте его в Unreal Engine.

Импорт в Unreal Engine

Меш после импорта в Unreal Engine

Затем выполните шаги из Прокси-меша, чтобы разместить Actor ProxyMesh и задать режим нормалей ProxyMesh.

Если результат неверный, см. Устранение неполадок прокси-меша.