Apple Vision Pro : notre premier POC inspiré du showroom virtuel Decathlon REVEAL 2022
Ce n’est évidemment pas un scoop : en tant qu’agence experte XR depuis 2009, nous nous sommes forcément penchés sur l’Apple Vision Pro. Nous souhaitons dans cet article vous livrer un premier retour sur expérience très concret en tant que développeurs XR.
Notre équipe a en effet développé un premier POC interne pour l’Apple Vision Pro. Celui-ci réutilise les assets d’un showroom virtuel que nous avons produit pour Decathlon en 2022 en tant que V-Cult, et plus précisément en collaboration avec l’équipe Marketing & Communication de Thibaut Vierling, dans le cadre de leur grand messe de l’innovation DECATHLON REVEAL INNOVATION.
Ce showroom virtuel a permis à Decathlon de présenter à l’ensemble de ses collaborateurs un panel de 14 innovations produits, et de contextualiser chacune d’entre-elles au sein de son environnement de pratique par le biais de l’immersion proposée par le showroom virtuel.
Ce dernier a été déployé sur casques VR Meta Quest 2 pour les collaborateurs participant à l’événement organisé au BTWIN Village à Lille, et une version web a été produite pour les collaborateurs participant à l’événement en distanciel.
Nous nous sommes donc inspirés de ce use case pour notre premier POC pour l’Apple Vision Pro, avec comme ligne directrice de proposer grosso modo un démonstrateur d’innovations produits Decathlon en réalité mixte.
Nous n’avons donc pas conservé l’intégralité des fonctionnalités originelles du showroom virtuel, et avons notamment fait abstraction des scènes 3D contextualisant chaque innovation produit. Seules ont été gardées les fiches produits, les vidéos de pitch, et bien sûr la visualisation des produits en réalité mixte. Less is more!
Choix techniques : SwiftUI ou Unity ?
La singularité de l’équipe de bcd.tech constituée en janvier 2024 est la rencontre entre d’un côté des vétérans du développement d’applications iOS côté BetterCallDave, et de l’autre des vétérans du développement Unity côté V-Cult.
Vraie anecdote : lors de nos premiers échanges internes autour de ce POC, nous n’avons pas su trancher entre SwiftUI (pour les néophytes : l’environnement de développement d’interfaces iOS, iPadOS, watchOS, tvOS, visionOS et macOS) et Unity (moteur 3D de référence pour le développement d’applications 3D et XR, à l’instar d’Unreal Engine).
Nous avons donc finalement décidé de développer deux POCs : un sur SwiftUI, et un sur Unity, afin de peser le pour et le contre de chaque technologie.
Team SwiftUI : retour sur expérience
par Frédéric AGEZ, CTO @ bcd.tech
Pros
SwiftUI est un framework de développement lancé par Apple, ce qui signifie quil est parfaitement intégré à l’écosystème Apple. On peut supposer qu’Apple a optimisé cette intégration pour améliorer les performances des applications développées avec SwiftUI sur ses appareils, y compris l’Apple Vision Pro.
La communauté SwiftUI est active, ce qui permet aux développeurs d’accéder à des ressources open source, des tutoriels et d’autres outils utiles. Pour les personnes ayant déjà développé des applications avec SwiftUI, le développement sur un nouveau périphérique Apple est facilité, car il n’est pas nécessaire d’apprendre un nouveau langage de programmation.
SwiftUI permet également d’ajouter facilement des frameworks d’Apple tels qu’ARKit et RealityKit, ce qui facilite la création d’applications de réalité augmentée pour l’Apple Vision Pro. De plus, Xcode propose une prévisualisation en temps-réel des applications développées avec SwiftUI, ce qui permet un gain de temps non négligeable lors du développement.
Enfin, la quasi unicité du code source d’une même application déployée sur iPhone, iPad, Mac et Vision Pro (moyennant évidemment les nécessaires adaptations d’UI) est un énorme avantage dans une optique de déploiement cross-platform au sein de l’écosystème Apple (j’insiste bien sur écosystème Apple).
Cons
Il est vrai que la courbe d’apprentissage de SwiftUI n’est pas très rapide. Il faut dabord maîtriser Swift, puis comprendre le fonctionnement de SwiftUI, ce qui peut prendre du temps aux développeurs débutants. Sur une note plus personnelle, n’ayant pas réellement d’expérience en ingénierie 3D, j’ai également buté sur des choses en apparence basiques telles que l’ancrage dun objet 3D au sol…
Ensuite, j’estime que les possibilités de design des applications développées avec SwiftUI semblent limitées. On constate que de nombreuses applications Vision Pro ont le même look. Bien que cela puisse être un avantage pour ne pas perdre les utilisateurs habitués au système Apple, cela peut également limiter la créativité des développeurs. Cependant, pas de quoi remettre en cause nos intentions pour le POC et nous avons parfaitement pu adapter le design des maquettes UI d’origine pour le Vision Pro. Je me suis pour ma part essentiellement référé aux maquettes UI de la version web, en visant donc une intégration d’interfaces utilisateurs dites fenêtrées.
Bon à savoir : Apple met à disposition des templates Sketch et Figma à disposition des UI designers pour le Vision Pro.
Enfin, le développement d’applications avec SwiftUI est limité aux appareils Apple. Les développeurs ne peuvent pas créer d’applications pour d’autres plateformes telles qu’Android, ce qui peut limiter la portée de leurs applications.
Team Unity : retour sur expérience
par Sid Ahmed REKIK, Ingénieur XR @ bcd.tech
Pros
Unity a grandement simplifié la création de projets pour l’Apple Vision Pro. Parmi les nombreux avantages de l’utilisation de Unity, l’une des fonctionnalités les plus remarquables est la possibilité d’importer des projets VR existants, par exemple ceux développés pour le Meta Quest, et de les adapter facilement à une version visionOS, le système d’exploitation de l’Apple Vision Pro.
En tant que solution multiplateforme, Unity permet de développer des applications pour divers appareils XR, y compris l’Apple Vision Pro, ce qui en fait un choix idéal pour les développeurs souhaitant étendre leur portée. De plus, les fonctionnalités du package AR Foundation, couramment utilisées pour les expériences XR, sont également applicables au développement pour l’Apple Vision Pro, offrant ainsi une continuité et une facilité d’utilisation pour les développeurs XR habitués à Unity.
Côté testing, l’option PlayToDevice de Unity permet aux développeurs de tester leurs applications en direct à la fois dans l’éditeur Unity et sur l’Apple Vision Pro, éliminant ainsi le besoin de compilation pour chaque test. Le système de validation de projet Polyspatial accélère également l’adaptation des projets Unity classiques pour une version visionOS, rendant le processus de développement plus fluide.
Enfin, Unity permet aussi la création d’interfaces 2D pour l’Apple Vision Pro grâce à un espace fenêtré dédié, ajoutant une flexibilité supplémentaire pour les développeurs.
Cons
Cependant, certains inconvénients doivent être pris en compte. Commençons par les spécifications matérielles. il est indispensable de développer votre application Apple Vision Pro sur un Apple Silicon Mac (doté du processeur m1 ou supérieur), sous macOS Monterey (ou version plus récente) et disposant de la version 15.2 de Xcode (ou plus récente). Pas de quoi ravir les développeurs XR équipés à lécrasante majorité de PC.
En termes de build, les développeurs doivent choisir entre le mode entièrement immersif ou la Réalité Mixte avant de compiler l’application, limitant ainsi la flexibilité en termes de conception de l’expérience utilisateur. De plus, les UI créées dans Unity peuvent parfois ne pas s’afficher comme prévu sur le Vision Pro, nécessitant pas mal d’allers-retours et d’ajustements supplémentaires (mais ce qui est le cas en théorie pour tous les contenus 2D et 3D créés dans Unity).
Le package d’interactions par les mains quant à lui ne peut pas être utilisé dans le simulateur Apple Vision Pro, ce qui restreint les tests d’interactions possibles avant le déploiement sur le dispositif réel. Les développeurs doivent également utiliser Shader Graph pour recréer les types de shaders classiques dans Unity, ce qui peut ajouter une couche de complexité au processus de développement.
Enfin, il faut accepter que les mises à jour Unity auront toujours un peu de latence sur les avancées de visionOS et par rebond sur les nouvelles fonctionnalités natives offertes par SwiftUI.
Nos conclusions
Quelle est l’application la plus performante entre celle développée en SwiftUI et celle développée en Unity ? On ne sait pas vraiment, puisque nous n’avons même pas pu tester notre POC directement sur le casque Apple Vision Pro, en vente en France depuis le 12 juillet seulement (certains d’entre-nous on cependant pu le tester au Apple Store de Lille depuis, on vous débriefe ici).
Fort heureusement, Apple met à disposition un simulateur visionOS pour permettre aux développeurs de tester leurs applications Vision Pro via Xcode, sans quoi nous naurions évidemment jamais écrit ce papier.
Finalement, le choix entre SwiftUI et Unity pour le développement d’applications sur lApple Vision Pro dépend largement des besoins spécifiques du projet ainsi que du profil et de l’expérience des développeurs staffés dessus. SwiftUI, étant une solution native d’Apple, offre une intégration parfaite avec l’écosystème Apple, des performances optimisées, et un accès facile aux frameworks comme ARKit et RealityKit. Cependant, il présente une courbe d’apprentissage notable pour les nouveaux développeurs, ainsi que des limitations en termes de design et de portée multiplateforme. Mais globalement, SwiftUI reste une belle opportunité pour les développeurs iOS (Apple au sens large) souhaitant s’initier aux technologies XR.
De son côté, Unity se distingue par sa flexibilité multiplateforme et sa capacité à simplifier l’adaptation de projets VR existants pour visionOS. Cependant, Unity présente des défis, notamment la nécessité de jongler entre modes immersifs ou réalité mixte avant la compilation, des ajustements supplémentaires pour le design d’interfaces utilisateurs, et accuse dune latence dans l’adoption des nouvelles fonctionnalités de visionOS par rapport à un SwiftUI natif Apple.
Pour faire court, privilégiez SwiftUI pour créer rapidement des applications Vision Pro relativement basiques et aux interfaces fenêtrées, mais également intégrées au sein de l’intégralité de l’écosystème Apple ; misez sur Unity pour le développement d’applications plus complexes, plus immersives, et sollicitant le plein potentiel de vos développeurs XR expérimentés, d’autant plus sils s’agit de porter sur l’Apple Vision Pro des applications initialement déployées sur d’autres plateformes XR.
Pour les développeurs XR les plus avancés, il sera également intéressant de garder un oeil sur les évolutions de WebXR (pour les néophytes : sur les possibilités de pouvoir créer des pages web pleinement immersives et accessibles sur le navigateur Safari du Apple Vision Pro). Voici par exemple une excellente démo de réalité mixte par Stijn Spanhove qui combine retransmission live du Tour de France, et visualisation de données temps-réel relatives au déroulé de l’étape en cours, projetées sur un modèle 3D illustrant le parcours de l’étape, ce dernier créé à partir des données topographiques et images satellites obtenues via Google Earth. Et puisqu’on évoquait l’interopérabilité cross-platform, la démo ci-dessous illustre l’expérience à la fois sur Meta Quest 3 et sur Apple Vision Pro. Très smart !