Guía de desarrollo de renderizado multicámara
El LCC Unity SDK admite renderizar con varias cámaras simultáneamente en el modo de renderizado completo de una sola escena. A continuación se usa un ejemplo de una cámara principal más dos cámaras secundarias para describir los pasos completos para implementar el renderizado multicámara.
Paso 1: Crear la escena y los GameObjects
Crea una escena completamente nueva en Unity. Unity crea Main Camera y Directional Light por defecto.
Configurar Main Camera
Selecciona Main Camera en la ventana Jerarquía y establece sus propiedades en la ventana Inspector como se muestra a continuación.

Establecer las propiedades de Main Camera
Crear LCCManager
Haz clic con el botón derecho en un área vacía de la ventana Jerarquía, selecciona Create Empty en el menú emergente para crear un GameObject vacío, nómbralo LCCManager, normaliza su Transform y añádele el script LCCManager mediante Agregar componente.

Crear el GameObject LCCManager y añadir el script LCCManager
Crear LCCRenderer
Haz clic con el botón derecho en un área vacía de la ventana Jerarquía, selecciona Create Empty para crear un GameObject vacío, nómbralo LCCRenderer y establece su Transform como Rotation.x = -90 y Scale.x = -1.

Crear LCCRenderer y establecer su Transform (Rotation.x = -90, Scale.x = -1)
Nota:
Los ajustes de Transform del GameObject LCCRenderer (Rotation.x = -90, Scale.x = -1) lo alinean con el sistema de coordenadas de los datos LCC. Para más detalles sobre la alineación del sistema de coordenadas, consulta "Sistema de coordenadas de los datos LCC" en Introducción al SDK de Unity.
Crear cámaras de renderizado secundarias
Haz clic con el botón derecho en un área vacía de la ventana Jerarquía para crear dos cámaras de renderizado adicionales, nómbralas Camera01 y Camera02 respectivamente y establece las propiedades de estas dos cámaras como se muestra a continuación.

Establecer las propiedades de Camera01

Establecer las propiedades de Camera02
En este ejemplo, el Viewport Rect de las dos cámaras se configura para colocarlas en la esquina inferior izquierda y la esquina inferior derecha de la ventana de renderizado principal respectivamente.
Paso 2: Escribir el script multicámara
Crea un nuevo script C# llamado MultiCamera.cs con el siguiente código:
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("Iniciado ");
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] archivo {m_currentFileIndex} progreso de carga: {_progress:P1}");
}
private void onComplete()
{
Debug.Log($"[LCCRenderer] archivo {m_currentFileIndex} cargado");
m_manager.AddCamera(m_camera01);
m_manager.AddCamera(m_camera02);
}
private void OnDestroy()
{
m_manager.RemoveCamera(m_camera01);
m_manager.RemoveCamera(m_camera02);
}
}
Nota:
- Las cámaras secundarias deben registrarse después de que la escena LCC termine de cargarse, por lo que
AddCamerase llama en la devolución de llamadaonComplete.- El nombre del archivo de script debe coincidir con el nombre de la clase (
MultiCamera.cscorresponde aclass MultiCamera), de lo contrario no puede adjuntarse a un GameObject.- La cámara principal se establece mediante
SetMainCamera, y las cámaras secundarias se añaden medianteAddCamera; no puedes añadir la cámara principal como cámara secundaria.
Paso 3: Adjuntar el script y establecer propiedades
- Adjunta el script
MultiCamera.csal GameObject LCCRenderer en la ventana Jerarquía. - En la ventana Inspector, arrastra el GameObject LCCManager a la propiedad Manager del script.
- Arrastra los GameObjects Camera01 y Camera02 a las propiedades Camera01 y Camera02 del script respectivamente.
- Rellena la ruta del archivo LCC en la propiedad File Path01 del script.

Adjuntar el script MultiCamera y establecer sus propiedades en el Inspector
Paso 4: Ejecutar
Haz clic en el botón Play de la ventana Game para ver el efecto de renderizado en tiempo real de varias cámaras de renderizado en la escena.

