Concevoir une application en 3D compatible avec tous les matériels de réalité virtuelle ou augmentée
Application installée sur un ordinateur, un ordiphone ou sur un casque autonome
Pour qu’une application en 3D soit compatible avec tous les matériels de réalité virtuelle ou augmentée, il faut y intégrer un environnement d’exécution OpenXR et elle doit utiliser les fonctions d’appel à cet environnement. OpenXR remplace OpenVR, qui ne fonctionnait pas avec les casques de réalité augmentée.

L’application SteamVR intègre un environnement d’exécution OpenXR.
Monado est un environnement d’exécution OpenXR. Il est utilisé par exemple dans WiVRn, qui permet d’afficher en réalité virtuelle dans un casque autonome, une application OpenXR installée et exécutée sur un ordinateur. Ainsi, une application OpenXR non prévue pour être installée dans le système du casque autonome peut tout de même y être affichée.
Éditeurs d’applications en 3D permettant d’intégrer OpenXR dans une application :
- Bewy : voir Bevy Mod XR. Permet aussi d’utiliser WebGPU.
- Godot : voir documentation XR.
- O3DE : voir OpenXR Developer Workflow.
- OpenSpace3D : voir le module OpenXR.
- Panda3D : voir le module panda3d-openxr.
Application web
Pour qu’une application web en 3D s’affiche en réalité virtuelle dans un casque et communique avec les manettes et autres périphériques, via un navigateur web, il est préférable de la concevoir pour qu’elle utilise l’interface WebXR intégrée dans le navigateur web. WebXR remplace WebVR, devenue obsolète. Vous pouvez tester la compatibilité de votre navigateur web sur WebXR Report.

Sur un ordinateur avec un casque filaire, Chrome et Edge, basés sur le navigateur web Chromium, intègrent bien l’interface WebXR. Dans un casque autonome, si le navigateur web disponible n’intègre pas l’interface WebXR, installez par exemple le navigateur web Wolvic.
Exemples d’applications web utilisant WebXR :
Une application web peut utiliser le microprocesseur de votre carte graphique (le GPU) si elle fait appel à l’interface WebGPU intégrée dans le navigateur web. Cela permet d’améliorer la qualité et la vitesse de l’affichage. WebGPU permet d’utiliser les fonctions de la carte graphique, via les interfaces Direct3D dans Windows, Metal dans macOS et Vulkan dans Linux. WebGPU remplace WebGL, devenue obsolète. Vous pouvez tester la compatibilité de votre navigateur web sur WebGPU Browser Report, sur WebGPU Samples ou sur Web Graphics API Tester.
Outils de développement permettant d’utiliser WebXR et WebGPU dans une application web :
- Babylon.js, écrit en TypeScript. Voir la documentation WebXR et la documentation WebGPU.
- Éditeur de scènes en 3D + moteur de rendu en 3D PlayCanvas. Voir le manuel WebXR et le manuel WebGPU.
- Librairie de rendu en 3D three.js. Voir le manuel WebXR et la documentation WebGPU. three.js est utilisé par :
- Cadriciel de développement Elixr, écrit en TypeScript.
- Cadriciel de développement A-Frame, écrit en JavaScript. Extension Blender Exporter to A-Frame VR.
- Éditeur de scènes en 3D Digital Bacon.
Scènes multi-utilisateurs et métavers utilisant WebXR :
- Cadriciel de développement ATON. Utilise three.js.
- Cadriciel de développement CIRCLES XR. Utilise three.js.
- Cadriciel de développement Networked-Aframe.
- UMI3D permet de créer des scènes 3D interactives mais nécessite un navigateur web spécifique.
- Le cadriciel de développement Colyseus, écrit en JavaScript/TypeScript et Node.js, permet de rendre multi-utilisateurs des scènes 3D développées avec PlayCanvas, Babylon.js…
- Métavers Infinite Reality Engine, écrit en TypeScript. Transmission voix et vidéo en WebRTC.
- Métavers Vircadia, écrit en TypeScript.
Moteurs physiques
- PHY facilite l’utilisation de ces moteurs physiques avec three.js :
- ammo.js.
- Havok Physics, utilisé par Babylon.js.
- Jolt Physics, utilisé par Godot Engine.
- OimoPhysics.
- PhysX pour utiliser Nvidia PhysX.
- Rapier, utilisé par Elixr, Infinite Reality Engine, Third Room.
- enable3d ou Physijs facilitent l’utilisation d’ammo.js avec three.js.
- ReactPhysics3D.
- Open Dynamics Engine.
- Chrono.
- PositionBasedDynamics pour simuler la déformation de corps rigides. Voir vidéo de démonstration.
- Avian, utilisé par Bevy.
- SPlisHSPlasH pour simuler l’écoulement dynamique de fluides.
- MuJoCo pour simuler les mouvements de structures articulés.
- SOFA : interactions physiques basées sur des calculs par la méthode des éléments finis.
Jumeaux numériques en réalité virtuelle
Le protocole de transmission MQTT permet de faire communiquer des objets virtuels avec des objets physiques. Il suffit d’intégrer un client MQTT dans l’application de réalité virtuelle, qu’elle soit installée sur un ordinateur ou sur un casque autonome, ou qu’elle soit en mode web. MQTT permet aussi bien d’envoyer des mesures (position et vitesse d’un objet, valeur d’un capteur…) que de recevoir des commandes.
- Un article sur un jumeau numérique de robots industriels, avec Unity, WebXR, MQTT.
- Vuforia Studio de PTC permet d’exporter des projets CAO en scènes 3D, utilisant MQTT pour communiquer avec des objets connectés via la plateforme Internet des Objets ThingWorx.
Application 3D en réalité augmentée, en mode web
WebAR permet d’afficher des applications en réalité augmentée dans un navigateur web, sans avoir besoin d’installer une application.
Formats de stockage et d’échange
Pour enregistrer, exporter et importer des objets et des scènes 3D, il est recommandé d’utiliser le format de fichier Universal Scene Description (OpenUSD) ou le format de fichier glTF.
Un peu d’histoire
- Réalité virtuelle: Des origines de la stéréoscopie à nos jours.
- Le Stéréo-Club Français, association fondée en 1903, a pour but de réunir les personnes s’intéressant à la stéréoscopie et de promouvoir l’image en relief (3D) sous toutes ses formes.