Rendering indipendente per camera
Per impostazione predefinita, il modo di rendering (RenderMode) e il modo di caricamento (LoadMode) di un LCC Actor sono uguali per tutte le viste. È possibile sovrascrivere queste impostazioni per un determinato giocatore o per un determinato SceneCapture: per esempio, in split screen far vedere al giocatore 1 il 3DGS e al giocatore 2 la nuvola di punti; oppure far usare al SceneCapture di una minimappa la nuvola di punti in vista dall'alto e caricare solo la parte principale per ridurre il costo.
Sia la pipeline LCC1 sia la LCC2 supportano questo insieme di interfacce. Per le firme, vedere ULCCComponentBase - Più viewport.
Chiamabile solo a runtime
I parametri di queste funzioni sono oggetti a runtime (APlayerController / USceneCaptureComponent2D) che non esistono ancora nella fase di posizionamento nell'editor, quindi non sono proprietà del pannello e si possono chiamare solo da Blueprint o C++ con il gioco in esecuzione. I RenderMode / LoadMode del pannello sono i valori predefiniti globali che si applicano a tutte le viste; questo insieme di interfacce esegue una sovrascrittura locale al di sopra del valore globale, e le viste che non chiamano la funzione di sovrascrittura continuano a usare l'impostazione globale.
Chiarimento: distingue le camere per «identità di vista»; la vista di un giocatore usa l'ID univoco della vista di rendering, e un SceneCapture usa l'indice del suo RenderTarget. Per questo occorre passare il
PlayerController(e non il Pawn): il Pawn non porta con sé l'informazione su «in quale viewport viene mostrato».
Sovrascrivere per giocatore (split screen / più giocatori locali)
// Il viewport del giocatore 2 vede la nuvola di punti; gli altri viewport non sono influenzati
LCCComponent->SetPlayerRenderMode(Player2Controller, ERenderMode::PointCloud);
LCCComponent->SetPlayerLoadMode(Player2Controller, ELoadMode::OnlyMain);
Blueprint in forma testuale:
[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
L'impostazione ha effetto dal fotogramma successivo. Quando non si chiama la funzione di sovrascrittura, tutti i viewport condividono l'impostazione globale del pannello.
Sovrascrivere per SceneCapture (minimappa / immagine di sorveglianza)
// La minimappa usa la nuvola di punti + solo la parte principale, il costo minimo
LCCComponent->SetSceneCaptureRenderMode(MinimapCapture, ERenderMode::PointCloud);
LCCComponent->SetSceneCaptureLoadMode(MinimapCapture, ELoadMode::OnlyMain);

Il viewport principale vede il 3DGS, e la minimappa con SceneCapture nell'angolo in alto a sinistra usa la nuvola di punti in vista dall'alto
Prerequisito: per renderizzare contenuto LCC in un SceneCapture, occorre abilitare prima SceneCaptureComponent Support nelle impostazioni del progetto, che è disattivato per impostazione predefinita.
Attenzione al momento della chiamata (errore comune)
La sovrascrittura di un SceneCapture ha effetto solo quando può calcolare un ID di vista valido. Se in quel momento il capture non è ancora stato renderizzato nemmeno una volta, non c'è alcun ID e l'impostazione viene scartata in silenzio (senza errore). Quindi garantire il momento corretto in uno di questi due modi:
- Catturare una volta, impostare e catturare di nuovo:
Capture Scene→SetSceneCaptureRenderMode/LoadMode→Capture Scene. - Oppure selezionare
Capture Every Framesul SceneCapture2D così che il ViewState sia permanente, di modo che l'impostazione abbia effetto.
Inoltre, verificare che il Texture Target del SceneCapture2D sia assegnato; in momenti troppo precoci come BeginPlay, si può ritardare di un fotogramma prima di chiamare.
Errore comune 1: chiamare
SetSceneCapture...prima diCapture Scenesenza che il capture abbia selezionatoCapture Every Frame→ l'impostazione va persa e l'immagine non cambia.Errore comune 2: collegare
Targetal SceneCapture2D. Il collegamento corretto è Target = il componente LCC che viene catturato, e il SceneCapture2D va nel parametroIn Capture 2D.