Varias cámaras de renderizado renderizando simultáneamente tras la ejecución
Pasos clave
Los pasos clave para implementar el renderizado multicámara:
- Asegúrate de que la escena está en modo de renderizado completo de una sola escena (
SwitchRenderPass(ActiveRenderMode.SingleRender)y los datos pasan por la ruta de carga completa). - La cámara principal se establece mediante
SetMainCamera; las cámaras secundarias se registran medianteAddCameradespués de que la escena termine de cargarse (en la devolución de llamadaonComplete). - Controla el área de renderizado de cada cámara en pantalla mediante su Viewport Rect.
- Cuando el objeto se destruye (
OnDestroy), elimina las cámaras secundarias medianteRemoveCamerapara evitar referencias colgantes.
Notas del renderizado multicámara
Solo se admite el modo de renderizado completo. El LCC SDK actualmente solo admite el renderizado multicámara en el modo de renderizado completo bajo una sola escena. Para la optimización del rendimiento, en el modo de renderizado por fragmentos el SDK solo carga y renderiza los datos visibles dentro del frustum de la cámara; y para perseguir un alto rendimiento, el filtrado de datos de nodos de escena del lado CPU, el ensamblado de datos y la subida de datos de CPU a GPU son todos asíncronos, por lo que no puede procesar y renderizar datos para varias cámaras por separado dentro del mismo fotograma.
Asegúrate de que la escena está en estado de renderizado completo. Para usar la función completa de renderizado multicámara, configura la escena en modo de renderizado completo (Full Load): usa
ActiveRenderMode.SingleRendery habilita el renderizado completo en el Renderer (Renderer.SetRenderAll(true), que surte efecto en la siguiente llamada aLoad()). Para más detalles sobre los modos de renderizado y los parámetros de rendimiento, consulta Guía de inicio rápido para PC.Cuantas más cámaras, mayor es el coste de rendimiento. Cada cámara de renderizado adicional añade una pasada de renderizado completa, por lo que el rendimiento se degrada en consecuencia. El renderizado multicámara se recomienda en dispositivos de equipo de alto rendimiento.
Solo compatible con PC/Mac.
AddCamera/RemoveCamerasolo surten efecto en plataformas PC/Mac.
API multicámara
El LCC Unity SDK proporciona las siguientes API relacionadas con la cámara a través de LCCManager. Las cámaras secundarias deben registrarse mediante AddCamera después de que la escena LCC termine de cargarse (es decir, en la devolución de llamada onComplete).
SetMainCamera
// Valor de retorno: void
public void SetMainCamera(Camera _cam)
Establece la cámara de renderizado principal. LCC usa esta cámara para el descarte por frustum, la selección de LOD, el ordenamiento y otras operaciones.
| Parámetro | Tipo | Descripción |
|---|---|---|
_cam | Camera | Cámara de renderizado principal; pasa null para limpiarla |
Ejemplo de uso:
m_manager.SetMainCamera(Camera.main);
Notas:
- Debe establecerse antes de
Renderer.Load(). - Llámala de nuevo al cambiar de cámara.
- Solo compatible con PC/Mac.
- Pasa
nullpara limpiar la cámara principal.
AddCamera
// Valor de retorno: void
public void AddCamera(Camera _cam)
Añade una cámara secundaria. Las cámaras secundarias participan en el renderizado pero no afectan a la selección de LOD.
| Parámetro | Tipo | Descripción |
|---|---|---|
_cam | Camera | Cámara secundaria |
Ejemplo de uso:
m_manager.AddCamera(m_camera01);
Notas:
- Solo compatible con PC/Mac.
- No puedes añadir la cámara principal como cámara secundaria.
- La selección de LOD la determina solo la cámara principal; las cámaras secundarias reutilizan los datos filtrados por la cámara principal para el renderizado.
RemoveCamera
// Valor de retorno: void
public void RemoveCamera(Camera _cam)
Elimina una cámara secundaria añadida previamente.
| Parámetro | Tipo | Descripción |
|---|---|---|
_cam | Camera | La cámara secundaria a eliminar |
Ejemplo de uso:
m_manager.RemoveCamera(m_camera01);
Notas:
- Solo compatible con PC/Mac.
- Se recomienda llamarla cuando el objeto se destruye (
OnDestroy) para limpiar la referencia de la cámara secundaria.