高清圖像渲染開發指南
LCC Unity SDK 支持高清圖像渲染,即渲染超過顯示器分辨率的場景圖像。例如顯示器分辨率為 1920×1080 時,LCC Unity SDK 依然可以渲染生成 3840×2160(4K)、2560×1440(2K)、1920×1080(1080p)、1280×720(720P)等各種分辨率的圖像。渲染出各類分辨率圖像後,即可用於製作高清圖片、高清視頻。下面通過一個渲染 4K 圖像並保存為 JPG 的示例,介紹實現高清圖像渲染的完整步驟。
步驟 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 數據座標系」。
步驟 2:編寫高清渲染腳本
新建一個 C# 腳本,命名為 HDRecord.cs,代碼如下:
using System.IO;
using System.Collections;
using LCCCore;
using UnityEngine;
public class HDRecord : MonoBehaviour
{
public LCCManager m_manager;
public string m_FilePath;
public Camera m_camera;
private LCCCore.Renderer m_renderer;
private const int HD_WIDTH = 3840;
private const int HD_HEIGHT = 2160;
private const string OUTPUT_DIR = @"G:\output";
void Start()
{
m_manager.SetPlatformType(PlatformType.PC);
m_manager.SwitchRenderPass(ActiveRenderMode.SingleRender);
if (m_camera == null)
m_camera = Camera.main;
m_manager.SetMainCamera(m_camera);
Debug.Log("[HDRecord] Started, loading data...");
m_renderer = m_manager.GetRender(this.transform);
m_renderer.Load(m_FilePath, onProgress, onComplete);
}
private void onProgress(float _progress)
{
Debug.Log($"[HDRecord] Load progress: {_progress:P1}");
}
private void onComplete()
{
Debug.Log("[HDRecord] Load complete, enabling 4K record mode...");
float verticalFov = m_camera.fieldOfView;
m_manager.SetRecordMode(true, new Vector2(HD_WIDTH, HD_HEIGHT), verticalFov);
StartCoroutine(CaptureFrame());
}
private IEnumerator CaptureFrame()
{
// 等待若干時間,確保相機已按 4K 分辨率渲染完場景
yield return new WaitForSeconds(10);
RenderTexture tempRT = RenderTexture.GetTemporary(HD_WIDTH, HD_HEIGHT, 24);
RenderTexture preTarget = m_camera.targetTexture;
Rect preRect = m_camera.rect;
m_camera.targetTexture = tempRT;
m_camera.rect = new Rect(0, 0, 1, 1);
yield return new WaitForEndOfFrame();
yield return new WaitForEndOfFrame();
yield return new WaitForEndOfFrame();
RenderTexture.active = tempRT;
Texture2D tex = new Texture2D(HD_WIDTH, HD_HEIGHT, TextureFormat.RGB24, false);
tex.ReadPixels(new Rect(0, 0, HD_WIDTH, HD_HEIGHT), 0, 0);
tex.Apply();
RenderTexture.active = null;
m_camera.rect = preRect;
m_camera.targetTexture = preTarget;
RenderTexture.ReleaseTemporary(tempRT);
byte[] jpgData = tex.EncodeToJPG(95);
Destroy(tex);
if (!Directory.Exists(OUTPUT_DIR))
Directory.CreateDirectory(OUTPUT_DIR);
string timestamp = System.DateTime.Now.ToString("yyyyMMdd_HHmmss");
string filePath = Path.Combine(OUTPUT_DIR, $"HD4K_{timestamp}.jpg");
File.WriteAllBytes(filePath, jpgData);
Debug.Log($"[HDRecord] 4K image saved: {filePath} ({jpgData.Length / 1024}KB)");
m_manager.SetRecordMode(false, new Vector2(Screen.width, Screen.height), m_camera.fieldOfView);
Debug.Log("[HDRecord] Record mode disabled, restored normal rendering.");
}
}
注意:
- 錄製模式需要在 LCC 場景加載完成後開啟,因此
SetRecordMode(true, ...)在onComplete回調中調用。- 進入錄製模式後,SDK 會以固定的分辨率和垂直 FOV 渲染,抓幀前建議等待若干幀/若干秒,確保場景已按目標分辨率渲染完成。
- 抓幀完成後調用
SetRecordMode(false, ...)恢復常規渲染。- 腳本文件名必須與類名一致(
HDRecord.cs對應class HDRecord),否則無法掛載到遊戲對象上。- 示例中的
HD_WIDTH、HD_HEIGHT決定輸出分辨率,可按需改為 2K(2560×1440)、1080p(1920×1080)、720P(1280×720)等;OUTPUT_DIR為輸出目錄,請改為你有寫入權限的路徑。
步驟 3:掛載腳本並設置屬性
- 將
HDRecord.cs腳本掛載到 Hierarchy 窗口中的 LCCManager 遊戲對象上。 - 在 Inspector 窗口中,將 LCCManager 遊戲對象拖動到腳本的 Manager 屬性上。
- 在腳本的 File Path 屬性中填寫 LCC 文件的路徑地址。
- 其他屬性(如 Camera)可自由設置,留空時腳本會自動使用
Camera.main。

