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

Руководство по разработке совместной упаковки приложения и данных

LCC Unity SDK поддерживает отделение приложения от данных. Однако при фактической разработке приложений иногда необходимо упаковать и опубликовать приложение вместе с данными сцены 3DGS. Этот документ знакомит с подходами совместной упаковки для PC и Android.

Динамическая загрузка данных во время выполнения на PC

SDK загружает данные во время выполнения через метод Load(); указанный путь должен быть абсолютным, например G:\Data\xxx.lcc2.

Для распространения приложения и данных вместе можно объединить путь выполнения приложения с относительным путём данных LCC-сцены в абсолютный путь следующим образом:

  1. Получите путь выполнения приложения через Unity Application.dataPath.
  2. Объедините относительный путь данных с путём выполнения в абсолютный путь к данным сцены 3DGS.

Пример кода следующий:

using UnityEngine;
using LCCCore;
using XGrids.LCC;

public class LCCRenderer : MonoBehaviour
{
    public LCCManager m_manager;
    public string m_FilePath;
    private LCCCore.Renderer m_renderer;

    void Start()
    {
        m_renderer = m_manager.GetRender(this.transform);

#if !UNITY_EDITOR
        string _dataPath = Application.dataPath;
        string _dataPath2 = _dataPath + "/data/meta.lcc2";   // Конкатенируем относительный путь к файлу LCC
        m_FilePath = _dataPath2.Replace('/', '\\');
#endif

        m_renderer.Load(m_FilePath, onLoadProgress, onLoadCallback);
    }
}

Примечание:

  • Объединение пути выше обёрнуто в #if !UNITY_EDITOR: в состоянии редактора Unity используется напрямую m_FilePath, указанный в Inspector (локальные данные разработки); только в опубликованном времени выполнения объединяется относительный путь в каталоге выполнения приложения.
  • В сборке PC Application.dataPath указывает на папку <AppName>_Data в каталоге приложения, поэтому относительный путь данных должен соответствовать месту, куда данные будут скопированы позже.
  • Пути Windows используют обратную косую черту \; в примере используется Replace('/', '\\') для их преобразования.

Копирование данных LCC-сцены в указанный каталог

После обычной сборки проекта Unity и компиляции/публикации приложения сгенерированная структура каталога приложения показана ниже.

Структура каталога приложения, сгенерированная после сборки и публикации Unity

Структура каталога приложения, сгенерированная после сборки и публикации Unity

Согласно относительному пути LCC data/meta.lcc2 в коде, необходимо скопировать данные LCC-сцены в соответствующее место в сгенерированном каталоге приложения, как показано ниже.

Копирование данных LCC-сцены в каталог приложения согласно относительному пути

Копирование данных LCC-сцены в каталог приложения согласно относительному пути

Упаковка всего каталога

Упакуйте весь каталог приложения (сжатие Zip) и распространите его нужным пользователям. После того как пользователь распакует его и запустит Viewer, данные сцены в указанном каталоге могут быть загружены.

Рабочий процесс упаковки Android

Android использует тот же подход, что и PC, но путь к данным требует небольшого изменения: используйте Application.persistentDataPath в качестве корневого каталога данных.

Измените скрипт рендеринга, чтобы объединить путь к данным с persistentDataPath. Обратите внимание, что тип платформы задаётся отдельно через SetPlatformType() (перед GetRender()), а Load() получает только путь и обратные вызовы:

void Start()
{
    // Тип платформы должен быть задан перед GetRender()
    m_manager.SetPlatformType(PlatformType.Pico);

    m_renderer = m_manager.GetRender(this.transform);
    m_renderer.Load(
        $"{Application.persistentDataPath}/LccData/meta.lcc2",
        onLoadProgress,
        onLoadCallback);
}

Шаги упаковки и развёртывания:

  1. Сохраните код и подключите мобильное устройство к компьютеру, где находится проект Unity, с помощью кабеля USB 3.0.
  2. В строке меню Unity выберите File → Build Settings → Build, чтобы получить APK.
  3. Скопируйте APK на мобильное устройство и установите его.
  4. После установки сначала один раз откройте приложение, чтобы система создала каталог для соответствующего имени пакета, затем закройте приложение.
  5. Создайте папку LccData в каталоге для соответствующего имени пакета и скопируйте данные LCC в эту папку (путь обычно — хранилище устройства Android → Android → data → BundleID приложения → Files; конкретный каталог см. в пути установки приложения Android).
  6. Снова откройте приложение, и содержимое LCC будет отображено на телефоне или VR-устройстве.
Создание папки LccData в каталоге имени пакета приложения Android и копирование данных

Создание папки LccData в каталоге имени пакета приложения Android и копирование данных LCC

Примечания

  • iOS не поддерживает описанный выше подход динамической загрузки из локального каталога. iOS не позволяет приложению читать все файлы в указанной папке; оно может читать только один указанный файл.
  • На mobile и VR рекомендуется размещать данные на сервере и загружать данные с сервера во время выполнения, а не упаковывать данные непосредственно в пакет приложения APK — последнее делает пакет приложения очень большим и раздутым.