Configurer Remote Rendering pour Unity
Pour activer Azure Remote Rendering (ARR) dans Unity, une configuration de projet peut être nécessaire. Nous fournissons également des méthodes dédiées qui prennent en charge certains aspects spécifiques à Unity.
Configuration du projet
Lorsque vous utilisez OpenXR, la fonctionnalité Azure Remote Rendering doit être activée dans les paramètres Unity OpenXR.
Pour les autres paramètres de projet requis et recommandés, utilisez le validateur de projet inclus dans le package Unity Azure Remote Rendering :
- Choisissez l’entrée ValidateProject dans le menu Remote Rendering dans la barre d’outils de l’éditeur Unity.
- Vérifiez que la fenêtre du Validateur de projet ne contient pas d’erreurs et corrigez les paramètres du projet si nécessaire.
Démarrage et arrêt
Pour initialiser Remote Rendering, utilisez RemoteManagerUnity
. Cette classe effectue des appels dans le RenderingConnection
générique, mais implémente déjà des détails spécifiques à Unity pour vous. Par exemple, Unity utilise un système de coordonnées spécifique. Lors de l’appel RemoteManagerUnity.Initialize
, la convention appropriée est définie. L’appel nécessite également que vous fournissiez l’appareil photo Unity qui doit être utilisé pour afficher le contenu rendu à distance.
// 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);
Pour arrêter Remote Rendering, appelez RemoteManagerStatic.ShutdownRemoteRendering()
.
Quand une RenderingSession
a été créée et choisie comme session de rendu principale, elle doit être inscrite auprès de RemoteManagerUnity
:
RemoteManagerUnity.CurrentSession = ...
Exemple de code complet
Cet exemple de code illustre toutes les étapes nécessaires pour initialiser Azure Remote Rendering dans 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();
Fonctions pratiques
Événements d’état de session
RemoteManagerUnity.OnSessionUpdate
émet des événements quand son état de session change. Consultez la documentation sur le code pour plus d’informations.
ARRServiceUnity
ARRServiceUnity
est un composant facultatif permettant de simplifier la configuration et la gestion des sessions. Il contient des options permettant d’arrêter automatiquement sa session lorsque l’application quitte ou que le mode lecture est arrêté dans l’éditeur. Il renouvelle automatiquement le bail de session si nécessaire. Il met en cache des données telles que les propriétés de session (reportez-vous à sa variable LastProperties
) et expose des événements pour les changements d’état de session et les erreurs de session.
Il ne peut pas y avoir plus d’une instance de ARRServiceUnity
à la fois. Ce composant vous permet de commencer plus rapidement grâce à l’implémentation de fonctionnalités courantes. Pour une application plus grande, il peut vous être plus avantageux d’effectuer ces tâches vous-même.
Pour obtenir un exemple de configuration et d’utilisation de ARRServiceUnity
, consultez le Tutoriel : Affichage de modèles rendus à distance.