Guida allo sviluppo del rendering multi-camera
L'LCC Unity SDK supporta il rendering con più telecamere simultaneamente nella modalità di rendering completo a scena singola. Di seguito viene usato un esempio di una camera principale più due telecamere secondarie per descrivere i passaggi completi per implementare il rendering multi-camera.
Passaggio 1: crea la scena e i GameObject
Crea una scena completamente nuova in Unity. Unity crea Camera principale e Luce direzionale per impostazione predefinita.
Configura la Camera principale
Seleziona Camera principale nella finestra Gerarchia e imposta le sue proprietà nella finestra Inspector come mostrato di seguito.

Imposta le proprietà della Camera principale
Crea LCCManager
Fai clic con il pulsante destro su un'area vuota nella finestra Gerarchia, seleziona Crea vuoto dal menu a comparsa per creare un GameObject vuoto, assegna il nome LCCManager, normalizza il suo Transform e aggiungi lo script LCCManager tramite Aggiungi componente.

Crea il GameObject LCCManager e aggiungi lo script LCCManager
Crea LCCRenderer
Fai clic con il pulsante destro su un'area vuota nella finestra Gerarchia, seleziona Crea vuoto per creare un GameObject vuoto, assegna il nome LCCRenderer e imposta il suo Transform su Rotation.x = -90 e Scale.x = -1.

Crea LCCRenderer e imposta il suo Transform (Rotation.x = -90, Scale.x = -1)
Nota:
Le impostazioni Transform del GameObject LCCRenderer (Rotation.x = -90, Scale.x = -1) lo allineano al sistema di coordinate dei dati LCC. Per i dettagli sull'allineamento del sistema di coordinate, vedi "Sistema di coordinate dei dati LCC" in Introduzione all'Unity SDK.
Crea le telecamere di rendering secondarie
Fai clic con il pulsante destro su un'area vuota nella finestra Gerarchia per creare due telecamere di rendering aggiuntive, assegna loro rispettivamente i nomi Camera01 e Camera02 e imposta le proprietà di queste due telecamere come mostrato di seguito.

Imposta le proprietà di Camera01

Imposta le proprietà di Camera02
In questo esempio, il Viewport Rect delle due telecamere è configurato per posizionarle rispettivamente nell'angolo in basso a sinistra e nell'angolo in basso a destra della finestra di rendering principale.
Passaggio 2: scrivi lo script multi-camera
Crea un nuovo script C# denominato MultiCamera.cs con il seguente codice:
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("Avviato ");
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} avanzamento caricamento: {_progress:P1}");
}
private void onComplete()
{
Debug.Log($"[LCCRenderer] file {m_currentFileIndex} caricato");
m_manager.AddCamera(m_camera01);
m_manager.AddCamera(m_camera02);
}
private void OnDestroy()
{
m_manager.RemoveCamera(m_camera01);
m_manager.RemoveCamera(m_camera02);
}
}
Nota:
- Le telecamere secondarie devono essere registrate dopo il completamento del caricamento della scena LCC, quindi
AddCameraviene chiamato nel callbackonComplete.- Il nome del file dello script deve corrispondere al nome della classe (
MultiCamera.cscorrisponde aclass MultiCamera), altrimenti non può essere associato a un GameObject.- La camera principale viene impostata tramite
SetMainCamerae le telecamere secondarie vengono aggiunte tramiteAddCamera; non puoi aggiungere la camera principale come telecamera secondaria.
Passaggio 3: associa lo script e imposta le proprietà
- Associa lo script
MultiCamera.csal GameObject LCCRenderer nella finestra Gerarchia. - Nella finestra Inspector, trascina il GameObject LCCManager sulla proprietà Manager dello script.
- Trascina i GameObject Camera01 e Camera02 rispettivamente sulle proprietà Camera01 e Camera02 dello script.
- Inserisci il percorso del file LCC nella proprietà File Path01 dello script.

Associa lo script MultiCamera e imposta le sue proprietà nell'Inspector
Passaggio 4: esegui
Fai clic sul pulsante Play nella finestra Game per vedere l'effetto di rendering in tempo reale di più telecamere di rendering nella scena.

