Mip 渲染模式切换开发指南
Mip 与 Non-Mip 是两种重建和渲染 3DGS 的技术路径。重建与渲染使用同一种技术路径时渲染效果最好。LCC Unity SDK 支持在运行时动态切换渲染模式,下面介绍完整步骤。
步骤 1:创建场景与游戏对象
在 Unity 中创建一个全新的场景,Unity 默认会创建 Main Camera 和 Directional Light。
设置 Main Camera
在 Hierarchy 窗口中选择 Main Camera,在 Inspector 窗口中按下图设置其属性。

设置 Main Camera 的属性
创建 LCCManager
在 Hierarchy 窗口空白处单击鼠标右键,在弹出的菜单中选择 Create Empty,创建一个空游戏对象,命名为 LCCManager,将其 Transform 归一,并通过 Add Component 为其添加 LCCManager 脚本。

创建 LCCManager 游戏对象并添加 LCCManager 脚本
创建 LCCRenderer
在 Hierarchy 窗口空白处单击鼠标右键,选择 Create Empty,创建一个空游戏对象,命名为 LCCRenderer,将其 Transform 设置为 Rotation.x = -90、Scale.x = -1。

创建 LCCRenderer 并设置 Transform(Rotation.x = -90、Scale.x = -1)
注意:
LCCRenderer 游戏对象的 Transform 设置(Rotation.x = -90、Scale.x = -1)是与 LCC 数据坐标系的对齐。关于坐标系对齐的详细说明,参见 Unity SDK 简介 中的「LCC 数据坐标系」。
创建切换按钮
在 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("Started ");
// 需要进入到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] file load progress: {_progress:P1}");
}
private void onComplete()
{
Debug.Log($"[LCCRenderer] file loaded");
}
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脚本挂载到 Hierarchy 窗口中的 LCCManager 游戏对象上。 - 在 Inspector 窗口中,将 LCCManager 游戏对象拖动到脚本的 Manager 属性上。
- 在脚本的 File Path 属性中填写 LCC 文件的路径地址。
- 将 BtnMipSwitch 按钮拖动到脚本的 Btn Mip Switch 属性上。

挂载 MipSwitch 脚本并设置 Manager、File Path 与 BtnMipSwitch 属性
步骤 4:运行
在 Game 窗口中点击 Play 按钮,然后点击 BtnMipSwitch 按钮,即可看到场景渲染在 Mip 与 Non-Mip 模式之间实时切换的效果。

运行后点击按钮实时切换 Mip / Non-Mip 渲染模式
选型建议
- 只有当重建 3DGS 与渲染 3DGS 使用同一种技术路径时,渲染效果最好。
- 切换到 Non-Mip 模式后,通常渲染细节表现更好,但渲染性能会有一定程度的影响。
Mip 相关 API
LCC Unity SDK 通过 LCCManager 提供了以下与 Mip 渲染模式切换相关的 API。
SetMipMode
// 返回值:void
public void SetMipMode(MipMode _mipMode)
切换 Mip 渲染模式。Mip 模式使用 mipmap 采样(默认),Non_Mip 模式禁用 mipmap。
| 参数 | 类型 | 说明 |
|---|---|---|
_mipMode | MipMode | 目标模式,取值 Mip 或 Non_Mip |
调用示例:
m_manager.SetMipMode(MipMode.Non_Mip); // 禁用 mipmap
m_manager.SetMipMode(MipMode.Mip); // 恢复 mipmap
说明:
- 若当前模式与传入模式相同则直接返回,无重复开销。
MipMode 枚举定义如下:
public enum MipMode { Mip, Non_Mip }
SetEditorMode
// 返回值:void
public void SetEditorMode(bool _isEditor)
开关编辑器模式。本示例在加载数据前调用 SetEditorMode(true)。
| 参数 | 类型 | 说明 |
|---|---|---|
_isEditor | bool | 是否开启编辑器模式 |
调用示例:
m_manager.SetEditorMode(true);
说明:
- 仅 PC / Mac 平台支持。