Руководство по разработке для Quest 3
Рабочий процесс разработки LCC для Quest 3 немного отличается от официального процесса создания VR-проектов Meta: официальные изменения конфигурации Unity от Meta сделают рендеринг LCC несовместимым с рекомендуемым рабочим процессом в их документации по разработке. См. официальный рабочий процесс Meta в Set up Unity for XR development. На основе этого рабочего процесса данное руководство объясняет, как интегрировать LCC Unity SDK для рендеринга сцен 3DGS.
Требования к версиям
Версии программного обеспечения и плагинов, используемые в этом руководстве, приведены ниже. Рекомендуется разрабатывать с теми же версиями; другие непротестированные версии могут иметь проблемы с совместимостью:
| Программное обеспечение / Плагин | Версия |
|---|---|
| Unity | v6000.0.69f1 |
| Meta XR All-in-One SDK | v205.0.0 |
| LCC Unity SDK | v2.1.35 и выше |
Примечание:
- Meta SDK поддерживает только цветовое пространство Linear для URP, и LCC-сцены, отрендеренные в этом цветовом пространстве, будут выглядеть слегка выцветшими.
- Версия Unity, версия Meta SDK и версия LCC SDK влияют на рендеринг и производительность, поэтому старайтесь сохранять версии программного обеспечения в соответствии с этим руководством.
Рабочий процесс разработки
Шаг 1: Создайте проект URP
Выберите Universal 3D в шаблоне проекта, как показано ниже:

Создание проекта Universal 3D (URP)
Шаг 2: Переключите платформу
После создания проекта выберите File → Build Profiles в меню Unity, чтобы открыть окно сборки, и переключите платформу на Android, как показано ниже:

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

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

Установка 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
Шаг 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
После выполнения описанных выше шагов перезапустите 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 на платформе Android
Выберите пункт OpenXR в разделе XR Plug-in Management и задайте для Render Mode обеих платформ — Desktop и Android — значение 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
Настройте 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
Задайте Company Name и Product Name
На вкладке Player правильно задайте 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
Проверьте Graphics и Quality
Выберите Graphics слева в Project Settings и проверьте Render Asset, соответствующий Default Render Pipeline, используемому платформой Mobile, — Mobile_RPAsset в этом примере, как показано ниже:

Проверка 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
Настройте 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 = 0.7 в Render Asset
Найдите соответствующий Renderer для этого Render Asset, — Mobile_Renderer (Universal Renderer Data) в этом примере, — и задайте его свойства в окне свойств (Inspector), как показано ниже:

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

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

Project Validation после обработки (отмеченные красным элементы исправлены)
Шаг 8: Создайте сцену
Этот пример начинается с совершенно новой сцены (Scene). После создания сцены Unity удалите GameObject Main Camera в окне иерархии (Hierarchy), затем щёлкните правой кнопкой мыши в пустой области окна и выберите XR → 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
Выберите GameObject Main Camera под XR Origin (VR) в окне иерархии (Hierarchy) и задайте свойства Camera в окне свойств (Inspector):
| Свойство | Рекомендуемое значение | Описание |
|---|---|---|
| Field of View | 60 | Поле зрения (FOV) |
| Clipping Planes → Near | 0.2 ~ 0.3 | Ближняя плоскость отсечения |
| Clipping Planes → Far | 3000 ~ 5000 | Дальняя плоскость отсечения, охватывающая крупномасштабные сцены |
| Anti-aliasing | No Anti-aliasing | Сглаживание отключено по умолчанию |
| Opaque Texture | Off | Выключено по умолчанию |
| Depth Texture | Off | Выключено по умолчанию |
| Background Type | Solid Color | Рекомендуется сплошной цвет |
| Background | Black | Цвет фона по умолчанию рекомендуется чёрный |
| HDR Rendering | Off | Выключено по умолчанию |
| MSAA | Off | Выключено по умолчанию |
| URP Dynamic Resolution | Off | Выключено по умолчанию |
Остальные свойства — как показано ниже:

Настройка свойств компонента Camera для Main Camera под XR Origin (VR)
Шаг 10: Напишите код для загрузки сцены
Щёлкните правой кнопкой мыши Create Empty в окне иерархии (Hierarchy), чтобы создать пустой объект, назовите его LCCManager, нормализуйте его Transform и прикрепите к нему скрипт LCCManager, как показано ниже:

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

Создание пустого объекта 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 и пути к файлу
Для удобства отладки в редакторе Unity и сборки непосредственно на устройство Android код использует макросы компиляции для различения среды выполнения: в редакторе Unity используется платформа PC, а на устройстве Quest — платформа Quest.
Для устройств Quest рекомендуется размещать источник данных на сервере; во время тестирования можно также использовать источник данных непосредственно на устройстве. Конкретные шаги:
- Запустите собранное приложение на устройстве Quest один раз.
- После установки приложения войдите в его каталог данных (обычно хранилище устройства Quest → Android → data → BundleID приложения → Files; конкретный каталог см. в пути установки приложения Android) и создайте папку
LccDataв подкаталоге Files. - Скопируйте все исходные данные LCC в папку
LccData.
Примечание:
- На практике рекомендуется размещать источник данных приложения Quest на сервере, а не упаковывать его непосредственно в приложение.
- Возможность экранного рендеринга 3DGS на устройстве Quest 3 составляет около 700 000 гауссовых примитивов, что примерно на два порядка ниже возможностей PC — около 25 миллионов. Оно рекомендуется в основном для рендеринга и отображения небольших сцен и одиночных объектов; большие сцены будут плавнее при стриминге с PC.
- При рендеринге больших LCC-сцен рекомендуется задать StartLOD равным
2и отключить отображение данных окружения (как показано в примере кода).
Связанные ссылки
- Информацию о настройках проекта и оптимизации производительности см. в главах Руководство по оптимизации настроек проекта и Руководство по настройке параметров производительности рендеринга.
- Для других рабочих процессов разработки Meta см. официальную документацию: Документация разработчика Meta.
- Во время разработки для Quest задайте для платформы Desktop значение Render Mode = Multi-pass в Project Settings → OpenXR; в противном случае LCC-сцены не смогут рендериться нормально в Unity (включая и Editor, и Runtime).