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

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

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

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

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

      • Объединение нескольких крупных моделей 3DGS
  • 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
    • Unity

      • Введение в Unity SDK
      • Технические возможности
      • Требования к среде разработки
      • Руководство по быстрому старту для PC
      • Руководство по оптимизации настроек проекта
      • Руководство по разработке для Pico 4 Ultra
      • Руководство по стримингу Pico 4 Ultra с PC
      • Руководство по разработке для Quest 3
      • Руководство по стримингу Quest 3 с PC
      • Руководство по разработке OpenXR
      • Руководство по бизнес-стримингу Pico 4 Ultra
      • Глоссарий
      • FAQ
      • Свяжитесь с нами
      • Руководство по разработке функций

        • Руководство по разработке смешанного рендеринга нескольких сцен
        • Руководство по разработке приёма теней
        • Руководство по разработке освещения в реальном времени
        • Руководство по разработке многокамерного рендеринга
        • Руководство по разработке рендеринга изображений высокого разрешения
        • Руководство по разработке совместимости форматов данных LCC и LCC2
        • Руководство по разработке эффекта загрузки
        • Руководство по разработке переключения режима рендеринга Mip
        • Руководство по разработке привязки к рёбрам и углам
        • Руководство по разработке проецируемых декалей
        • Руководство по разработке видеопроецируемой декали
        • Руководство по разработке подсветки
        • Руководство по разработке обрезки в реальном времени
        • Руководство по разработке коррекции цвета
        • Руководство по разработке получения данных Mesh сцены
        • Руководство по разработке в режиме редактора
        • Руководство по настройке параметров производительности рендеринга
        • Руководство по разработке совместной упаковки приложения и данных
        • Руководство по разработке системы коллизий
        • Руководство по проблемам с разрешениями при разработке на macOS
        • Руководство по разработке компиляции и упаковки для устройств iOS
      • Справочник по API

        • LCCManager
        • Renderer
        • Типы данных
      • Журнал изменений

        • v2.3.0
        • v2.2.10
        • v2.2.0
        • v2.1.19
        • v2.0.14

Руководство по разработке для Quest 3

Рабочий процесс разработки LCC для Quest 3 немного отличается от официального процесса создания VR-проектов Meta: официальные изменения конфигурации Unity от Meta сделают рендеринг LCC несовместимым с рекомендуемым рабочим процессом в их документации по разработке. См. официальный рабочий процесс Meta в Set up Unity for XR development. На основе этого рабочего процесса данное руководство объясняет, как интегрировать LCC Unity SDK для рендеринга сцен 3DGS.

Требования к версиям

Версии программного обеспечения и плагинов, используемые в этом руководстве, приведены ниже. Рекомендуется разрабатывать с теми же версиями; другие непротестированные версии могут иметь проблемы с совместимостью:

Программное обеспечение / ПлагинВерсия
Unityv6000.0.69f1
Meta XR All-in-One SDKv205.0.0
LCC Unity SDKv2.1.35 и выше

Примечание:

  1. Meta SDK поддерживает только цветовое пространство Linear для URP, и LCC-сцены, отрендеренные в этом цветовом пространстве, будут выглядеть слегка выцветшими.
  2. Версия Unity, версия Meta SDK и версия LCC SDK влияют на рендеринг и производительность, поэтому старайтесь сохранять версии программного обеспечения в соответствии с этим руководством.

Рабочий процесс разработки

Шаг 1: Создайте проект URP

Выберите Universal 3D в шаблоне проекта, как показано ниже:

Создание проекта Universal 3D (URP)

Создание проекта Universal 3D (URP)

Шаг 2: Переключите платформу

После создания проекта выберите File → Build Profiles в меню Unity, чтобы открыть окно сборки, и переключите платформу на Android, как показано ниже:

Переключение платформы на Android в Build Profiles

Переключение платформы на Android в Build Profiles

Шаг 3: Импортируйте Unity OpenXR

Откройте окно UPM через меню Unity Window → Package Manager, выберите Unity Registry в левом списке, введите OpenXR в поле поиска, выберите OpenXR Plugin из результатов поиска и установите его, как показано ниже:

Установка OpenXR Plugin из Unity Registry

Установка OpenXR Plugin из Unity Registry

Шаг 4: Импортируйте XR Interaction Toolkit

