TP — Première application de réalité virtuelle
Passer d’une scène Unity à un atelier VR : suivi du casque, contrôleurs, téléportation, manipulation et interactions événementielles avec OpenXR et XR Interaction Toolkit.

- Durée indicative
- 3 heures
- Environnement
- Unity 6.3 LTS · URP
OpenXR · XRI 3.3.2 - Niveau
- Débutant VR · Bases Unity
Vous allez réaliser un petit atelier de cubes en VR : regarder autour de vous, vous déplacer par téléportation, saisir et lancer des objets, faire apparaître un cube avec un bouton du contrôleur et changer la couleur d’un objet en le visant.
Ce TP se place généralement après Les bases d’Unity 3D. Vous devez savoir créer une scène, régler un Transform, ajouter un composant, fabriquer un prefab et attacher un script C#. Si vous avez déjà ces bases, vous pouvez commencer directement ici.
Comptez environ 3 heures, installations et premiers builds compris ; adaptez ce temps au matériel disponible.
Brest uniquement Configurer les PC de l’école
Plan du TP
Pour poursuivre : le TP Navigation 3D compare déplacement continu, téléportation, navigation multi-échelle et Grabbing-the-Air dans une ville et un labyrinthe.
1. Préparer le projet et les packages
Créer un atelier simple
- Dans Unity Hub, créez un projet Universal 3D avec Unity 6.3 LTS (6000.3). Nommez le projet
VRBasics. - Dans
Assets, créez les dossiersScenes,Materials,PrefabsetScripts. Enregistrez la scène sousAssets/Scenes/VRBasics.unity. - Ajoutez un Plane
Ground, position(0, 0, 0), échelle(2, 1, 2): il mesure 20 × 20 mètres. Gardez son collider. - Ajoutez une table avec un Cube
Table, position(0, 0.75, 2), échelle(1.5, 0.1, 0.8). Gardez son Box Collider ; aucun Rigidbody n’est nécessaire pour cette table fixe. - Ajoutez trois cubes de côté
0.15, espacés sur la table, avec Y0.9. Ajoutez à chacun un Rigidbody, Use Gravity activé et Is Kinematic désactivé. Créez des matériaux Universal Render Pipeline/Lit de couleurs différentes et assignez-les. Ici, 1 unité Unity représente 1 mètre.
Vérification : en Play, les cubes tombent légèrement et reposent sur la table. Arrêtez Play avant de poursuivre.
Installer la pile XR
Ouvrez Window > Package Management > Package Manager, puis Unity Registry. Utilisez les versions stables suivantes comme référence de séance ; évitez les versions pre et ne mettez pas les packages à jour pendant le TP.
| Package | Identifiant | Rôle / référence |
|---|---|---|
| Input System | com.unity.inputsystem | Actions et bindings ; 1.20.0, comme dans le TP Unity. |
| XR Plug-in Management | com.unity.xr.management | Activation des fournisseurs XR par plateforme ; version compatible résolue par Unity. |
| OpenXR Plugin | com.unity.xr.openxr | Communication avec le système XR ; 1.16.1. |
| XR Interaction Toolkit | com.unity.xr.interaction.toolkit | Interactions et locomotion ; 3.3.2. |
Les pages Unity 6.3 donnent XRI 3.3.2 et OpenXR 1.16.1 comme versions de référence publiées pour cet éditeur. Des branches plus récentes existent ; ce TP fixe une base commune pour retrouver les mêmes composants et samples.
- Installez les packages absents. Si nécessaire, utilisez Install package by name avec l’identifiant et la version indiqués. Laissez Unity installer leurs dépendances.
- Dans Edit > Project Settings > Player > Other Settings > Configuration, vérifiez Active Input Handling = Input System Package (New). Acceptez le redémarrage s’il est demandé.
- Dans la fiche de XR Interaction Toolkit > Samples, importez Starter Assets et XR Interaction Simulator. Choisissez bien ce dernier : XR Device Simulator est un autre sample, correspondant à l’ancien simulateur.
- Ouvrez Edit > Project Settings > XR Plug-in Management > Project Validation. Sélectionnez la plateforme à vérifier, lisez les problèmes signalés et appliquez les corrections correspondant aux packages et samples installés. Si une règle demande de créer une couche d’interaction Teleport, appliquez-la. Revenez dans cette fenêtre après le choix de la plateforme casque.
- Notez les versions effectivement installées.
Packages/manifest.jsonetPackages/packages-lock.jsondoivent être conservés avec le projet pour retrouver cette configuration.
2. Installer le point de vue et les contrôleurs
- Supprimez la Main Camera initiale, ou désactivez son GameObject. Gardez la lumière et le sol.
- Dans Project, ouvrez
Assets/Samples/XR Interaction Toolkit/3.3.2/Starter Assets/Prefabs. Glissez XR Origin (XR Rig) dans Hierarchy. - Réglez le Transform racine du rig sur position
(0, 0, 0), rotation(0, 0, 0)et échelle(1, 1, 1). Dans son composant XR Origin, choisissez Requested Tracking Origin Mode = Floor pour un casque utilisant le suivi du sol. Vérifiez que Camera référence la caméra enfant du rig. - Ajoutez GameObject > XR > XR Interaction Manager si la scène n’en contient pas déjà un. Gardez un seul manager pour ce TP. Dans les interactables créés ensuite, vous pourrez le glisser dans Interaction Manager.
- Dépliez le rig et repérez la caméra, les contrôleurs gauche et droit, leurs interactors et le groupe Locomotion. Vérifiez que l’Input Action Manager du rig référence XRI Default Input Actions, fourni par les Starter Assets. Gardez les références d’actions du prefab.
Repères à retrouver dans Hierarchy — les noms des enfants peuvent varier légèrement :
VRBasics
├── Directional Light
├── Ground
├── Table
├── Cubes
├── XR Interaction Manager
└── XR Origin (XR Rig)
├── Camera Offset
│ ├── Main Camera
│ ├── Left Controller …
│ └── Right Controller …
└── Locomotion …
Premier test sans casque
- Dans
Assets/Samples/XR Interaction Toolkit/3.3.2/XR Interaction Simulator, trouvez le prefab XR Interaction Simulator. Glissez-le dans la scène, à côté du rig. - Lancez Play et cliquez dans Game. Utilisez l’aide affichée par le simulateur pour déplacer le point de vue, puis simuler chaque contrôleur. Tab alterne les modes FPS et manipulation des périphériques ; les commandes affichées dans Game permettent de choisir les contrôleurs. Sur un clavier AZERTY, consultez ou adaptez les bindings du sample si une touche est peu accessible.
- Vérifiez que le point de vue et les deux contrôleurs répondent. Le simulateur produit des entrées XR ; il ne remplace pas les composants du rig.
N’activez pas en même temps l’insertion automatique du simulateur dans les réglages XRI et le prefab ajouté manuellement. Désactivez le GameObject du simulateur pour chaque test avec un casque et avant le build. Le parcours sans casque vérifie les interactions ; l’échelle perçue, le suivi et le confort devront être évalués dans le casque.
Référence : installation et commandes du XR Interaction Simulator.
3. Exécuter une première fois sur le casque
Faites ce premier essai dès que vous disposez du matériel. Si les casques sont partagés, poursuivez les exercices avec le simulateur en attendant.
Meta Quest autonome : construire et installer un APK
- Le casque doit être préparé pour le développement par l’enseignant ou son propriétaire : mode développeur activé, câble USB de données et autorisation de débogage USB acceptée dans le casque. Dans Unity Hub, vérifiez que l’installation de Unity possède Android Build Support, Android SDK & NDK Tools et OpenJDK.
- Ouvrez File > Build Profiles, sélectionnez Meta Quest, puis Switch Platform. Si vous utilisez le profil Android du poste, basculez sur celui-ci et configurez les réglages Quest ci-dessous. Unity 6.3 fournit un profil Meta Quest dédié, fondé sur Android, qui installe OpenXR et préconfigure plusieurs réglages.
- Dans Project Settings > XR Plug-in Management, onglet Android, activez OpenXR comme fournisseur. Utilisez cette pile pour le TP ; laissez le fournisseur Oculus désactivé.
- Sous XR Plug-in Management > OpenXR, toujours pour Android, activez Meta Quest Support et ajoutez Oculus Touch Controller Profile dans Interaction Profiles. Le nom « Oculus Touch » désigne ici un profil de contrôleur OpenXR. Consultez les réglages Meta Quest Support pour les profils propres au matériel utilisé.
- Dans Player > Other Settings, vérifiez Scripting Backend = IL2CPP et Target Architectures = ARM64. Avec le profil Meta Quest, conservez les réglages graphiques préconfigurés. Avec Android, appliquez les corrections OpenXR adaptées au casque. Revenez dans Project Validation, plateforme Android, et corrigez les erreurs bloquantes.
- Dans Build Profiles > Scene List, ajoutez la scène ouverte :
VRBasicsdoit être cochée et première. Donnez à l’application un identifiant unique, par exemplecom.votreprenom.vrbasics, dans les réglages Player. - Sélectionnez le casque dans Run Device, actualisez la liste si nécessaire, puis faites Build And Run. Enregistrez l’APK dans un dossier
Buildsà la racine du projet, horsAssets. Le premier build est souvent plus long que les suivants.
Vérification : dans le casque, regardez la table, tournez la tête et déplacez-vous légèrement dans votre zone physique. Le point de vue doit suivre vos mouvements ; les contrôleurs doivent suivre vos mains. À ce stade, les cubes ne se saisissent pas encore.
Casque PC : tester directement dans l’éditeur
Sur un poste compatible avec le casque et son logiciel PC, sélectionnez la plateforme PC et activez OpenXR dans l’onglet PC de XR Plug-in Management. Configurez un profil de contrôleur adapté, démarrez le runtime OpenXR du constructeur, puis lancez Play, simulateur désactivé. Un Quest utilisé en mode Link nécessite aussi sa connexion au logiciel PC ; brancher simplement un câble USB ne crée pas une session PC VR. Les réglages Android ne configurent pas le test PC.
4. Se déplacer par téléportation
- Dans Locomotion du rig, repérez Locomotion Mediator, XR Body Transformer et Teleportation Provider. Vérifiez leurs références au rig et au mediator. Conservez cette organisation XRI 3 : les anciens tutoriels utilisant Locomotion System ne décrivent pas cette configuration.
- Sur
Ground, ajoutez Teleportation Area. Renseignez le XR Interaction Manager et le Teleportation Provider du rig dans les champs correspondants. Vérifiez que le collider du sol figure dans la liste Colliders, ou laissez la recherche automatique si elle le prend bien en compte. - Réglez son Interaction Layer Mask sur Teleport. Si cette couche manque, créez-la dans Project Settings > XR Plug-in Management > XR Interaction Toolkit > Interaction Layers, puis utilisez-la sur la surface et le rayon de téléportation.
- Sur les contrôleurs du rig, trouvez les interactors dédiés à la téléportation. Leur Interaction Layer Mask doit inclure Teleport, et leur Raycast Mask doit inclure le layer physique du sol. Gardez les actions Teleport Mode et de validation préconfigurées par le sample. Sur le Controller Input Action Manager de chaque contrôleur, décochez Smooth Motion Enabled et Smooth Turn Enabled pour commencer avec la téléportation et la rotation par crans. Le prefab active initialement le déplacement continu à gauche et la téléportation à droite.
- Dans XRI Default Input Actions, retrouvez les actions des maps XRI Left Locomotion et XRI Right Locomotion. Lisez les bindings de Teleport Mode et Teleport Mode Cancel. Avec les bindings standards des contrôleurs à joystick, poussez le joystick vers l’avant pour viser, puis relâchez pour valider ; vérifiez le binding effectif et Teleport Trigger sur la surface si le comportement diffère.
- Testez trois destinations sur le sol. Essayez aussi de viser la table : elle doit rester une surface non téléportable. Observez le Transform racine du XR Origin pendant le test.
Deux masques à distinguer : le Layer physique d’un GameObject et le Raycast Mask filtrent les collisions/raycasts Unity ; l’Interaction Layer Mask filtre les relations XRI. Créer une couche physique nommée Teleport ne crée pas la couche d’interaction XRI. Voir les couches d’interaction.
Vérification : une destination valide affiche le retour visuel du rayon ; la validation déplace le rig sur le sol sans perdre la hauteur suivie du casque. Si la couleur ne change pas, cherchez d’abord les colliders et masques, puis les actions.
Comparer les modes de navigation
Repérez Snap Turn Provider, Continuous Turn Provider et le fournisseur de déplacement continu (Dynamic Move Provider dans les Starter Assets). Commencez avec téléportation et rotation par crans ; utilisez les paramètres des Controller Input Action Manager des contrôleurs pour choisir la rotation par crans et désactiver le déplacement continu. Vérifiez qu’un seul mode de rotation est actif.
Une fois le parcours fonctionnel, essayez brièvement le déplacement continu si vous êtes à l’aise, puis revenez à la configuration initiale. À expliquer : qu’est-ce qui déplace la caméra quand on marche réellement ? Et quand on pousse le joystick ? Quel mode rend les distances et l’orientation les plus faciles à comprendre ?
Référence : Teleportation Area.
5. Saisir et lancer les cubes
- Sur un cube, ajoutez XR Grab Interactable. Gardez son Box Collider, non trigger, et son Rigidbody. Renseignez le manager. Gardez Interaction Layer Mask = Default pour les objets manipulables et vérifiez que les interactors de manipulation du rig acceptent cette couche.
- Choisissez Select Mode = Single et Movement Type = Velocity Tracking. Laissez Throw On Detach activé. Ce mode utilise le Rigidbody pendant le suivi et permet de commencer à observer les collisions ; il faudra tout de même éviter les gestes très rapides à travers la table.
- Testez la saisie à proximité avec le grip du contrôleur, puis le relâchement. Essayez ensuite à distance avec le rayon de manipulation du rig. Inspectez le binding Select de la map XRI Right Interaction ou XRI Left Interaction pour confirmer le bouton utilisé.
- Faites un lancer doux, à l’écart de vous. Le cube doit retomber et rester sur le sol. Le changement de vitesse vient du relâchement suivi par XRI : aucun script de projectile n’est nécessaire ici.
- Faites du cube un prefab
GrabbableCubedansAssets/Prefabs. Équipez les autres cubes de la même façon ou remplacez-les par des instances. Gardez les objets de téléportation sur leur couche dédiée.
Vérification : vous pouvez prendre un cube, le poser sur la table, le reprendre et le lancer. Un seul contrôleur le tient à la fois. Comparez, sur une copie, Velocity Tracking, Kinematic et Instantaneous : observez la réactivité et les contacts avec la table, puis restaurez le mode initial.
Question : quelle différence y a-t-il entre déplacer un Transform et demander à un Rigidbody de suivre une cible ? Pourquoi un objet peut-il sembler plus réactif tout en traversant plus facilement un obstacle ? Voir les modes de XR Grab Interactable.
6. Créer un cube avec une action du contrôleur
Vous avez utilisé une action clavier ou souris dans le TP Unity. Le principe reste le même : une action représente l’intention, un binding la relie à un contrôle matériel. Ici, vous allez créer une action dédiée afin qu’un appui pour saisir un objet ne crée pas aussi un cube.
Définir l’action
- Dans
Assets, créez un dossierInput, puis un asset Create > Input Actions, nomméVRLabActions. - Double-cliquez dessus et créez une Action Map
Lab, puis une action Spawn, Action Type = Button. - Ajoutez le binding
<XRController>{RightHand}/secondaryButton: bouton secondaire du contrôleur droit, généralement B sur Quest. Gardez le déclenchement à l’appui ; n’utilisez pas une action de pose de type Value ou Pass Through. - Ajoutez aussi un binding
<Keyboard>/npour vérifier votre script sans casque. Enregistrez l’asset avec Save Asset si l’enregistrement automatique n’est pas actif.
Écrire et brancher ObjectSpawn
Créez ObjectSpawn.cs avec Create > Scripting > MonoBehaviour Script, puis ajoutez-le à un GameObject vide CubeSpawner. Le fichier et la classe doivent porter le même nom.
Exposez dans l’Inspector :
using UnityEngine;
using UnityEngine.InputSystem;
// Champs à placer dans la classe ObjectSpawn : MonoBehaviour.
[SerializeField] private InputActionReference spawnAction;
[SerializeField] private GameObject cubePrefab;
[SerializeField] private Transform spawnPoint;
À réaliser :
- Créez un GameObject vide
SpawnPointà la racine de la scène, position(0, 1.2, 2), rotation(0, 0, 0), échelle(1, 1, 1). Vérifiez dans Scene que ce point se trouve au-dessus du plateau. Il n’est pas enfant de la table et n’hérite donc pas de son échelle. - Assignez VRLabActions > Lab/Spawn, le prefab GrabbableCube depuis Project et le Transform SpawnPoint aux trois champs du script.
- Dans OnEnable, abonnez une méthode nommée, par exemple
SpawnCube(InputAction.CallbackContext context), àspawnAction.action.performed, puis activez l’action avecEnable(). - Dans OnDisable, désabonnez la même méthode avec
-=, puis appelezDisable(). Ce composant est le seul propriétaire de l’activation de cette action dédiée. Ne faites pas ceDisable()sur une action partagée du rig. N’ajoutez donc pasVRLabActionsà un autre Input Action Manager pour cet exercice. - Dans la méthode appelée, utilisez
Instantiate(cubePrefab, spawnPoint.position, spawnPoint.rotation). Vérifiez les références avant de les utiliser et limitez les essais à quelques cubes pour éviter d’accumuler des objets physiques.
Les extraits sont des repères : complétez vous-même la classe et les méthodes. Comme dans le TP Unity, attendez la compilation et corrigez la première erreur de Console avant de lancer Play.
Vérification : un appui sur N fait apparaître un seul cube au-dessus de la table ; le maintenir ne doit pas produire un cube à chaque frame. Désactivez puis réactivez CubeSpawner dans l’Inspector pendant Play : chaque appui doit encore produire un seul cube. Testez ensuite le bouton secondaire droit dans le casque. Le cube créé doit être saisissable.
À expliquer : pourquoi utiliser une méthode nommée pour pouvoir se désabonner ? Pourquoi créer une action Spawn plutôt que réutiliser Select ? Référence : actions de l’Input System.
7. Réagir au survol et à la sélection d’un objet
Ajoutez sur la table une petite borne colorée, à côté des cubes, qui reste fixe. L’objectif est de signaler le survol, puis de changer durablement sa couleur à chaque sélection.
- Créez un cube
ColorTarget, position(0.55, 0.95, 2), échelle(0.2, 0.3, 0.2). Conservez son Box Collider. Ajoutez XR Simple Interactable, manager assigné, Interaction Layer Mask = Default, Select Mode = Single. Ne lui ajoutez pas XR Grab Interactable : cette borne reste sur la table. - Créez
TargetFeedback.cset attachez-le à la borne. Exposez une référence au Renderer, deux couleurs persistantes et une couleur de survol. Assignez le Renderer dans l’Inspector. - Écrivez trois méthodes publiques sans paramètre :
BeginHover(),EndHover()etToggleColor(). Les deux premières changent l’état de survol ; la troisième alterne la couleur persistante. Une méthode commune met à jour l’affichage : couleur de survol si la borne est visée, sinon couleur persistante. Ainsi, quitter le survol révèle bien la dernière couleur choisie. - Pour isoler la couleur de cette borne, vous pouvez obtenir une seule fois une instance du matériau via
targetRenderer.materialdans Awake, la conserver, puis modifier sa propriété color. Détruisez cette instance dans OnDestroy. Modifier sharedMaterial changerait aussi les autres objets utilisant cet asset ; n’en créez pas une nouvelle à chaque frame. - Dépliez Interactable Events du XR Simple Interactable. Dans chaque événement, cliquez sur +, glissez le GameObject
ColorTargetdans le champ objet, puis choisissez la méthode du composant TargetFeedback :
| Événement XRI | Méthode à appeler | Effet attendu |
|---|---|---|
| First Hover Entered | BeginHover() | Activer le retour visuel au premier rayon/contact. |
| Last Hover Exited | EndHover() | Retirer le retour visuel après le dernier rayon/contact. |
| Select Entered | ToggleColor() | Alterner la couleur persistante une fois par sélection. |
Les événements First/Last évitent qu’un contrôleur quittant la borne efface le survol alors que l’autre la vise encore. Dans le menu des fonctions UnityEvent, sélectionnez les versions sans paramètre de vos méthodes.
Vérification : visez la borne avec un contrôleur, sélectionnez-la avec le grip correspondant à Select, puis détournez le rayon : la nouvelle couleur doit rester. Visez-la avec les deux contrôleurs et retirez-en un seul : elle doit rester en survol.
8. Vérifier l’application et rendre compte
Arrêtez Play, sauvegardez et désactivez le simulateur. Reconstruisez l’application et refaites le parcours sur le casque cible.
| Test | Résultat attendu |
|---|---|
| Tourner et déplacer la tête | Vue suivie, hauteur et échelle cohérentes. |
| Déplacer les deux contrôleurs | Poses et rayons visibles, sans décalage inexpliqué. |
| Téléporter sur le sol, puis viser la table | Sol accepté, table refusée, hauteur préservée. |
| Saisir, poser et lancer un cube | Objet manipulable et contacts avec le sol et la table. |
| Appuyer sur le bouton Spawn | Un cube par appui, créé au point prévu et saisissable. |
| Survoler et sélectionner la borne | Survol temporaire, couleur choisie conservée en sortie. |
Suivez les consignes du compte rendu de votre séance. Présentez le matériel et les versions, une capture de la hiérarchie du rig, les scripts réalisés et les résultats des tests. Distinguez les essais simulateur, Play avec casque PC et APK autonome ; signalez les tests matériels que vous n’avez pas pu effectuer.
Répondez notamment aux questions suivantes :
- Quel est le rôle du XR Origin par rapport à la caméra suivie ?
- Quelle différence faites-vous entre layer physique et couche d’interaction XRI ?
- Quel chemin relie un bouton physique à votre méthode de création de cube ?
- Pourquoi distinguer le survol, la sélection et l’activation ?
- Quel mode de déplacement choisiriez-vous pour une première découverte de votre scène, et pourquoi ?
Pour aller plus loin
- Ajouter un Teleportation Anchor pour rejoindre un point d’observation et comparer avec une zone libre.
- Ajouter un XR Socket Interactor pour ranger un cube à une position précise.
- Ajouter une interface World Space avec un XR UI Input Module et un Tracked Device Graphic Raycaster ; utiliser le rayon pour actionner un bouton de remise à zéro.
- Explorer le retour haptique et vérifier son effet sur le casque, puisque le simulateur ne restitue pas la sensation.
- Poursuivre avec le TP sur le confort en VR ou le TP XR Engineering & Debugging pour structurer et instrumenter une application plus importante.
En cas de blocage
Corrigez d’abord la première erreur rouge de Console. Indiquez toujours l’étape, la plateforme active, les versions et le message exact lorsque vous demandez de l’aide.
| Symptôme | Vérifications prioritaires |
|---|---|
| Caméra immobile ou mauvaise hauteur | Un seul rig et une seule caméra active ; référence Camera du XR Origin ; mode Floor/Device ; simulateur actif uniquement sans casque ; fournisseur OpenXR de la plateforme cible. |
| Casque détecté en USB mais aucune VR dans Play | Une connexion USB pour installer un APK ne suffit pas pour le PC VR. Vérifiez runtime PC, mode Link éventuel et fournisseur OpenXR PC, ou utilisez Build And Run pour l’autonome. |
| Les mains ou rayons ne répondent pas | Input System actif, Input Action Manager et actions du sample ; profils OpenXR adaptés ; contrôleurs réveillés ; aucune ancienne caméra FPS active. |
| Le simulateur ne répond pas | Game a le focus ; un seul simulateur ; rig préconfiguré présent ; aide et bindings du sample ; pas de session casque concurrente. |
| Rayon visible, aucune téléportation | Collider du sol, couche XRI Teleport des deux côtés, Raycast Mask, provider et mediator, action Teleport Mode, mode de déclenchement de la surface. |
| Un cube ne se saisit pas ou traverse le décor | Collider, Rigidbody, XR Grab Interactable, manager, masques de manipulation et action Select ; vérifier Movement Type et la vitesse du geste. |
| N fonctionne mais pas le bouton du casque | Binding RightHand/secondaryButton, profil OpenXR, test sur la bonne main et APK reconstruit après modification. |
| Aucun cube ou plusieurs cubes par appui | Références de ObjectSpawn, action activée, abonnement unique et désabonnement ; pas d’instanciation dans Update ; pas de doublon CubeSpawner. |
| La couleur change sur tous les objets | Le script modifie probablement sharedMaterial ; utiliser une instance conservée pour la borne. |
| APK impossible à construire ou casque absent | Modules Android du bon éditeur, erreurs de Project Validation, autorisation USB, câble de données, Run Device, IL2CPP/ARM64. Sur un poste Linux, vérifier aussi les droits d’accès USB et les outils de compilation demandés par Unity. |
| Ancienne scène dans le casque | Scene List et profil actifs, sauvegarde de VRBasics, nouveau Build And Run terminé sans erreur. |
Pour poursuivre
Le TP Interaction 3D : comparer les techniques de manipulation propose une tâche de construction chronométrée pour comparer saisie directe, rayon virtuel, Near Far et utilisation des deux mains.
Documentation de référence
Documentation consultée le 15 octobre 2026. Utilisez la branche 3.3 de XRI pour suivre les noms de ce TP.