Руководство по разработке для Pico 4 Ultra
Рабочий процесс разработки LCC для Pico 4 Ultra по сути такой же, как официальный процесс создания VR-проектов PICO; см. документацию PICO Unity Integration SDK. Это руководство на его основе объясняет, как интегрировать LCC Unity SDK для рендеринга сцен 3DGS.
Требования к версиям
Версии программного обеспечения и пакетов, используемые в этом руководстве, перечислены ниже. Рекомендуется разрабатывать с теми же версиями; другие непротестированные версии могут иметь проблемы с совместимостью:
| Программное обеспечение / Пакет | Версия | Описание |
|---|---|---|
| Unity | v2022.3.62f3 | Используется Unity 2022 LTS |
| PICO Unity Integration SDK | v3.4.0 | Получен из официального канала PICO |
| LCC Unity SDK | v2.1.27 и новее | Версия, поддерживающая Built-in; загрузите версию, совместимую с Unity 2022 LTS |
Более подробные требования к аппаратному и программному обеспечению см. в разделе Требования к среде разработки.
Примечание:
- Поскольку PICO Unity Integration SDK имеет серьёзные проблемы с производительностью на конвейере URP, рекомендуется рендер-конвейер Built-in; см. его известные проблемы.
- Если при тестировании с Unity v6000.0.69f1 приложение зависает или аварийно завершается, переключитесь на Unity v2022.3 LTS: устройства серии PICO 4 имеют проблемы с совместимостью с приложениями, использующими Unity 6 и Vulkan вместе; см. его известные проблемы.
- Версия Unity, версия PICO SDK и версия LCC SDK влияют на рендеринг и производительность; старайтесь сохранять версии программного обеспечения в соответствии с этим руководством.
Рабочий процесс разработки
Шаг 1: Создайте проект
В шаблоне проекта выберите тип 3D (Built-in Render Pipeline). Поскольку PICO Unity Integration SDK имеет серьёзные проблемы с производительностью на конвейере URP, не выбирайте конвейер URP, как показано ниже:

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

Переключение платформы на Android в Build Profiles
Шаг 3: Импортируйте PICO Unity Integration SDK
Загрузите PICO Unity Integration SDK с официального сайта PICO и установите его, следуя руководству PICO; также можно импортировать его напрямую из GitHub по адресу https://github.com/Pico-Developer/PICO-Unity-Integration-SDK.git. В этом руководстве используется версия v3.4.0, как показано ниже:

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

Импорт LCC Unity SDK через Install package from disk
Шаг 5: Настройте среду Unity
Настройте XR Plug-in Management
В строке меню Unity выберите File → Project Settings, выберите XR Plug-in Management слева и отметьте Initialize XR on Startup на вкладке платформы Android, как показано ниже:

Отметка Initialize XR on Startup в XR Plug-in Management
Выберите пункт PICO в разделе XR Plug-in Management и задайте для Render Mode платформы Android значение MultiView, как показано ниже:

Установка PICO Render Mode в значение MultiView
Выберите пункт Project Validation в разделе XR Plug-in Management и нажмите Fix All, чтобы завершить необходимые настройки (это также можно пропустить и создать вручную позже), как показано ниже:

Нажатие Fix All в Project Validation
Примечание:
- Нажатие Fix All создаёт необходимые GameObject в текущей открытой сцене, поэтому вам нужно удалить Main Camera и Directional Light в сцене.
- В этом примере исправляется только UIOrientation.LandscapeLeft; всё остальное создаётся вручную.
Настройте Keystore
Для разработки под PICO требуется Keystore. Перейдите в Player → вкладка Android → Publishing Settings → Keystore Manager, создайте новый Keystore и завершите настройки, как показано ниже:

Создание нового Keystore в Keystore Manager
Задайте название компании и название продукта
Разработка под PICO не допускает значение defaultCompany по умолчанию. На вкладке Player задайте правильные Company Name и Product Name, как показано ниже:

Задание Company Name и Product Name
Настройте параметры качества
В Project Settings выберите вкладку Quality и задайте Anti Aliasing = Disabled, Resolution Scaling Fixed DPI Factor = 0.7 и VSync Count = Don't Sync, как показано ниже:

