Настройка Удаленной отрисовки для Unity

Чтобы включить Azure Удаленная отрисовка (ARR) в Unity, может потребоваться некоторая конфигурация проекта. Мы также предоставляем выделенные методы, которые заботятся о некоторых аспектах Unity.

Конфигурация проекта

При использовании OpenXR функция Azure Удаленная отрисовка должна быть включена в параметрах Unity OpenXR.

Screenshot of the Unity Project Settings dialog. The Open XR subentry is selected in the list on the left. The Azure Remote Rendering Open XR feature is highlighted with a checked checkbox.

Для других обязательных и рекомендуемых параметров проекта используйте проверяющий элемент Project, включенный в пакет Azure Удаленная отрисовка Unity:

  1. Выберите запись ValidateProject в меню Удаленная отрисовка на панели инструментов редактора Unity.
  2. Просмотрите окно проверки проекта для ошибок и исправьте параметры проекта, если это необходимо.

Запуск и завершение работы

Чтобы инициализировать Удаленную отрисовку, используйте RemoteManagerUnity. Этот класс вызывает универсальный RenderingConnection, но реализует детали, относящиеся к Unity. Например, Unity использует особую систему координат. При вызове RemoteManagerUnity.Initializeустанавливается соответствующее соглашение. Кроме того, вызов требует предоставления камеры Unity, которая должна использоваться для отображения удаленно отрисованного содержимого.

// initialize Azure Remote Rendering for use in Unity:
// it needs to know which camera is used for rendering the scene
RemoteUnityClientInit clientInit = new RemoteUnityClientInit(Camera.main);
RemoteManagerUnity.InitializeManager(clientInit);

Чтобы завершить работу Удаленной отрисовки, вызовите RemoteManagerStatic.ShutdownRemoteRendering().

После создания RenderingSession и выбора в качестве основного сеанса отрисовки, необходимо зарегистрировать его в RemoteManagerUnity.

RemoteManagerUnity.CurrentSession = ...

Полный пример кода

В этом примере кода показаны все шаги, необходимые для инициализации Azure Удаленная отрисовка в Unity:

// initialize Remote Rendering
RemoteUnityClientInit clientInit = new RemoteUnityClientInit(Camera.main);
RemoteManagerUnity.InitializeManager(clientInit);

// create a frontend
SessionConfiguration sessionConfig = new SessionConfiguration();
// ... fill out sessionConfig ...
RemoteRenderingClient client = new RemoteRenderingClient(sessionConfig);

// start a session
CreateRenderingSessionResult result = await client.CreateNewRenderingSessionAsync(new RenderingSessionCreationOptions(RenderingSessionVmSize.Standard, 0, 30));
RenderingSession session = result.Session;

// let RemoteManagerUnity know about the session we want to use
RemoteManagerUnity.CurrentSession = session;

await session.ConnectAsync(new RendererInitOptions());

/// When connected, load and modify content

RemoteManagerStatic.ShutdownRemoteRendering();

Удобные функции

События состояния сеанса

RemoteManagerUnity.OnSessionUpdate выдает события при изменении состояния сеанса. Подробные сведения см. в документации по коду.

ARRServiceUnity

ARRServiceUnity — это необязательный компонент для упрощения установки и управления сеансами. Он содержит параметры для автоматической остановки сеанса при выходе приложения или выходе из режима воспроизведения в редакторе. При необходимости он автоматически продлевает аренду сеанса. Он кэширует такие данные, как свойства сеанса (см. его переменную LastProperties), и предоставляет события для изменений состояния сеанса и ошибок сеанса.

Одновременно может существовать не более одного экземпляра ARRServiceUnity. Это необходимо для более быстрого начала работы путем реализации некоторых распространенных функциональных возможностей. Однако для более крупного приложения лучше выполнять эти задачи самостоятельно.

Пример настройки и использования ARRServiceUnity см. в разделе Учебник: просмотр удаленно отрисованных моделей.

Следующие шаги