Entwicklungsanleitung für Multi-Kamera-Rendering
Das LCC Unity SDK unterstützt im Vollständige-Rendering-Modus einer einzelnen Szene das gleichzeitige Rendern mit mehreren Kameras. Im Folgenden wird anhand eines Beispiels mit einer Hauptkamera plus zwei sekundären Kameras der vollständige Ablauf zur Implementierung des Multi-Kamera-Renderings beschrieben.
Schritt 1: Szene und GameObjects erstellen
Erstellen Sie eine brandneue Szene in Unity. Unity erstellt standardmäßig Hauptkamera und Richtungslicht.
Hauptkamera einrichten
Wählen Sie die Hauptkamera im Fenster Hierarchie aus und legen Sie deren Eigenschaften im Fenster Inspektor wie unten dargestellt fest.

Die Eigenschaften der Hauptkamera festlegen
LCCManager erstellen
Klicken Sie mit der rechten Maustaste in einen leeren Bereich des Fensters Hierarchie, wählen Sie im Popup-Menü Leeres GameObject erstellen, um ein leeres GameObject zu erstellen, benennen Sie es LCCManager, normalisieren Sie dessen Transform und fügen Sie über Komponente hinzufügen das Skript LCCManager hinzu.

Das GameObject LCCManager erstellen und das Skript LCCManager hinzufügen
LCCRenderer erstellen
Klicken Sie mit der rechten Maustaste in einen leeren Bereich des Fensters Hierarchie, wählen Sie Leeres GameObject erstellen, um ein leeres GameObject zu erstellen, benennen Sie es LCCRenderer und setzen Sie dessen Transform auf Rotation.x = -90 und Scale.x = -1.

LCCRenderer erstellen und dessen Transform festlegen (Rotation.x = -90, Scale.x = -1)
Hinweis:
Die Transform-Einstellungen des GameObject LCCRenderer (Rotation.x = -90, Scale.x = -1) richten es am LCC-Daten-Koordinatensystem aus. Details zur Ausrichtung am Koordinatensystem finden Sie unter „LCC-Daten-Koordinatensystem“ in Einführung in das Unity SDK.
Sekundäre Rendering-Kameras erstellen
Klicken Sie mit der rechten Maustaste in einen leeren Bereich des Fensters Hierarchie, um zwei zusätzliche Rendering-Kameras zu erstellen, benennen Sie sie Camera01 bzw. Camera02 und legen Sie die Eigenschaften dieser beiden Kameras wie unten dargestellt fest.

Die Eigenschaften von Camera01 festlegen

Die Eigenschaften von Camera02 festlegen
In diesem Beispiel wird das Viewport Rect der beiden Kameras so konfiguriert, dass sie in der linken unteren Ecke bzw. der rechten unteren Ecke des Haupt-Rendering-Fensters platziert werden.
Schritt 2: Das Multi-Kamera-Skript schreiben
Erstellen Sie ein neues C#-Skript namens MultiCamera.cs mit folgendem Code:
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("Gestartet ");
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] Datei {m_currentFileIndex} Ladefortschritt: {_progress:P1}");
}
private void onComplete()
{
Debug.Log($"[LCCRenderer] Datei {m_currentFileIndex} geladen");
m_manager.AddCamera(m_camera01);
m_manager.AddCamera(m_camera02);
}
private void OnDestroy()
{
m_manager.RemoveCamera(m_camera01);
m_manager.RemoveCamera(m_camera02);
}
}
Hinweis:
- Sekundäre Kameras müssen nach Abschluss des Ladens der LCC-Szene registriert werden; daher wird
AddCameraim CallbackonCompleteaufgerufen.- Der Skriptdateiname muss mit dem Klassennamen übereinstimmen (
MultiCamera.csentsprichtclass MultiCamera), andernfalls kann es nicht an ein GameObject angehängt werden.- Die Hauptkamera wird über
SetMainCameragesetzt, sekundäre Kameras werden überAddCamerahinzugefügt; die Hauptkamera kann nicht als sekundäre Kamera hinzugefügt werden.
Schritt 3: Das Skript anhängen und Eigenschaften festlegen
- Hängen Sie das Skript
MultiCamera.csim Fenster Hierarchie an das GameObject LCCRenderer. - Ziehen Sie im Fenster Inspektor das GameObject LCCManager auf die Eigenschaft Manager des Skripts.
- Ziehen Sie die GameObjects Camera01 und Camera02 auf die Eigenschaften Camera01 bzw. Camera02 des Skripts.
- Tragen Sie den LCC-Dateipfad in die Eigenschaft File Path01 des Skripts ein.

Das MultiCamera-Skript anhängen und dessen Eigenschaften im Inspektor festlegen
Schritt 4: Ausführen
Klicken Sie im Fenster Spiel auf die Schaltfläche Play, um den Echtzeit-Rendering-Effekt mehrerer Rendering-Kameras in der Szene zu sehen.

