Руководство по разработке переключения режима рендеринга Mip
Mip и Non-Mip — это два технических пути реконструкции и рендеринга 3DGS. Эффект рендеринга наилучший, когда реконструкция и рендеринг используют один и тот же технический путь. LCC Unity SDK поддерживает динамическое переключение режима рендеринга во время выполнения; полные шаги описаны ниже.
Шаг 1: Создайте сцену и GameObject
Создайте совершенно новую сцену в Unity. Unity по умолчанию создаёт Main Camera и Directional Light.
Настройте Main Camera
Выберите Main Camera в окне Hierarchy и задайте его свойства в окне Inspector, как показано ниже.

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

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

Создание 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: Прикрепите скрипт и настройте свойства
- Прикрепите скрипт
MipSwitch.csк GameObject LCCManager в окне Hierarchy. - В окне Inspector перетащите GameObject LCCManager на свойство Manager скрипта.
- Заполните путь к файлу LCC в свойстве File Path скрипта.
- Перетащите кнопку BtnMipSwitch на свойство Btn Mip Switch скрипта.

Прикрепление скрипта MipSwitch и настройка свойств Manager, File Path и BtnMipSwitch
Шаг 4: Запустите
Нажмите кнопку Play в окне Game, затем нажмите кнопку BtnMipSwitch, чтобы увидеть переключение рендеринга сцены между режимами 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 отключает мипмапы.
| Параметр | Тип | Описание |
|---|---|---|
_mipMode | MipMode | Целевой режим, либо 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) вызывается перед загрузкой данных.
| Параметр | Тип | Описание |
|---|---|---|
_isEditor | bool | Включать ли режим редактора |
Пример использования:
m_manager.SetEditorMode(true);
Примечания:
- Поддерживается только на платформах PC / Mac.