Отключение сглаживания и настройка DPI Factor и VSync на вкладке Quality
Заполните AppID
В меню Unity выберите PICO → Platform → Platform Setting, чтобы открыть панель настроек, и введите AppID, запрошенный на платформе разработчика PICO, в поле Paste your App ID here; см. Создание учётной записи разработчика, организации и приложения.

Ввод AppID в PICO Platform Setting
Настройте Graphics
В Project Settings выберите вкладку Graphics, выберите платформу Android и настройте, как показано ниже:

Настройка платформы Android на вкладке Graphics
Настройте Player
В Project Settings выберите вкладку Player, выберите платформу Android, задайте Color Space = Gamma, снимите флажок Auto Graphics API и оставьте только Vulkan, остальные настройки — как показано ниже:

Установка Color Space в значение Gamma и сохранение только Vulkan для графического API
Прокрутите вниз на текущей вкладке и задайте Minimum API Level = Android 10.0, Scripting Backend = IL2CPP, API Compatibility Level = .NET Standard 2.1 и Target Architectures = ARM64, остальные настройки — как показано ниже:

Настройка Minimum API Level, Scripting Backend, API Compatibility Level и Target Architectures
Продолжите прокрутку вниз на текущей вкладке и задайте Active Input Handling = Input System Package (New), остальные настройки — как показано ниже:

Установка Active Input Handling в значение Input System Package (New)
Шаг 6: Создайте сцену
Создайте совершенно новую сцену в Unity и удалите Main Camera и Directional Light. Щёлкните правой кнопкой мыши в пустой области окна Hierarchy и выберите XR → XR Origin (VR) во всплывающем меню, чтобы создать необходимые объекты XR.
Выберите объект XR Origin (VR) и добавьте компонент PXR_Manager через Add Component в окне Inspector и настройте его свойства, как показано ниже:

Добавление и настройка компонента PXR_Manager на XR Origin (VR)
Выберите объект XR Origin (VR) и в компоненте XR Origin окна Inspector задайте Tracking Origin Mode значение Floor, остальные свойства — как показано ниже:

Установка Tracking Origin Mode компонента XR Origin в значение Floor
Выберите Main Camera (дочерний объект второго уровня у XR Origin (VR)) и задайте свойства компонента Camera в окне Inspector, как показано ниже:

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

Создание пустого объекта LCCManager и прикрепление скрипта LCCManager
В окне Hierarchy щёлкните правой кнопкой мыши и выберите Create Empty, чтобы создать ещё один пустой объект с именем 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;
using UnityEngine.XR;
public class LCCRenderer : MonoBehaviour
{
public LCCManager m_manager;
public string m_FilePath;
private LCCCore.Renderer m_renderer;
private void Awake()
{
XRSettings.eyeTextureResolutionScale = 0.8f; // Снижаем разрешение текстуры для повышения производительности
}
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.Pico);
m_renderer = m_manager.GetRender(this.gameObject.transform);
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 код использует макросы компиляции для различения среды выполнения: в редакторе используется путь, заданный через m_FilePath; на устройстве Android используется источник данных на самом устройстве. Данные на устройстве размещаются следующим образом:
- Сначала запустите упакованное приложение один раз на устройстве PICO.
- После установки приложения перейдите в его каталог данных (обычно хранилище устройства PICO → Android → data → BundleID приложения → Files; конкретный каталог см. в пути установки приложения Android) и создайте папку
LccDataв подкаталоге Files. - Скопируйте все исходные данные LCC в папку
LccData.
Примечание:
- На практике рекомендуется размещать источник данных приложения PICO на сервере, а не упаковывать его непосредственно в приложение.
- Устройство Pico 4 Ultra одновременно отображает на экране около 700 000 гауссовых примитивов, что примерно на два порядка меньше, чем ~25 миллионов на PC. Оно в основном рекомендуется для рендеринга и отображения небольших сцен и одиночных объектов; большие сцены плавнее отображаются через стриминг с PC.
- При рендеринге больших LCC-сцен рекомендуется задать StartLOD равным
2и отключить отображение данных окружения (как в примере кода).
Связанные ссылки
- Информацию о настройке проекта и оптимизации производительности см. в Руководство по оптимизации настроек проекта и Руководство по настройке параметров производительности рендеринга.
- Для других рабочих процессов разработки PICO см. официальную документацию: Документация разработчика PICO.