Più telecamere di rendering che eseguono il rendering simultaneamente dopo l'esecuzione
Passaggi chiave
I passaggi chiave per implementare il rendering multi-camera:
- Assicurati che la scena sia in modalità di rendering completo a scena singola (
SwitchRenderPass(ActiveRenderMode.SingleRender)e che i dati passino dal percorso Full Load). - La camera principale viene impostata tramite
SetMainCamera; le telecamere secondarie vengono registrate tramiteAddCameradopo il completamento del caricamento della scena (nel callbackonComplete). - Controlla l'area di rendering di ogni telecamera sullo schermo tramite il suo Viewport Rect.
- Quando l'oggetto viene distrutto (
OnDestroy), rimuovi le telecamere secondarie tramiteRemoveCameraper evitare riferimenti pendenti.
Note sul rendering multi-camera
È supportata solo la modalità di rendering completo. L'LCC SDK attualmente supporta il rendering multi-camera solo nella modalità di rendering completo in una singola scena. Per l'ottimizzazione delle prestazioni, nella modalità di rendering a blocchi l'SDK carica e renderizza solo i dati visibili all'interno del frustum della camera; inoltre, per perseguire prestazioni elevate, il filtraggio dei dati dei nodi della scena lato CPU, l'assemblaggio dei dati e il caricamento dei dati da CPU a GPU sono tutti asincroni, quindi non può elaborare e renderizzare i dati per più telecamere separatamente nello stesso frame.
Assicurati che la scena sia nello stato di rendering completo. Per usare la funzionalità completa di rendering multi-camera, configura la scena in modalità di rendering completo (Full Load): usa
ActiveRenderMode.SingleRendere abilita il rendering completo sul Renderer (Renderer.SetRenderAll(true), che ha effetto al successivoLoad()). Per i dettagli sulle modalità di rendering e sui parametri delle prestazioni, vedi Guida rapida per PC.Più telecamere, più alto il costo delle prestazioni. Ogni telecamera di rendering aggiuntiva aggiunge un passaggio di rendering completo, quindi le prestazioni peggiorano di conseguenza. Il rendering multi-camera è consigliato su dispositivi computer ad alte prestazioni.
Supportato solo su PC/Mac.
AddCamera/RemoveCamerahanno effetto solo sulle piattaforme PC/Mac.
API multi-camera
L'LCC Unity SDK fornisce le seguenti API relative alle telecamere tramite LCCManager. Le telecamere secondarie devono essere registrate tramite AddCamera dopo il completamento del caricamento della scena LCC (ovvero nel callback onComplete).
SetMainCamera
// Valore restituito: void
public void SetMainCamera(Camera _cam)
Imposta la camera di rendering principale. LCC usa questa camera per il frustum culling, la selezione LOD, l'ordinamento e altre operazioni.
| Parametro | Tipo | Descrizione |
|---|---|---|
_cam | Camera | Camera di rendering principale; passa null per cancellarla |
Esempio di utilizzo:
m_manager.SetMainCamera(Camera.main);
Note:
- Deve essere impostata prima di
Renderer.Load(). - Chiamala di nuovo quando cambi telecamera.
- Supportata solo su PC/Mac.
- Passa
nullper cancellare la camera principale.
AddCamera
// Valore restituito: void
public void AddCamera(Camera _cam)
Aggiunge una telecamera secondaria. Le telecamere secondarie partecipano al rendering ma non influenzano la selezione LOD.
| Parametro | Tipo | Descrizione |
|---|---|---|
_cam | Camera | Telecamera secondaria |
Esempio di utilizzo:
m_manager.AddCamera(m_camera01);
Note:
- Supportata solo su PC/Mac.
- Non puoi aggiungere la camera principale come telecamera secondaria.
- La selezione LOD è determinata solo dalla camera principale; le telecamere secondarie riutilizzano i dati filtrati dalla camera principale per il rendering.
RemoveCamera
// Valore restituito: void
public void RemoveCamera(Camera _cam)
Rimuove una telecamera secondaria aggiunta in precedenza.
| Parametro | Tipo | Descrizione |
|---|---|---|
_cam | Camera | La telecamera secondaria da rimuovere |
Esempio di utilizzo:
m_manager.RemoveCamera(m_camera01);
Note:
- Supportata solo su PC/Mac.
- Si consiglia di chiamarla quando l'oggetto viene distrutto (
OnDestroy) per ripulire il riferimento alla telecamera secondaria.