Выберите Unity Registry в левом списке, введите XR в поле поиска, выберите XR Interaction Toolkit из результатов поиска и установите его, как показано ниже:

Установка XR Interaction Toolkit из Unity Registry

Установка XR Interaction Toolkit из Unity Registry

Шаг 5: Импортируйте Meta XR All-in-One SDK

Meta XR All-in-One SDK — это набор инструментов XR-разработки Meta; см. Meta XR All-in-One SDK (UPM).

Перед использованием этого SDK добавьте его в личные ассеты в Unity Asset Store: https://assetstore.unity.com/packages/tools/integration/meta-xr-all-in-one-sdk-269657. Затем откройте UPM через Window → Package Manager, выберите My Assets слева, введите Meta XR в поле поиска и установите Meta XR All-in-One SDK, как показано ниже:

Установка Meta XR All-in-One SDK из My Assets

Установка Meta XR All-in-One SDK из My Assets

Шаг 6: Импортируйте LCC Unity SDK

Откройте окно UPM через меню Unity Window → Package Manager, нажмите + слева, выберите Install package from disk из выпадающего меню, найдите LCC Unity SDK и выберите файл package.json для импорта, как показано ниже:

Импорт LCC Unity SDK через Install package from disk

Импорт LCC Unity SDK через Install package from disk

После выполнения описанных выше шагов перезапустите Unity, прежде чем переходить к последующим настройкам.

Шаг 7: Настройте среду Unity

Настройте XR Plug-in Management

В строке меню Unity выберите File → Project Settings, выберите XR Plug-in Management слева и отметьте Initialize XR on Startup для обеих платформ — Desktop и Android, как показано ниже:

Отметка Initialize XR on Startup на платформе Desktop

Отметка Initialize XR on Startup на платформе Desktop

Отметка Initialize XR on Startup на платформе Android

Отметка Initialize XR on Startup на платформе Android

Выберите пункт OpenXR в разделе XR Plug-in Management и задайте для Render Mode обеих платформ — Desktop и Android — значение Multi-pass, как показано ниже:

Установка OpenXR Render Mode в значение Multi-pass

Установка OpenXR Render Mode в значение Multi-pass

Примечание: Meta XR All-in-One SDK изменит значение Render Mode; перед сборкой убедитесь, что это значение равно Multi-pass.

Настройте Player (платформа Desktop)

Выберите Player слева в Project Settings, переключитесь на платформу Desktop, разверните раздел Other Settings, снимите флажок Auto Graphics API, задайте для Graphics APIs значения Vulkan, Direct3D12, Direct3D11 и удалите остальные графические API; задайте Color Space = Linear, как показано ниже:

Настройка графических API и цветового пространства Linear на платформе Desktop

Настройка графических API и цветового пространства Linear на платформе Desktop

Настройте Player (платформа Android)

Выберите Player слева в Project Settings, переключитесь на платформу Android, разверните раздел Other Settings, снимите флажок Auto Graphics API, задайте для Graphics APIs значение Vulkan и удалите остальные графические API; задайте Color Space = Linear (Meta SDK поддерживает только цветовое пространство Linear), как показано ниже:

Настройка графического API Vulkan и цветового пространства Linear на платформе Android

Настройка графического API Vulkan и цветового пространства Linear на платформе Android

Задайте Company Name и Product Name

На вкладке Player правильно задайте Company Name и Product Name, как показано ниже:

Задание Company Name и Product Name

Задание Company Name и Product Name

Задайте скриптовый бэкенд и ввод для платформы Android

Прокрутите вниз на вкладке Other Settings платформы Android и задайте Minimum API Level = Android 12L (API Level 32) или выше, Scripting Backend = IL2CPP, Target Architectures = ARM64, Active Input Handling = Input System Package (New), как показано ниже:

Настройка Minimum API Level, Scripting Backend, Target Architectures и Active Input Handling

Настройка Minimum API Level, Scripting Backend, Target Architectures и Active Input Handling

Проверьте Graphics и Quality

Выберите Graphics слева в Project Settings и проверьте Render Asset, соответствующий Default Render Pipeline, используемому платформой Mobile, — Mobile_RPAsset в этом примере, как показано ниже:

Проверка Render Asset для Default Render Pipeline на платформе Mobile

Проверка Render Asset для Default Render Pipeline на платформе Mobile

