2. Présentation de la plateforme VisionOS
1. Présentation de la plateforme VisionOS
La prise en charge de VisionOS par Unity combine toute la puissance de l'éditeur et du moteur d'exécution Unity avec les capacités de rendu fournies par RealityKit. Les fonctionnalités principales de Unity (notamment les scripts, la physique, le mélange d'animations, l'IA, la gestion de scènes, etc.) sont prises en charge sans modification. Cela permet à la logique des jeux et des applications de s'exécuter sur VisionOS comme n'importe quelle autre plate-forme prise en charge par Unity, dans le but de permettre aux jeux ou applications Unity existants de pouvoir intégrer leur logique sans apporter de modifications.
Pour le rendu, la prise en charge de visionOS est fournie via RealityKit. Les fonctionnalités principales telles que les maillages, les matériaux, les textures, etc. doivent fonctionner de manière transparente. Les fonctionnalités plus complexes, telles que les particules, sont limitées. Les fonctionnalités avancées telles que le post-traitement plein écran et les décalcomanies ne sont actuellement pas prises en charge, bien que cela puisse changer à l'avenir. Pour plus de détails, consultez les exigences et limitations de visionOS PolySpatial ainsi que les fonctionnalités et composants Unity pris en charge .
La création de la plate-forme VisionOS avec PolySpatial dans Unity ajoute de nouvelles fonctionnalités pour prendre en charge la création de contenu XR exécuté sur des appareils distincts, tout en offrant une expérience de développement transparente et efficace. Mieux encore, Unity PolySpatial pour VisionOS réagit par défaut au monde réel et aux autres contenus AR comme n'importe quelle autre application XR Unity.
2. Types d'applications visionOS
Unity prend en charge plusieurs types d'applications différents sur VisionOS, chacun avec ses propres avantages :
Si vous souhaitez créer des applications de réalité virtuelle (VR) entièrement immersives pour visionOS, consultez Applications VR entièrement immersives sur visionOS pour plus d'informations.
Si vous souhaitez créer des applications immersives de réalité mixte (MR) pour visionOS, consultez PolySpatial MR Apps sur visionOS pour plus d'informations. Les applications sont créées à l'aide de la technologie PolySpatial nouvellement développée par Unity, où les applications sont simulées à l'aide de Unity mais rendues à l'aide de RealityKit, le moteur de rendu système de VisionOS.
Si vous souhaitez créer du contenu qui s'exécutera dans une fenêtre sur visionOS, consultez Applications Windows sur visionOS pour plus d'informations.
2.1 Mode VisionOS
2.1.1 Application de réalité mixte polyspatiale sur VisionOS
Le contenu de réalité mixte sur VisionOS peut être dans l'un des deux modes, que nous appelons modes « partagé » et « exclusif ».
modèle |
décrire |
Partager l'espace |
En mode Partagé, votre application coexiste avec toute autre application partageant une activité dans l’espace réel. Chaque application possède un ou plusieurs volumes limités (voir ci-dessous), mais aucun volume illimité. La position et l'orientation (relative et absolue) de ces volumes sont opaques à l'application. La saisie dans ce mode est limitée au mécanisme 3D Touch via les appareils PolySpatialTouchSpace (voir Saisie ). De plus, les informations ARKit telles que la position de la main, le plan ou le maillage du monde ne sont pas disponibles dans ce mode. |
Espace complet |
En mode Exclusif, une seule application contrôle l'intégralité de la vue via un volume illimité (voir ci-dessous) en plus du volume délimité précédemment créé. Dans ce mode, l'application connaît la position relative de son volume, a accès à toutes les fonctionnalités AR de l'appareil et utilise les informations de position des mains/articulations pour piloter directement la saisie et l'interaction. L'application ne peut toujours pas déplacer ou redimensionner les volumes limités. Elle doit donc s'en remettre à l'utilisateur pour garantir que les volumes limités ne chevauchent pas de manière significative le contenu des volumes illimités. |
1.Volumes
Les volumes sont un nouveau concept pour les plateformes de réalité mixte. Les applications peuvent créer un ou plusieurs volumes pour afficher du contenu dans un espace de réalité mixte. Chaque volume est une boîte directionnelle contenant du contenu 3D. Dans visionOS, les utilisateurs peuvent déplacer et mettre à l’échelle indépendamment des volumes dans l’espace réel, mais les développeurs ne peuvent pas déplacer et mettre à l’échelle des volumes par programmation. Les développeurs Unity interagissent avec les volumes à l'aide d'un nouveau composant Unity appelé Volume Camera, décrit ci-dessous.
modèle |
décrire |
volume délimité |
Un volume délimité a une étendue finie en forme de boîte. Les utilisateurs peuvent déplacer et transformer des volumes délimités dans l’espace mondial, mais les développeurs ne peuvent pas déplacer et transformer par programmation. Actuellement, le contenu Unity au sein d'un volume délimité s'étendra pour remplir la taille réelle du volume. La saisie dans des volumes délimités est limitée au « 3D Touch » fourni par les appareils PolySpatialTouchSpace. Regardez l'entrée . |
Volume infini |
Lors de l'exécution en mode exclusif, le contenu apparaît comme un seul volume illimité sans aucun bord de découpage. L'application possède l'intégralité de la vue de réalité mixte, qu'aucune autre application n'est visible. D'autres volumes limités de la même application peuvent coexister avec ce volume illimité. Dans une quantité illimitée, les applications peuvent demander l’accès à des données complètes de suivi des mains. |
2. Caméra volumétrique
VolumeCamera est le principal moyen par lequel le code utilisateur et le contenu interagissent avec les volumes et les modes visionOS .
2.1.2 Applications fenêtrées dans VisionOS
Dans visionOS, les utilisateurs peuvent utiliser des fenêtres pour présenter du contenu 2D ou 3D , ou des volumes pour présenter du contenu et des objets 3D. Unity décrit les applications dans ces fenêtres comme des « applications de fenêtres » .
Par défaut, si vous créez une application Unity ciblant la plate-forme visionOS sans activer le runtime PolySpatial ou les plug-ins visionOS via le gestionnaire de plug-ins XR, votre contenu Unity devient une application fenêtrée dans visionOS. Vous pouvez le voir en créant SimpleSamples pour la plate-forme VisionOS sans activer le PolySpatial Runtime ou le plug-in VisionOS.
Pour détecter les interactions avec les applications Unity au sein des composants de fenêtre sur VisionOS, les utilisateurs peuvent profiter du « support tactile » fourni par le package système d'entrée ( com.unity.inputsystem ) . Pour en savoir plus sur la conception des composants Windows sur visionOS, consultez les directives d'interface humaine visionOS d'Apple.
2.1.3 VR entièrement immersive sur VisionOS
Avec Unity, les utilisateurs peuvent exploiter des flux de travail familiers pour créer des expériences totalement immersives pour VisionOS, notamment des jeux de réalité virtuelle ou des environnements entièrement virtuels. Aujourd'hui, Unity propose une large gamme de fonctionnalités et d'API qui peuvent être utilisées pour développer des expériences totalement immersives pour VisionOS. Ces plugins incluent :
- plug-in visionOS
- Boîte à outils d'interaction XR
- Utilitaires de base XR
- Système d'entrée
- Modèle de projet VR
- Suivi des mains
Après avoir créé votre contenu VR dans Unity, sélectionnez simplement VisionOS - Full Immersion dans la fenêtre de gestion du plug-in XR, sélectionnez et créez la plate-forme VisionOS, recompilez le plug-in natif et le fichier de projet Unity XCode sera généré. À partir de là, vous continuerez le processus de développement dans XCode , où vous pourrez explorer des concepts tels que la transition entre le contenu fenêtré et le contenu entièrement immersif.
Portage des expériences VR sur VisionOS
Pour les utilisateurs souhaitant porter un jeu VR existant et l'utiliser comme une expérience totalement immersive, vous pouvez effectuer certaines opérations en plus du flux de travail de création présenté dans la section précédente pour rendre la transition plus fluide.
1. Préparez les graphiques
Utilisation du pipeline de rendu universel (URP) – VisionOS prend en charge le rendu foveated, une technologie qui offre aux utilisateurs de Vision Pro une expérience visuelle de meilleure qualité. Pour profiter de la fonctionnalité Foveated Rendering, nous vous recommandons d'utiliser URP, qui permet d'appliquer le Foveated Rendering tout au long du pipeline. Nous prévoyons également de concentrer les améliorations futures sur les URP. \ **Utiliser le rendu d'instance en un seul passage – **Le rendu d'instance en un seul passage de Unity prend désormais en charge l'API Metal Graphics et sera activé par défaut. Cela réduit la surcharge de certaines parties du pipeline de rendu, telles que l'élimination et l'ombrage, et contribue également à réduire la surcharge du processeur lors du rendu stéréoscopique d'une scène. \**Assurez-vous que le tampon de profondeur est différent de zéro pour chaque pixel - **Sur visionOS, le tampon de profondeur est utilisé pour la reprojection. Pour garantir que les effets visuels tels que les skybox et les shaders s'affichent parfaitement, assurez-vous d'écrire une valeur pour la profondeur de chaque pixel. \
2. Adaptez les interactions basées sur le contrôleur à vos mains
Tirer parti du XR Interaction Toolkit (XRI) –Avec VisionOS, les utilisateurs interagiront avec le contenu en utilisant leurs mains et leurs yeux. XRI fournit une interaction de haut niveau qui résume la mise en œuvre du suivi manuel et implémente facilement des interactions telles que le survol, la saisie et la sélection dans les interfaces utilisateur de l'espace 3D et des mondes spatiaux 3D. Grâce à XRI, vous pouvez également obtenir un retour visuel des entrées, et son abstraction des entrées permet également d'utiliser une création sur plusieurs plates-formes. \ Plongez dans le package Unity Hands - Si vous souhaitez plus de flexibilité dans les opérations de saisie, le sous-système Hands de Unity permet d'accéder à toutes les données brutes sur les articulations des mains via le package Unity Hands. Vous pouvez également apprendre à tirer parti du package Unity Hands pour bénéficier de l'expérience immersive décrite ci-dessus.
Pour plus d'informations sur le portage des expériences VR sur VisionOS, nous vous recommandons de regarder ce guide « Amener votre application Unity VR dans un espace totalement immersif ».
2.2 Exigences et limites de VisionOS PolySpatial
2.2.1 Exigences
2.2.1.1 Version Unitaire
Unity PolySpatial et sa prise en charge de visionOS nécessitent Unity 2022.3 (LTS) ou version ultérieure . Les versions Unity antérieures à 2022.3 ne sont pas prises en charge.
Les développeurs peuvent commencer à utiliser des projets existants sans PolySpatial Beta et simplement les mettre à niveau vers 2022.3 avant de commencer à travailler sur le port VisionOS.
2.2.1.2Matériel , système d'exploitation et Xcode
- La compilation de visionOS nécessite actuellement Xcode 15 bêta 2.
- Vous devez actuellement disposer d’un Mac Apple Silicon (M1/M2) pour compiler pour visionOS.
Pour plus d'informations sur la configuration du développement, consultez Développement et itération
2.2.1.3 Graphiques
Sur visionOS, Unity délègue tout le rendu à la plateforme afin que le système d'exploitation puisse offrir des performances, une autonomie de batterie et une qualité de rendu optimales, en tenant compte de toutes les applications de réalité mixte actuellement en cours d'exécution. Cela impose des limitations significatives aux capacités graphiques disponibles.
Il y aura très probablement des différences visuelles entre le rendu sur RealityKit et le rendu Unity. Nous travaillons constamment à améliorer l'équivalence visuelle entre Unity et RealityKit, mais veuillez noter qu'il existe des différences.
2.2.1.4 Pipeline de rendu
Votre projet doit utiliser le pipeline de rendu universel (URP) ou le pipeline de rendu intégré. Les URP sont préférables ; si vous envisagez de migrer votre projet, ce serait une excellente opportunité. La documentation sur la migration est disponible pour migrer des pipelines intégrés vers URP : passez à un pipeline de rendu universel avec notre guide avancé | Blog Unity
2.2.1.5 Shaders et matériaux
Vous pouvez écrire des shaders personnalisés pour visionOS à l’aide d’un sous-ensemble de Unity ShaderGraph. En coulisses, ceci est converti en MaterialX. ShaderLab et d'autres shaders codés ne sont pas pris en charge car RealityKit de VisionOS n'expose pas les langages d'ombrage de bas niveau.
Plusieurs shaders standards importants pour chaque pipeline ont été mappés à l’émulation RealityKit disponible la plus proche. Le support actuel comprend :
- Shaders URP standard : allumé, simple allumé, éteint (+ à déterminer - plus à venir)
- Shaders intégrés standard : Standard, (+ à déterminer - plus à venir)
Pour plus d’informations, consultez Prise en charge des matériaux PolySpatial
2.2.2 Limites connues
Actuellement, Unity PolySpatial XR est publié en tant que produit alpha. Puisqu'il s'agit d'une version anticipée, des modifications sont attendues dans la documentation, le flux de travail et en particulier l'API, veuillez donc en tenir compte lors de la planification de votre projet.
Consultez Fonctionnalités et composants Unity pris en charge pour savoir quelles fonctionnalités Unity peuvent être utilisées sans modification et quelles fonctionnalités doivent être reconsidérées.
Pour plus d'informations sur les matériaux pris en charge sur cette plate-forme, consultez Prise en charge des matériaux PolySpatial et Prise en charge de ShaderGraph pour plus de détails sur l'implémentation de shaders personnalisés avec Unity ShaderGraph et MaterialX.
2.3 Développement et itération
2.3.1 Conditions préalables
Consultez les exigences et limitations de visionOS PolySpatial pour plus d’informations sur le matériel, les logiciels et les fonctionnalités Unity pris en charge.
2.3.2 Activation du runtime PolySpatial
La prise en charge de visionOS pour la réalité mixte est fournie par Unity PolySpatial, qui peut être commutée via l'option Modifier > Paramètres du projet > PolySpatial > Activer le runtime PolySpatial.
2.3.3 Itération et aperçu
Unity propose plusieurs options pour itérer et prévisualiser le contenu pour visionOS. Ces options sont comparables à la prise en charge par Unity d'autres plates-formes autres que les ordinateurs de bureau.
2.3.4 Mode jeu
Le moyen le plus rapide de prévisualiser le contenu consiste à passer en mode lecture dans l'éditeur Unity. Cela fournit le cycle d'itération le plus rapide, mais utilise le système de rendu d'Unity plutôt que RealityKit. Ce mode est optimisé pour une itération rapide, telle que l'itération sur le gameplay ou l'expérience utilisateur, mais peut ne pas toujours représenter fidèlement les visuels ou les caractéristiques de performances de la plate-forme cible. Les effets visuels, l'optimisation et les tâches similaires bénéficient souvent des options de prévisualisation supplémentaires fournies par Unity. De plus, le mode lecture ne peut actuellement pas prévisualiser les volumes ou les nouveaux modes d'entrée fournis par visionOS.
Pour mieux se rapprocher du runtime visionOS, le mode de jeu d'une application PolySpatial crée une hiérarchie parallèle d'objets de jeu de support qui sont liés aux objets de jeu simulés de l'application mais effectuent tout le rendu. Cela signifie que vous observerez certaines différences en fonction de l'état du paramètre du projet Activer PolySpatial Runtime. Ces différences sont intentionnelles car elles permettent aux développeurs de mieux prévisualiser l'apparence de leur contenu sur l'appareil.
2.3.5 Version du lecteur visionOS.
Sélectionnez visionOS dans la fenêtre Paramètres de construction pour créer avec visionOS. La plupart des options des paramètres de construction sont similaires à celles fournies pour iOS. La version du lecteur VisionOS produira un projet Xcode qui devra être compilé sur un Mac (actuellement, il doit s'agir d'un Mac avec une puce Apple), mais pourra cibler l'émulateur VisionOS ou le casque Apple Vision Pro connecté au Mac.
Remarque : contrairement à iOS, vous n'avez pas besoin de passer à un autre SDK dans les paramètres du projet pour exécuter votre contenu dans le simulateur. Sélectionnez simplement la cible du simulateur RealityDevice dans Xcode.
Pour créer un kit de développement, assurez-vous d'avoir configuré un fichier de configuration valide et un certificat de signature pour la plate-forme de développement Apple (y compris VisionOS). Vous devez également vous assurer que l'appareil est correctement enregistré sur votre compte de développement.
2.3.6 Enregistrement et lecture
PolySpatial pour VisionOS prend en charge un flux de travail d'enregistrement et de lecture unique qui vous permet d'enregistrer une session (y compris la saisie de commandes), puis de la lire dans l'éditeur Unity. Pour plus d'informations, consultez les informations sur les outils PolySpatial.
Prise en charge du débogage
Lors de l'utilisation de PolySpatial, le flux de travail de débogage standard fonctionne normalement. Vous pouvez activer le débogage de script dans les paramètres de construction et éventuellement attendre un débogueur géré. Connectez ensuite un débogueur/IDE géré à l’application en cours d’exécution et déboguez le code du script.
2.3.7 Éléments de base dans PolySpatial XR
Le système de blocs de construction est une superposition dans la vue de la scène qui vous aide à accéder rapidement aux éléments couramment utilisés dans votre projet. Pour activer les superpositions de blocs de construction, cliquez sur le menu Hamburger > Menu Superposition dans la vue de la scène, ou déplacez la souris sur la vue de la scène et appuyez sur la touche Tilde. Ensuite, activez simplement la superposition des blocs de construction.
Vous pouvez trouver plus d'informations sur le système de blocs de construction dans le package XR Core Utils.