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

Руководство по разработке переключения режима рендеринга Mip

Mip и Non-Mip — это два технических пути реконструкции и рендеринга 3DGS. Эффект рендеринга наилучший, когда реконструкция и рендеринг используют один и тот же технический путь. LCC Unity SDK поддерживает динамическое переключение режима рендеринга во время выполнения; полные шаги описаны ниже.

Шаг 1: Создайте сцену и GameObject

Создайте совершенно новую сцену в Unity. Unity по умолчанию создаёт Main Camera и Directional Light.

Настройте Main Camera

Выберите Main Camera в окне Hierarchy и задайте его свойства в окне Inspector, как показано ниже.

Настройка свойств Main Camera

Настройка свойств Main Camera

Создайте LCCManager

Щёлкните правой кнопкой мыши в пустой области окна Hierarchy, выберите Create Empty во всплывающем меню, чтобы создать пустой GameObject, назовите его LCCManager, нормализуйте его Transform и добавьте к нему скрипт LCCManager через Add Component.

Создание GameObject LCCManager и добавление скрипта LCCManager

Создание GameObject LCCManager и добавление скрипта LCCManager

Создайте LCCRenderer

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

Создание LCCRenderer и настройка его Transform

Создание LCCRenderer и настройка его Transform (Rotation.x = -90, Scale.x = -1)

Примечание:

Настройки Transform GameObject LCCRenderer (Rotation.x = -90, Scale.x = -1) выравнивают его с системой координат данных LCC. Подробнее о выравнивании системы координат см. в разделе «Система координат данных LCC» документа Введение в Unity SDK.

Создайте кнопку переключения

Щёлкните правой кнопкой мыши в пустой области окна Hierarchy, выберите UI → Button во всплывающем меню, чтобы создать Button с именем BtnMipSwitch.

Шаг 2: Напишите скрипт для переключения режима рендеринга

Создайте новый скрипт C# с именем MipSwitch.cs со следующим кодом:

using LCCCore;
using UnityEngine;
using UnityEngine.UI;

public class MipSwitch : MonoBehaviour
{
    public LCCManager m_manager;
    public string m_FilePath;
    public Button m_BtnMipSwitch;
    private LCCCore.Renderer m_renderer;
    private MipMode m_mipMode;

    void Start()
    {
        m_manager.SetPlatformType(PlatformType.PC);
        Debug.Log("Запущено ");
        // Необходимо войти в режим Edit
        m_manager.SetEditorMode(true);
        m_mipMode = MipMode.Mip;
        m_BtnMipSwitch.onClick.AddListener(onMipSwitch);
        m_renderer = m_manager.GetRender(this.transform);
        m_renderer.Load(m_FilePath, onProgress, onComplete);
    }

    private void onProgress(float _progress)
    {
        Debug.Log($"[LCCRenderer] прогресс загрузки файла: {_progress:P1}");
    }

    private void onComplete()
    {
        Debug.Log($"[LCCRenderer] файл загружен");
    }

    private void onMipSwitch()
    {
        if (m_mipMode == MipMode.Mip)
        {
            m_mipMode = MipMode.Non_Mip;
        }
        else
        {
            m_mipMode = MipMode.Mip;
        }
        m_manager.SetMipMode(m_mipMode);
    }
}

Примечание:

В этом примере в Start выполняется инициализация значением MipMode.Mip и привязывается событие клика для BtnMipSwitch; каждый клик переключает между Mip и Non_Mip и сразу вступает в силу через SetMipMode().

Шаг 3: Прикрепите скрипт и настройте свойства

  1. Прикрепите скрипт MipSwitch.cs к GameObject LCCManager в окне Hierarchy.
  2. В окне Inspector перетащите GameObject LCCManager на свойство Manager скрипта.
  3. Заполните путь к файлу LCC в свойстве File Path скрипта.
  4. Перетащите кнопку BtnMipSwitch на свойство Btn Mip Switch скрипта.
Прикрепление скрипта MipSwitch и настройка Manager, File Path и BtnMipSwitch

Прикрепление скрипта MipSwitch и настройка свойств Manager, File Path и BtnMipSwitch

Шаг 4: Запустите

Нажмите кнопку Play в окне Game, затем нажмите кнопку BtnMipSwitch, чтобы увидеть переключение рендеринга сцены между режимами Mip и Non-Mip в реальном времени.

Нажатие кнопки переключает режим рендеринга Mip / Non-Mip в реальном времени после запуска

Нажатие кнопки переключает режим рендеринга Mip / Non-Mip в реальном времени после запуска

Рекомендации по выбору

  • Эффект рендеринга наилучший только тогда, когда реконструкция 3DGS и рендеринг 3DGS используют один и тот же технический путь.
  • После переключения в режим Non-Mip детализация рендеринга обычно лучше, но производительность рендеринга в некоторой степени снижается.

API, связанные с Mip

LCC Unity SDK предоставляет следующие API, связанные с переключением режима рендеринга Mip, через LCCManager.

SetMipMode

// Возвращаемое значение: void
public void SetMipMode(MipMode _mipMode)

Переключает режим рендеринга Mip. Режим Mip использует сэмплирование мипмапов (по умолчанию), а режим Non_Mip отключает мипмапы.

ПараметрТипОписание
_mipModeMipModeЦелевой режим, либо Mip, либо Non_Mip

Пример использования:

m_manager.SetMipMode(MipMode.Non_Mip); // отключить мипмапы
m_manager.SetMipMode(MipMode.Mip);     // восстановить мипмапы

Примечания:

  • Если текущий режим совпадает с переданным, метод сразу возвращается без повторных накладных расходов.

Перечисление MipMode определяется следующим образом:

public enum MipMode { Mip, Non_Mip }

SetEditorMode

// Возвращаемое значение: void
public void SetEditorMode(bool _isEditor)

Переключает режим редактора. В этом примере SetEditorMode(true) вызывается перед загрузкой данных.

ПараметрТипОписание
_isEditorboolВключать ли режим редактора

Пример использования:

m_manager.SetEditorMode(true);

Примечания:

  • Поддерживается только на платформах PC / Mac.