Выберите Quality слева в Project Settings, проверьте Render Asset, соответствующий Default Render Pipeline, используемому платформой Mobile (Mobile_RPAsset в этом примере), задайте Resolution Scaling Fixed DPI Factor = 0.7, VSync Count = Don't Sync, как показано ниже:

Настройка DPI Factor и VSync в Quality

Настройка DPI Factor и VSync в Quality

Настройте Render Asset

Найдите Render Asset, соответствующий Default Render Pipeline, используемому платформой Mobile (Mobile_RPAsset в этом примере). После щелчка по нему Asset будет найден в окне проекта (Project). Выберите Asset, затем в окне свойств (Inspector): снимите флажки Depth Texture, Opaque Texture, HDR; задайте Anti Aliasing (MSAA) = Disabled, Render Scale = 0.7, Upscaling Filter = Automatic, как показано ниже:

Отключение Depth/Opaque Texture, HDR, MSAA и настройка Render Scale в Render Asset

Отключение Depth/Opaque Texture, HDR, MSAA и установка Render Scale = 0.7 в Render Asset

Найдите соответствующий Renderer для этого Render Asset, — Mobile_Renderer (Universal Renderer Data) в этом примере, — и задайте его свойства в окне свойств (Inspector), как показано ниже:

Настройка свойств Mobile_Renderer (Universal Renderer Data)

Настройка свойств Mobile_Renderer (Universal Renderer Data)

Project Validation

Выберите XR Plug-in Management слева в Project Settings, затем выберите Project Validation. Исправьте отмеченные красным элементы проверки — нажмите кнопку Fix справа от каждого красного элемента, чтобы исправить его; жёлтые предупреждения можно исправить по мере необходимости или пока оставить без обработки. До обработки, как показано ниже:

Project Validation до обработки (присутствуют отмеченные красным элементы)

Project Validation до обработки (присутствуют отмеченные красным элементы)

После обработки, как показано ниже:

Project Validation после обработки (отмеченные красным элементы исправлены)

Project Validation после обработки (отмеченные красным элементы исправлены)

Шаг 8: Создайте сцену

Этот пример начинается с совершенно новой сцены (Scene). После создания сцены Unity удалите GameObject Main Camera в окне иерархии (Hierarchy), затем щёлкните правой кнопкой мыши в пустой области окна и выберите XR → XR Origin (VR) во всплывающем меню, как показано ниже:

Создание XR Origin (VR) через контекстное меню

Создание XR Origin (VR) через контекстное меню

Шаг 9: Настройте сцену

Выберите GameObject XR Origin (VR) в окне иерархии (Hierarchy) и в компоненте XR Origin окна свойств (Inspector) задайте Tracking Origin Mode значение Floor, как показано ниже:

Установка Tracking Origin Mode XR Origin в значение Floor

Установка Tracking Origin Mode XR Origin в значение Floor

Выберите GameObject Main Camera под XR Origin (VR) в окне иерархии (Hierarchy) и задайте свойства Camera в окне свойств (Inspector):

СвойствоРекомендуемое значениеОписание
Field of View60Поле зрения (FOV)
Clipping Planes → Near0.2 ~ 0.3Ближняя плоскость отсечения
Clipping Planes → Far3000 ~ 5000Дальняя плоскость отсечения, охватывающая крупномасштабные сцены
Anti-aliasingNo Anti-aliasingСглаживание отключено по умолчанию
Opaque TextureOffВыключено по умолчанию
Depth TextureOffВыключено по умолчанию
Background TypeSolid ColorРекомендуется сплошной цвет
BackgroundBlackЦвет фона по умолчанию рекомендуется чёрный
HDR RenderingOffВыключено по умолчанию
MSAAOffВыключено по умолчанию
URP Dynamic ResolutionOffВыключено по умолчанию

Остальные свойства — как показано ниже:

Настройка свойств компонента Camera для Main Camera под XR Origin (VR)

Настройка свойств компонента Camera для Main Camera под XR Origin (VR)

Шаг 10: Напишите код для загрузки сцены

Щёлкните правой кнопкой мыши Create Empty в окне иерархии (Hierarchy), чтобы создать пустой объект, назовите его LCCManager, нормализуйте его Transform и прикрепите к нему скрипт LCCManager, как показано ниже:

