Руководство по разработке смешанного рендеринга нескольких сцен
Смешанный рендеринг нескольких сцен означает одновременное создание нескольких LCC-сцен и смешивание их рендеринга в реальном времени для достижения правильной окклюзии и смешивания. Чтобы независимо управлять каждой LCC-сценой, участвующей в рендеринге, необходимо создать несколько Renderer и прикрепить каждый Renderer к независимому GameObject, чтобы Transform каждой LCC-сцены можно было управлять независимо.
Шаг 1: Создайте сцену и GameObject
Создайте совершенно новую сцену в Unity. Unity по умолчанию создаёт Main Camera и Directional Light.
Создайте LCCManager
Щёлкните правой кнопкой мыши в пустой области окна Hierarchy, выберите Create Empty во всплывающем меню, чтобы создать пустой GameObject, назовите его LCCManager, нормализуйте его Transform и добавьте к нему скрипт LCCManager через Add Component.

Создание GameObject LCCManager и добавление скрипта LCCManager
Создайте LCCRenderer01
Щёлкните правой кнопкой мыши в пустой области окна Hierarchy, выберите Create Empty, чтобы создать пустой GameObject, назовите его LCCRenderer01 и задайте его Transform значения Rotation.x = -90 и Scale.x = -1.

Создание LCCRenderer01 и настройка его Transform (Rotation.x = -90, Scale.x = -1)
Создайте LCCRenderer02
Аналогичным образом создайте ещё один пустой GameObject, назовите его LCCRenderer02 и также задайте его Transform значения Rotation.x = -90 и Scale.x = -1.

Создание LCCRenderer02 и настройка его Transform (Rotation.x = -90, Scale.x = -1)
Примечание:
Настройки Transform GameObject LCCRenderer (Rotation.x = -90, Scale.x = -1) выравнивают его с системой координат данных LCC. Подробнее о выравнивании системы координат см. в разделе «Система координат данных LCC» документа Введение в Unity SDK.
Шаг 2: Напишите скрипт рендеринга нескольких сцен
Создайте новый скрипт C# с именем MultiRenderer.cs со следующим кодом:
using LCCCore;
using UnityEngine;
public class MultiRenderer : MonoBehaviour
{
public LCCManager m_manager;
public string m_FilePath01;
public Transform m_transform01;
public string m_FilePath02;
public Transform m_transform02;
private LCCCore.Renderer m_renderer01;
private LCCCore.Renderer m_renderer02;
private int m_currentFileIndex = 0;
void Start()
{
m_manager.SetPlatformType(PlatformType.PC);
// Переключаемся в режим MultiRender, чтобы несколько Renderer могли быть активны и смешиваться одновременно
m_manager.SwitchRenderPass(ActiveRenderMode.MultiRender);
Debug.Log("Запущено ");
m_renderer01 = m_manager.GetRender(m_transform01);
m_renderer02 = m_manager.GetRender(m_transform02);
m_currentFileIndex = 0;
m_renderer01.Load(m_FilePath01, onProgress, onComplete);
m_currentFileIndex = 1;
m_renderer02.Load(m_FilePath02, onProgress, onComplete);
}
private void onProgress(float _progress)
{
Debug.Log($"[LCCRenderer] файл {m_currentFileIndex}, прогресс загрузки: {_progress:P1}");
}
private void onComplete()
{
Debug.Log($"[LCCRenderer] файл {m_currentFileIndex} загружен");
}
}
Шаг 3: Прикрепите скрипт и настройте свойства
- Прикрепите скрипт
MultiRenderer.csк GameObject LCCManager в окне Hierarchy. - В окне Inspector назначьте ссылки и пути согласно таблице ниже:
| Свойство скрипта | Назначение |
|---|---|
| Manager | Перетащите GameObject LCCManager на это свойство |
| Transform01 | Перетащите GameObject LCCRenderer01 на это свойство |
| Transform02 | Перетащите GameObject LCCRenderer02 на это свойство |
| File Path01 | Путь к первому источнику данных LCC |
| File Path02 | Путь ко второму источнику данных LCC |

Настройка ссылок и путей к данным скрипта MultiRenderer в Inspector
Шаг 4: Запустите
Нажмите кнопку Play в окне Game, и вы увидите две LCC-сцены, отрендеренные и смешанные одновременно. Измените значения Transform GameObject LCCRenderer01 или LCCRenderer02, и каждая отрендеренная сцена будет обновляться в реальном времени.

Две LCC-сцены, отрендеренные и смешанные одновременно после запуска
Ключевые моменты
Существуют два ключевых момента для разработки смешанного рендеринга нескольких LCC-сцен:
- Переключение в режим MultiRender: используйте
m_manager.SwitchRenderPass(ActiveRenderMode.MultiRender);, чтобы позволить смешивать несколько LCC-сцен. По умолчанию используется режимSingleRender, который не позволяет смешивать несколько LCC-сцен. - Прикрепите каждый Renderer к независимому GameObject: используйте
GetRender(Transform), чтобы привязать каждый Renderer к независимому GameObject, благодаря чему Transform каждой LCC-сцены можно управлять независимо.