多场景混合渲染开发指南
多场景混合渲染指同时创建多个 LCC 场景,并实时混合渲染这些场景,实现正确的遮挡和混合。为独立控制每一个参与渲染的LCC场景,需要创建多个 Renderer,并让每个 Renderer 附属到一个独立的 GameObject 上,这样可以独立控制每个 LCC 场景的 Transform。
步骤 1:创建场景与游戏对象
在 Unity 中创建一个全新的场景,Unity 默认会创建 Main Camera 和 Directional Light。
创建 LCCManager
在 Hierarchy 窗口空白处单击鼠标右键,在弹出的菜单中选择 Create Empty,创建一个空游戏对象,命名为 LCCManager,将其 Transform 归一,并通过 Add Component 为其添加 LCCManager 脚本。

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

创建 LCCRenderer01 并设置 Transform(Rotation.x = -90、Scale.x = -1)
创建 LCCRenderer02
以同样的方式再创建一个空游戏对象,命名为 LCCRenderer02,同样将其 Transform 设置为 Rotation.x = -90、Scale.x = -1。

创建 LCCRenderer02 并设置 Transform(Rotation.x = -90、Scale.x = -1)
注意:
LCCRenderer 游戏对象的 Transform 设置(Rotation.x = -90、Scale.x = -1)是与 LCC 数据坐标系的对齐。关于坐标系对齐的详细说明,参见 Unity SDK 简介 中的「LCC 数据坐标系」。
步骤 2:编写多场景渲染脚本
新建一个 C# 脚本,命名为 MultiRenderer.cs,代码如下:
using LCCCore;
using UnityEngine;
public class MultiRenderer : MonoBehaviour
{
public LCCManager m_manager;
public string m_FilePath01;
public Transform m_transform01;
public string m_FilePath02;
public Transform m_transform02;
private LCCCore.Renderer m_renderer01;
private LCCCore.Renderer m_renderer02;
private int m_currentFileIndex = 0;
void Start()
{
m_manager.SetPlatformType(PlatformType.PC);
// 设置为 MultiRender 模式,允许多个 Renderer 同时激活并混合渲染
m_manager.SwitchRenderPass(ActiveRenderMode.MultiRender);
Debug.Log("Started ");
m_renderer01 = m_manager.GetRender(m_transform01);
m_renderer02 = m_manager.GetRender(m_transform02);
m_currentFileIndex = 0;
m_renderer01.Load(m_FilePath01, onProgress, onComplete);
m_currentFileIndex = 1;
m_renderer02.Load(m_FilePath02, onProgress, onComplete);
}
private void onProgress(float _progress)
{
Debug.Log($"[LCCRenderer] file {m_currentFileIndex} load progress: {_progress:P1}");
}
private void onComplete()
{
Debug.Log($"[LCCRenderer] file {m_currentFileIndex} loaded");
}
}
步骤 3:挂载脚本并配置属性
- 将
MultiRenderer.cs脚本挂载到 Hierarchy 窗口中的 LCCManager 游戏对象上。 - 在 Inspector 窗口中,按下表完成引用与路径的赋值:
| 脚本属性 | 赋值 |
|---|---|
| Manager | 将 LCCManager 游戏对象拖动到该属性上 |
| Transform01 | 将 LCCRenderer01 游戏对象拖动到该属性上 |
| Transform02 | 将 LCCRenderer02 游戏对象拖动到该属性上 |
| File Path01 | 第一个 LCC 数据源的路径 |
| File Path02 | 第二个 LCC 数据源的路径 |

在 Inspector 中配置 MultiRenderer 脚本的引用与数据路径
步骤 4:运行
点击 Game 窗口中的 Play 按钮,即可看到两个 LCC 场景同时混合渲染。改变 LCCRenderer01 或 LCCRenderer02 游戏对象的 Transform 值,每个渲染中的场景会实时产生变化。

运行后两个 LCC 场景同时混合渲染
关键点
开发多 LCC 场景混合渲染有两个关键点:
- 切换到 MultiRender 模式:通过
m_manager.SwitchRenderPass(ActiveRenderMode.MultiRender);允许多个 LCC 场景混合渲染。默认为SingleRender模式,不允许多个 LCC 场景混合渲染。 - 每个 Renderer 附属到独立的 GameObject:通过
GetRender(Transform)让每个 Renderer 绑定到一个独立的游戏对象上,从而可以独立控制每个 LCC 场景的 Transform。