Создание пустого объекта LCCManager и прикрепление скрипта LCCManager

Создание пустого объекта LCCManager и прикрепление скрипта LCCManager

Щёлкните правой кнопкой мыши Create Empty в окне иерархии (Hierarchy), чтобы создать ещё один пустой объект, назовите его LCCRenderer и задайте его Transform Rotation.x = -90, Scale.x = -1, как показано ниже:

Создание пустого объекта LCCRenderer и настройка Transform для выравнивания системы координат

Создание пустого объекта LCCRenderer и установка Rotation.x = -90 и Scale.x = -1 для выравнивания систем координат

Rotation.x = -90 и Scale.x = -1 — это преобразование выравнивания из системы координат данных LCC (правая, ось Z вверх) в систему координат Unity (левая, ось Y вверх); см. раздел «Система координат данных LCC» в Введение в Unity SDK.

Напишите скрипт C# с именем LCCRenderer.cs со следующим кодом:

using LCCCore;
using UnityEngine;

public class LCCRenderer : MonoBehaviour
{
    public LCCManager m_manager;
    public string m_FilePath;

    private LCCCore.Renderer m_renderer;

    void Start()
    {
#if UNITY_EDITOR
        m_manager.SetPlatformType(PlatformType.PC);
        m_renderer = m_manager.GetRender(this.gameObject.transform);
        m_renderer.Load(m_FilePath, onProgress, onLoaded);
#else
        m_manager.SetPlatformType(PlatformType.Quest);
        m_renderer = m_manager.GetRender(this.gameObject.transform);
        m_renderer.Load(m_FilePath, onProgress, onLoaded);
        //m_renderer.Load($"{Application.persistentDataPath}/LccData/meta.lcc2", onProgress, onLoaded);
#endif
    }

    private void onProgress(float v)
    {
        Debug.Log("прогресс:" + v);
    }

    private void onLoaded()
    {
        m_manager.SetStartLod(2);
        m_renderer.SetEnvironment(false);
        Debug.Log("Данные загружены");
    }
}

Прикрепите скрипт к GameObject LCCRenderer в окне иерархии (Hierarchy), затем перетащите GameObject LCCManager на свойство Manager скрипта в окне свойств (Inspector) и, наконец, заполните путь к файлу LCC, затем соберите и запустите.

Прикрепление скрипта LCCRenderer к объекту и привязка Manager и пути к файлу

Прикрепление скрипта LCCRenderer к объекту и привязка Manager и пути к файлу

Для удобства отладки в редакторе Unity и сборки непосредственно на устройство Android код использует макросы компиляции для различения среды выполнения: в редакторе Unity используется платформа PC, а на устройстве Quest — платформа Quest.

Для устройств Quest рекомендуется размещать источник данных на сервере; во время тестирования можно также использовать источник данных непосредственно на устройстве. Конкретные шаги:

  1. Запустите собранное приложение на устройстве Quest один раз.
  2. После установки приложения войдите в его каталог данных (обычно хранилище устройства Quest → Android → data → BundleID приложения → Files; конкретный каталог см. в пути установки приложения Android) и создайте папку LccData в подкаталоге Files.
  3. Скопируйте все исходные данные LCC в папку LccData.

Примечание:

  1. На практике рекомендуется размещать источник данных приложения Quest на сервере, а не упаковывать его непосредственно в приложение.
  2. Возможность экранного рендеринга 3DGS на устройстве Quest 3 составляет около 700 000 гауссовых примитивов, что примерно на два порядка ниже возможностей PC — около 25 миллионов. Оно рекомендуется в основном для рендеринга и отображения небольших сцен и одиночных объектов; большие сцены будут плавнее при стриминге с PC.
  3. При рендеринге больших LCC-сцен рекомендуется задать StartLOD равным 2 и отключить отображение данных окружения (как показано в примере кода).

Связанные ссылки

  • Информацию о настройках проекта и оптимизации производительности см. в главах Руководство по оптимизации настроек проекта и Руководство по настройке параметров производительности рендеринга.
  • Для других рабочих процессов разработки Meta см. официальную документацию: Документация разработчика Meta.
  • Во время разработки для Quest задайте для платформы Desktop значение Render Mode = Multi-pass в Project Settings → OpenXR; в противном случае LCC-сцены не смогут рендериться нормально в Unity (включая и Editor, и Runtime).