Mehrere Rendering-Kameras, die nach dem Ausführen gleichzeitig rendern
Schlüsselschritte
Die Schlüsselschritte zur Implementierung des Multi-Kamera-Renderings:
- Sicherstellen, dass sich die Szene im Modus Vollständiges Rendering einer einzelnen Szene befindet (
SwitchRenderPass(ActiveRenderMode.SingleRender)und die Daten durchlaufen den Full-Load-Pfad). - Die Hauptkamera wird über
SetMainCameragesetzt; sekundäre Kameras werden nach Abschluss des Ladens der Szene (im CallbackonComplete) überAddCameraregistriert. - Den Rendering-Bereich jeder Kamera auf dem Bildschirm über dessen Viewport Rect steuern.
- Bei Zerstörung des Objekts (
OnDestroy) sekundäre Kameras überRemoveCameraentfernen, um verwaiste Referenzen zu vermeiden.
Hinweise zum Multi-Kamera-Rendering
Nur der Vollständige-Rendering-Modus wird unterstützt. Das LCC SDK unterstützt Multi-Kamera-Rendering derzeit nur im Vollständige-Rendering-Modus unter einer einzelnen Szene. Zur Leistungsoptimierung lädt und rendert das SDK im chunk-basierten Rendering-Modus nur die sichtbaren Daten innerhalb des Kamera-Frustums; und um hohe Leistung zu erzielen, erfolgen die CPU-seitige Filterung der Szenenknotendaten, die Datenassemblierung und das Hochladen der Daten von der CPU zur GPU alle asynchron, sodass es Daten für mehrere Kameras nicht getrennt innerhalb desselben Frames verarbeiten und rendern kann.
Sicherstellen, dass sich die Szene im Vollständige-Rendering-Zustand befindet. Um die vollständige Multi-Kamera-Rendering-Funktion zu nutzen, konfigurieren Sie die Szene im Vollständige-Rendering-Modus (Full Load): Verwenden Sie
ActiveRenderMode.SingleRenderund aktivieren Sie das Vollständige Rendering am Renderer (Renderer.SetRenderAll(true), das beim nächstenLoad()wirksam wird). Details zu Rendering-Modi und Leistungsparametern finden Sie unter PC-Schnellstartanleitung.Je mehr Kameras, desto höher der Leistungsaufwand. Jede zusätzliche Rendering-Kamera fügt einen vollständigen Rendering-Durchgang hinzu, sodass die Leistung entsprechend abnimmt. Multi-Kamera-Rendering wird auf leistungsstarken Computergeräten empfohlen.
Nur auf PC/Mac unterstützt.
AddCamera/RemoveCamerasind nur auf PC/Mac-Plattformen wirksam.
Multi-Kamera-APIs
Das LCC Unity SDK stellt über LCCManager die folgenden kameraspezifischen APIs bereit. Sekundäre Kameras müssen nach Abschluss des Ladens der LCC-Szene (d. h. im Callback onComplete) über AddCamera registriert werden.
SetMainCamera
// Rückgabewert: void
public void SetMainCamera(Camera _cam)
Legt die Haupt-Rendering-Kamera fest. LCC verwendet diese Kamera für Frustum-Culling, LOD-Auswahl, Sortierung und andere Operationen.
| Parameter | Typ | Beschreibung |
|---|---|---|
_cam | Camera | Haupt-Rendering-Kamera; null übergeben, um sie zu löschen |
Verwendungsbeispiel:
m_manager.SetMainCamera(Camera.main);
Hinweise:
- Muss vor
Renderer.Load()gesetzt werden. - Rufen Sie sie beim Kamerawechsel erneut auf.
- Nur auf PC/Mac unterstützt.
nullübergeben, um die Hauptkamera zu löschen.
AddCamera
// Rückgabewert: void
public void AddCamera(Camera _cam)
Fügt eine sekundäre Kamera hinzu. Sekundäre Kameras nehmen am Rendering teil, beeinflussen jedoch nicht die LOD-Auswahl.
| Parameter | Typ | Beschreibung |
|---|---|---|
_cam | Camera | Sekundäre Kamera |
Verwendungsbeispiel:
m_manager.AddCamera(m_camera01);
Hinweise:
- Nur auf PC/Mac unterstützt.
- Die Hauptkamera kann nicht als sekundäre Kamera hinzugefügt werden.
- Die LOD-Auswahl wird nur von der Hauptkamera bestimmt; sekundäre Kameras verwenden die von der Hauptkamera gefilterten Daten für das Rendering.
RemoveCamera
// Rückgabewert: void
public void RemoveCamera(Camera _cam)
Entfernt eine zuvor hinzugefügte sekundäre Kamera.
| Parameter | Typ | Beschreibung |
|---|---|---|
_cam | Camera | Die zu entfernende sekundäre Kamera |
Verwendungsbeispiel:
m_manager.RemoveCamera(m_camera01);
Hinweise:
- Nur auf PC/Mac unterstützt.
- Es wird empfohlen, sie bei Zerstörung des Objekts (
OnDestroy) aufzurufen, um die Referenz der sekundären Kamera zu bereinigen.