Настройка Удаленной отрисовки для Unity
Чтобы включить Azure Удаленная отрисовка (ARR) в Unity, может потребоваться некоторая конфигурация проекта. Мы также предоставляем выделенные методы, которые заботятся о некоторых аспектах Unity.
Конфигурация проекта
При использовании OpenXR функция Azure Удаленная отрисовка должна быть включена в параметрах Unity OpenXR.
Для других обязательных и рекомендуемых параметров проекта используйте проверяющий элемент Project, включенный в пакет Azure Удаленная отрисовка Unity:
- Выберите запись ValidateProject в меню Удаленная отрисовка на панели инструментов редактора Unity.
- Просмотрите окно проверки проекта для ошибок и исправьте параметры проекта, если это необходимо.
Запуск и завершение работы
Чтобы инициализировать Удаленную отрисовку, используйте 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
см. в разделе Учебник: просмотр удаленно отрисованных моделей.