多相機渲染開發指南
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 窗口空白處單擊鼠標右鍵,創建兩個額外的渲染相機,分別命名為 Camera01、Camera02,並按下圖設置這兩個相機的屬性。

設置 Camera01 的屬性

設置 Camera02 的屬性
本示例通過設置兩個相機的 Viewport Rect,將它們分別放置在主渲染窗口的左下角和右下角。
步驟 2:編寫多相機腳本
新建一個 C# 腳本,命名為 MultiCamera.cs,代碼如下:
using LCCCore;
using UnityEngine;
public class MultiCamera : MonoBehaviour
{
public LCCManager m_manager;
public string m_FilePath01;
public Camera m_camera01;
public Camera m_camera02;
public Transform m_transform01;
private LCCCore.Renderer m_renderer01;
private int m_currentFileIndex = 0;
void Start()
{
m_manager.SetPlatformType(PlatformType.PC);
m_manager.SwitchRenderPass(ActiveRenderMode.SingleRender);
Debug.Log("Started ");
m_renderer01 = m_manager.GetRender(m_transform01);
m_currentFileIndex = 0;
m_renderer01.Load(m_FilePath01, 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");
m_manager.AddCamera(m_camera01);
m_manager.AddCamera(m_camera02);
}
private void OnDestroy()
{
m_manager.RemoveCamera(m_camera01);
m_manager.RemoveCamera(m_camera02);
}
}
注意:
- 副相機需要在 LCC 場景加載完成後註冊,因此
AddCamera在onComplete回調中調用。- 腳本文件名必須與類名一致(
MultiCamera.cs對應class MultiCamera),否則無法掛載到遊戲對象上。- 主相機通過
SetMainCamera設置,副相機通過AddCamera添加;不能將主相機添加為副相機。
步驟 3:掛載腳本並設置屬性
- 將
MultiCamera.cs腳本掛載到 Hierarchy 窗口中的 LCCRenderer 遊戲對象上。 - 在 Inspector 窗口中,將 LCCManager 遊戲對象拖動到腳本的 Manager 屬性上。
- 將 Camera01 和 Camera02 遊戲對象分別拖動到腳本的 Camera01、Camera02 屬性上。
- 在腳本的 File Path01 屬性中填寫 LCC 文件的路徑地址。

掛載 MultiCamera 腳本並在 Inspector 中設置屬性
步驟 4:運行
在 Game 窗口中點擊 Play 按鈕,即可看到場景中多個渲染相機的實時渲染效果。

運行後多個渲染相機同時渲染的效果
關鍵步驟
實現多相機渲染的關鍵步驟:
- 確保場景處於單場景全量渲染模式(
SwitchRenderPass(ActiveRenderMode.SingleRender),且數據走 Full Load 路徑)。 - 主相機通過
SetMainCamera設置;副相機在場景加載完成後(onComplete回調中)通過AddCamera註冊。 - 通過每個相機的 Viewport Rect 控制其在屏幕上的渲染區域。
- 對象銷毀時(
OnDestroy)通過RemoveCamera移除副相機,避免懸空引用。
多相機渲染注意事項
僅支持全量渲染模式。 LCC SDK 當前只支持單場景下的全量渲染模式實現多相機渲染。出於性能優化考慮,分塊渲染模式下 SDK 只會加載和渲染相機視錐體內的可視數據;並且為追求高性能,CPU 側的場景節點數據篩選、數據組裝、以及數據從 CPU 上傳到 GPU 均採用異步操作,因此無法在同一幀中對多個相機分別進行數據處理和渲染。
確保場景處於全量渲染狀態。 為使用完整的多相機渲染功能,需要將場景配置為全量渲染(Full Load)模式:使用
ActiveRenderMode.SingleRender,並在 Renderer 上開啟全量渲染(Renderer.SetRenderAll(true),在下次Load()時生效)。關於渲染模式與性能參數的說明,參見 PC 快速開發入門指南。相機越多,性能開銷越大。 每增加一個渲染相機,渲染時就會增加一次完整的渲染流程,性能會相應下降。多相機渲染建議在高性能計算機設備上使用。
僅 PC/Mac 平台支持。
AddCamera/RemoveCamera僅在 PC/Mac 平台有效。
多相機相關 API
LCC Unity SDK 通過 LCCManager 提供了以下相機相關 API。副相機需要在 LCC 場景加載完成後(即在 onComplete 回調中)通過 AddCamera 註冊。
SetMainCamera
// 返回值:void
public void SetMainCamera(Camera _cam)
設置主渲染相機。LCC 使用此相機進行視錐裁剪、LOD 選擇、排序等操作。
| 參數 | 類型 | 說明 |
|---|---|---|
_cam | Camera | 主渲染相機,傳 null 可清除 |
調用示例:
m_manager.SetMainCamera(Camera.main);
說明:
- 必須在
Renderer.Load()之前設置。 - 切換相機時重新調用即可。
- 僅 PC/Mac 平台支持。
- 傳
null可清除主相機。
AddCamera
// 返回值:void
public void AddCamera(Camera _cam)
添加一個副相機。副相機參與渲染,但不影響 LOD 選擇。
| 參數 | 類型 | 說明 |
|---|---|---|
_cam | Camera | 副相機 |
調用示例:
m_manager.AddCamera(m_camera01);
說明:
- 僅 PC/Mac 平台支持。
- 不能將主相機添加為副相機。
- LOD 選擇僅由主相機決定,副相機復用主相機篩選出的數據渲染。
RemoveCamera
// 返回值:void
public void RemoveCamera(Camera _cam)
移除一個已添加的副相機。
| 參數 | 類型 | 說明 |
|---|---|---|
_cam | Camera | 要移除的副相機 |
調用示例:
m_manager.RemoveCamera(m_camera01);
說明:
- 僅 PC/Mac 平台支持。
- 建議在對象銷毀(
OnDestroy)時調用,清理副相機引用。