Независимый рендеринг для каждой камеры
По умолчанию режим рендеринга (RenderMode) и режим загрузки (LoadMode) одного LCC Actor одинаковы для всех видов. Эти настройки можно переопределить отдельно для конкретного игрока или конкретного SceneCapture: например, при разделении экрана показать игроку 1 3DGS, а игроку 2 — облако точек; или для SceneCapture мини-карты использовать облако точек при виде сверху и загружать только основную часть, чтобы снизить затраты.
Оба конвейера, LCC и LCC2, поддерживают этот набор интерфейсов. Сигнатуры см. в ULCCComponentBase — Multi-Viewport.
Только во время выполнения
Параметры этих функций — объекты времени выполнения (APlayerController / USceneCaptureComponent2D), которых ещё нет на этапе размещения в редакторе, поэтому это не свойства панели: их можно вызывать только во время игры из Blueprint или C++. RenderMode / LoadMode в панели — это глобальные значения по умолчанию для всех видов; данный набор интерфейсов делает локальное переопределение поверх глобального значения, а виды, для которых функция переопределения не вызвана, продолжают использовать глобальную настройку.
Пояснение: камеры различаются по «идентичности вида» — для вида игрока используется уникальный ID рендер-вида, для SceneCapture — индекс его RenderTarget. Поэтому нужно передавать
PlayerController(а не Pawn): Pawn не несёт информации о том, «в каком вьюпорте он отображается».
Переопределение по игроку (разделение экрана / несколько локальных игроков)
// Вьюпорт игрока 2 показывает облако точек, остальные вьюпорты не затронуты
LCCComponent->SetPlayerRenderMode(Player2Controller, ERenderMode::PointCloud);
LCCComponent->SetPlayerLoadMode(Player2Controller, ELoadMode::OnlyMain);
Текстовый Blueprint:
[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 можно отложить вызов на один кадр.
Типичная ошибка 1: вызов
SetSceneCapture...доCapture Scene, когда у capture не отмеченоCapture Every Frame→ настройка теряется, изображение не меняется.Типичная ошибка 2:
Targetподключён к SceneCapture2D. Правильно: Target = захватываемый компонент LCC, а SceneCapture2D передаётся в параметрIn Capture 2D.