逐相機獨立渲染
默認情況下,一個 LCC Actor 的渲染模式(RenderMode)、加載模式(LoadMode)對所有視圖一致。可以針對某個玩家或某個 SceneCapture 單獨覆蓋這些設置:比如分屏時讓玩家 1 看 3DGS、玩家 2 看點雲;或讓小地圖用的 SceneCapture 用點雲俯視、只加載主體以降低開銷。
LCC1 與 LCC2 管線都支持這組接口。接口簽名見 ULCCComponentBase - Multi-Viewport。
只能運行時調用
這組函數的參數是運行時對象(APlayerController / USceneCaptureComponent2D),編輯器擺放階段還不存在,所以它們不是面板屬性,只能在遊戲運行時用藍圖或 C++ 調用。面板上的 RenderMode / LoadMode 是對所有視圖生效的全局默認值;本組接口是在全局值之上做的局部覆蓋,不調用覆蓋函數的視圖繼續用全局設置。
說明:它靠「視圖身份」區分相機,玩家視圖用渲染視圖的唯一 ID,SceneCapture 用其 RenderTarget 的索引。所以必須傳
PlayerController(而不是 Pawn)——Pawn 不攜帶「顯示在哪個視口」的信息。
按玩家覆蓋(分屏 / 多本地玩家)
// 玩家 2 的視口看點雲,其它視口不受影響
LCCComponent->SetPlayerRenderMode(Player2Controller, ERenderMode::PointCloud);
LCCComponent->SetPlayerLoadMode(Player2Controller, ELoadMode::OnlyMain);
文本藍圖:
[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
設置下一幀生效。不調用覆蓋函數時,所有視口共用面板上的全局設置。
按 SceneCapture 覆蓋(小地圖 / 監控畫面)
// 小地圖用點雲 + 只要主體,開銷最小
LCCComponent->SetSceneCaptureRenderMode(MinimapCapture, ERenderMode::PointCloud);
LCCComponent->SetSceneCaptureLoadMode(MinimapCapture, ELoadMode::OnlyMain);

主視口看 3DGS,左上角 SceneCapture 小地圖用點雲俯視
前提:SceneCapture 裏要渲染 LCC 內容,需先在項目設置開啟 SceneCaptureComponent Support,該項默認關閉。
注意調用時機(常見坑)
SceneCapture 的覆蓋只有在它能算出有效的視圖 ID 時才生效。如果此時 capture 還沒渲染過一次,拿不到 ID,設置會被靜默丟棄(不報錯)。因此按下面兩種方式之一保證時機正確:
- 先捕捉一次,再設置,再捕捉:
Capture Scene→SetSceneCaptureRenderMode/LoadMode→Capture Scene。 - 或給 SceneCapture2D 勾上
Capture Every Frame,讓 ViewState 常駐,設置即可生效。
另外確認 SceneCapture2D 的 Texture Target 已賦值;在 BeginPlay 這類過早時機,可延一幀再調。
常見錯誤一:在
Capture Scene之前就調SetSceneCapture...,且 capture 未勾Capture Every Frame→ 設置丟失,畫面無變化。常見錯誤二:把
Target連成了 SceneCapture2D。正確接法是 Target = 被捕捉的 LCC 組件,SceneCapture2D 填在In Capture 2D參數裏。