高清图像渲染开发指南
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 场景加载完成后调用。