逐相机独立渲染
默认情况下,一个 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参数里。