掛載 HDRecord 腳本並在 Inspector 中設置屬性
步驟 4:運行
在 Game 窗口中點擊 Play 按鈕,數據加載完成後,腳本會進入 4K 錄製模式,抓取一幀並將其保存為 JPG 圖片到輸出目錄。
本示例將圖像渲染為 4K 後直接保存為 JPG 圖片。如果希望保存為高清視頻,可將連續抓取的高清圖像通過視頻編碼合成為高清視頻。
關鍵步驟
實現高清圖像渲染的關鍵步驟:
- 通過
SetMainCamera設置主渲染相機,並在Renderer.Load()加載 LCC 數據。 - 在場景加載完成後(
onComplete回調中)通過SetRecordMode(true, renderSize, verticalFov)進入錄製模式,指定目標分辨率與垂直 FOV。 - 通過
RenderTexture將相機渲染到目標分辨率,Texture2D.ReadPixels讀回像素並編碼為圖片保存。 - 抓幀完成後通過
SetRecordMode(false, ...)恢復常規渲染。
高清圖像渲染注意事項
- 僅 PC/Mac 平台支持。
SetRecordMode僅在 PC/Mac 平台有效。 - 錄製模式下相機焦距固定。 進入錄製模式後,SDK 使用傳入的固定分辨率和垂直 FOV 渲染,不再隨 Camera 組件的變化而改變。
- 及時恢復常規渲染。 抓幀或錄製結束後應調用
SetRecordMode(false, ...)恢復到常規分辨率,否則後續渲染將持續使用錄製分辨率。 - 注意顯存與內存開銷。 分辨率越高,
RenderTexture與Texture2D佔用的顯存/內存越大,建議在高性能計算機設備上進行高清渲染。
錄製相關 API
LCC Unity SDK 通過 LCCManager 提供了錄製模式相關 API。它需要在 LCC 場景加載完成後調用(即在 onComplete 回調中)。
SetRecordMode
// 返回值:void
public void SetRecordMode(bool isRecord, Vector2 renderSize, float verticalFov)
設置錄製模式。錄製模式下使用固定的分辨率和 FOV 渲染,適用於高清圖片、高清視頻的錄製。
| 參數 | 類型 | 說明 |
|---|---|---|
isRecord | bool | 是否進入錄製模式 |
renderSize | Vector2 | 錄製分辨率(寬 × 高),如 (3840, 2160) |
verticalFov | float | 垂直 FOV(視場角) |
調用示例:
// 進入 4K 錄製模式
m_manager.SetRecordMode(true, new Vector2(3840, 2160), 60f);
// 結束錄製,恢復常規渲染
m_manager.SetRecordMode(false, new Vector2(Screen.width, Screen.height), m_camera.fieldOfView);
說明:
- 僅 PC/Mac 平台支持。
- 錄製模式下相機焦距固定,不隨 Camera 組件變化。
- 結束錄製後需調用
SetRecordMode(false, ...)恢復常規渲染。 - 需在 LCC 場景加載完成後調用。