Rendering pro Kamera
Standardmäßig sind der Rendering-Modus (RenderMode) und der Lademodus (LoadMode) eines LCC-Actors für alle Ansichten gleich. Diese Einstellungen lassen sich für einen bestimmten Player oder ein bestimmtes SceneCapture getrennt überschreiben: etwa im Splitscreen Player 1 das 3DGS und Player 2 die Punktwolke zeigen; oder das SceneCapture einer Minimap in einer Punktwolken-Draufsicht rendern lassen und nur den Hauptteil laden, um die Kosten zu senken.
Sowohl die LCC1- als auch die LCC2-Pipeline unterstützen diese Gruppe von Schnittstellen. Die Signaturen stehen unter ULCCComponentBase – Multi-Viewport.
Nur zur Laufzeit aufrufbar
Die Parameter dieser Funktionen sind Laufzeitobjekte (APlayerController / USceneCaptureComponent2D), die während des Platzierens im Editor noch nicht existieren. Deshalb sind sie keine Panel-Eigenschaften und lassen sich nur zur Spiellaufzeit über Blueprint oder C++ aufrufen. Die RenderMode / LoadMode im Panel sind die globalen Standardwerte, die für alle Ansichten gelten; diese Gruppe von Schnittstellen überschreibt sie lokal auf dem globalen Wert, und Ansichten, für die die Überschreibungsfunktion nicht aufgerufen wird, nutzen weiterhin die globale Einstellung.
Erläuterung: Die Kameras werden über die „Ansichtsidentität“ unterschieden; die Player-Ansicht nutzt die eindeutige ID der Render-Ansicht, das SceneCapture den Index seines RenderTargets. Deshalb muss der
PlayerController(nicht der Pawn) übergeben werden – der Pawn trägt keine Information darüber, „in welchem Viewport er angezeigt wird“.
Pro Player überschreiben (Splitscreen / mehrere lokale Player)
// Der Viewport von Player 2 zeigt die Punktwolke, andere Viewports bleiben unberührt
LCCComponent->SetPlayerRenderMode(Player2Controller, ERenderMode::PointCloud);
LCCComponent->SetPlayerLoadMode(Player2Controller, ELoadMode::OnlyMain);
Blueprint als Text:
[Custom Event: SetupSplitScreen]
│
▼
[Get Player Controller] Player Index = 1 → Player2Controller
│
▼
[Set Player Render Mode]
Target = (LCC Component)
Player Controller = Player2Controller
In Render Mode = Point Cloud
Die Einstellung wird im nächsten Frame wirksam. Wird keine Überschreibungsfunktion aufgerufen, teilen sich alle Viewports die globale Einstellung aus dem Panel.
Pro SceneCapture überschreiben (Minimap / Überwachungsbild)
// Die Minimap nutzt die Punktwolke und nur den Hauptteil, für minimale Kosten
LCCComponent->SetSceneCaptureRenderMode(MinimapCapture, ERenderMode::PointCloud);
LCCComponent->SetSceneCaptureLoadMode(MinimapCapture, ELoadMode::OnlyMain);

Der Haupt-Viewport zeigt das 3DGS, die SceneCapture-Minimap oben links eine Punktwolken-Draufsicht
Voraussetzung: Damit ein SceneCapture LCC-Inhalte rendert, zuerst in den Projekteinstellungen SceneCaptureComponent Support aktivieren; diese Option ist standardmäßig deaktiviert.
Auf den Aufrufzeitpunkt achten (häufige Stolperfalle)
Die Überschreibung eines SceneCapture wird nur wirksam, wenn es eine gültige Ansichts-ID berechnen kann. Hat das Capture zu diesem Zeitpunkt noch nie gerendert, lässt sich keine ID beziehen, und die Einstellung wird stillschweigend verworfen (ohne Fehler). Daher auf eine der beiden folgenden Weisen für den richtigen Zeitpunkt sorgen:
- Zuerst einmal capturen, dann setzen, dann capturen:
Capture Scene→SetSceneCaptureRenderMode/LoadMode→Capture Scene. - Oder am SceneCapture2D
Capture Every Frameanhaken, damit der ViewState dauerhaft vorliegt und die Einstellung wirksam wird.
Außerdem bestätigen, dass das Texture Target des SceneCapture2D zugewiesen ist; zu einem zu frühen Zeitpunkt wie BeginPlay den Aufruf um einen Frame verzögern.
Häufiger Fehler 1:
SetSceneCapture...vorCapture Sceneaufrufen, während am CaptureCapture Every Framenicht angehakt ist → die Einstellung geht verloren, das Bild ändert sich nicht.Häufiger Fehler 2:
Targetmit dem SceneCapture2D verbunden. Die korrekte Verbindung ist Target = die gecapturete LCC-Komponente, und das SceneCapture2D wird in den ParameterIn Capture 2Deingetragen.