Jour 3 — 3h

Interactions et Locomotion VR

Implémentez les systemes de deplacement, de saisie d'objets, d'interface utilisateur spatiale et de feedback multi-sensoriel dans Unreal Engine 5.

Systemes de locomotion
Systeme de Grab
UI en VR
Feedback sensoriel
1

Systemes de locomotion

Se deplacer dans un monde virtuel sans rendre malade

Le defi fondamental

Le joueur se trouve dans une piece de quelques metres carres, mais le monde virtuel peut s'etendre sur des kilometres carres. Comment lui permettre de se deplacer librement sans provoquer d'inconfort ?

Regle d'or de la locomotion VR Tout mouvement visuel percu sans mouvement physique réel correspondant peut provoquer un malaise (motion sickness). Chaque systeme de locomotion represente un compromis different entre liberte de deplacement et confort.

Room-Scale : le deplacement physique 1:1

Le joueur se deplace physiquement dans sa piece, et ses mouvements sont reproduits a l'identique dans le monde virtuel. C'est le gold standard du confort.

Room-scale Guardian boundary

Avantages

  • Zero motion sickness — Le mouvement physique et visuel correspondent parfaitement
  • Immersion maximale — Le corps entier participe a l'expérience
  • Intuitif — Aucun apprentissage nécessaire, marcher est naturel

Limites

  • Taille de la piece — Limite a 2x2m (minimum) a 5x5m (ideal), nécessite le systeme Guardian
  • Longs deplacements impossibles — Doit etre combine avec une autre methode (téléportation, smooth) pour les grandes distances
En pratique Le Room-Scale est toujours actif par défaut sur Quest. Il sert de base et se combine avec une autre methode pour les deplacements au-dela de la zone physique.

Téléportation : le systeme le plus confortable

La téléportation est la methode de locomotion la plus repandue et la plus confortable en VR. Le joueur pointe son controller, un arc parabolique s'affiche, un marqueur indique le point d'arrivee, et au relachement le joueur est teleporte instantanement.

Téléportation VR
Bonnes pratiques Téléportation Fade to black de 0.1 a 0.2 secondes recommandé pour eviter le "pop" visuel. Cooldown de 0.5 a 1 seconde entre téléportations pour eviter les abus. Indicateur visuel essentiel : l'arc + le marqueur doivent toujours etre clairement visibles.

Smooth Locomotion : deplacement continu

Deplacement continu au thumbstick, comme dans un FPS classique. Le thumbstick gauche controle la direction, la vitesse est proportionnelle a l'inclinaison du stick.

Direction de reference : Tete vs Main

Head-Relative (recommandé)

Le deplacement se fait dans la direction ou regarde le joueur. Intuitif : "je vais ou je regarde". C'est le mode le plus naturel pour la majorite des joueurs.

Hand-Relative

Le deplacement se fait dans la direction ou pointe le controller gauche. Plus flexible : permet de regarder autour tout en se deplacant dans une autre direction. Utile pour les jeux d'action.

Bonne pratique Proposer les deux modes (Head-Relative et Hand-Relative) dans les options du jeu. Convention standard : stick gauche = deplacement, stick droit = rotation corps.

Smooth Locomotion : gestion du confort

ATTENTION : Risque de motion sickness eleve La Smooth Locomotion est la methode la plus susceptible de provoquer un malaise. Certains joueurs ne la tolerent jamais. Il est IMPERATIF de toujours proposer la téléportation comme alternative.

Techniques d'attenuation du malaise :

Vignette dynamique Reduire le champ de vision (FOV) pendant le mouvement. Un cercle noir apparait en peripherie, masquant le flux optique lateral responsable du malaise.
Vitesse moderee 1.5 a 3 m/s maximum. Une vitesse trop elevee amplifie la discordance vestibulaire.
Pas d'accélération Vitesse constante des le debut du mouvement. Les accélérations et decelerations augmentent le malaise.
Reperes visuels fixes Nez virtuel, cockpit, grille au sol — des elements visuels statiques ancrent le joueur et reduisent le conflit sensoriel.

Snap Turn vs Smooth Turn

Snap Turn (recommandé par défaut)

  • Principe — Rotation par increments fixes de 30, 45 ou 90 degres
  • Execution — Un clic du stick = rotation instantanee
  • Confort — Tres confortable, c'est le standard en VR
  • Inconvenient — Moins naturel, peut desoriententer certains joueurs

Smooth Turn (option avancee)

  • Principe — Rotation continue proportionnelle au stick
  • Vitesse — 60 a 120 degres/seconde typiquement
  • Confort — Plus naturel mais peut provoquer un malaise
  • Recommandation — Proposer en option, jamais par défaut
Convention Casque = rotation de la tete (tracking 1:1 naturel). Thumbstick droit = rotation du corps (Pawn). Le Snap Turn devrait toujours etre le mode par défaut.

Comparatif des systemes de locomotion

Room-Scale

Confort
Immersion
Liberte

Téléportation

Confort
Immersion
Liberte

Smooth Locomotion

Confort
Immersion
Liberte

Snap Turn

Confort
Immersion
Combinaison recommandée Room-Scale (courts deplacements) + Téléportation (methode principale) + Snap Turn (rotation). Smooth Locomotion en option pour les joueurs experimentes.

A retenir

Room-Scale

Toujours actif. Base de toute expérience VR.

Téléportation

Methode principale. Confort maximal, adaptee a tous.

Smooth

En option. Joueurs experimentes uniquement + vignette.

Regle essentielle Ne jamais deplacer la Camera directement. Toujours deplacer le VRPawn (ou VROrigin).
2

Systeme de Grab

Saisir, manipuler et lancer des objets en VR

L'interaction la plus fondamentale

Saisir des objets est l'interaction la plus fondamentale en VR. C'est ce qui distingue une expérience VR d'une simple video 360. Il existe 4 types principaux de Grab, chacun adapte a des cas d'usage differents.

Direct Grab Overlap + Attach. Le plus simple et polyvalent.
Snap Grab Alignement automatique dans la main. Pour outils et armes.
Physics Grab L'objet reste physique pendant la saisie. Pour puzzles.
Distance Grab Saisir un objet à distance sans se deplacer.

Direct Grab (Overlap + Attach)

Le systeme le plus simple. Une SphereCollision (GrabSphere) sur le controller détecté les objets a proximite. A l'appui du bouton Grip, l'objet est attache au controller.

Principe

  • SphereCollision (GrabSphere) sur le controller
  • Appui Grip → check overlaps
  • Si objet avec tag "Grabbable" → AttachActorToComponent
  • Relachement → DetachFromActor

Avantages / Inconvenients

  • + Simple — Pas de physics a gerer pendant la saisie
  • + Precis — L'objet suit exactement la main
  • - Pas de collision — L'objet traverse les murs (pas de collision physique pendant le grab)

Rendre un objet Grabbable

Configuration nécessaire pour qu'un objet puisse etre saisi :

StaticMeshComponent Le mesh visible de l'objet.
Simulate Physics Active pour que l'objet reagisse a la gravite et aux collisions quand non saisi.
Tag "Grabbable" Permet au systeme de Grab d'identifier les objets saisissables.
Collision : PhysicsBody Profil de collision pour les interactions physiques.
Optionnel : Interface BPI_Grabbable Creer une Blueprint Interface avec les fonctions OnGrabbed et OnReleased pour permettre des reactions custom par objet (son, animation, changement d'etat, etc.).

Snap Grab : alignement automatique

L'objet s'aligne automatiquement a une position et rotation predéfinies dans la main du joueur. Particulierement utile pour les outils, les armes et les objets ergonomiques.

Principe

  • Snap Points — SceneComponents places sur l'objet définissant ou et comment il sera tenu
  • Au grab : calculer l'offset GrabPoint → Root
  • Attacher avec cet offset pour un alignement parfait

Cas d'usage

  • Armes — Toujours tenues par la poignee
  • Outils — Tournevis, marteau, etc.
  • Objets ergonomiques — Tasse par l'anse, levier par la poignee
  • + L'objet est toujours bien tenu dans la main
Inclure illustration : Snap Points sur un objet arme

Physics Grab : saisie physique realiste

L'objet reste physique pendant qu'il est tenu. La main "tire" l'objet via une force ou contrainte physique, ce qui permet de respecter les collisions avec l'environnement.

Avantages

  • Collisions respectees — L'objet ne traverse pas les murs
  • Realisme physique — Interactions naturelles avec l'environnement
  • Ideal pour puzzles — Empiler, inserer, pousser des objets

Inconvenients

  • Leger retard — Sensation "spongieuse" car la physique a de l'inertie
  • Plus complexe — Physics Constraint ou Physics Handle a configurer
  • Plus couteux — Simulation physique continue

Direct Grab vs Physics Grab

Critere Direct Grab Physics Grab
Methode Simple Attach Physics Constraint / Handle
Collision pendant grab Non (traverse les murs) Oui (respectees)
Sensation Instantane, précis Leger retard, elastique
Performance Leger Plus couteux
Cas d'usage Outils, armes, UI, général Puzzles physiques, realisme
Recommandation Utiliser le Direct Grab pour la plupart des objets (simple, performant, précis). Reserver le Physics Grab aux situations ou les collisions pendant la saisie sont importantes (puzzles physiques, empilements).

Distance Grab : saisir à distance

Permet de saisir un objet eloigne sans avoir a marcher jusqu'a lui. Tres utile pour le confort et l'accessibilite.

Variantes

Force Grab (style Half-Life: Alyx) L'objet accelere vers la main du joueur avec une physique satisfaisante. Le joueur "attrape" l'objet dans sa trajectoire.
Pull Grab Geste de traction : le joueur fait un mouvement de "tirer vers soi" avec le controller pour amener l'objet.
Beam Grab L'objet reste au bout d'un rayon tracteur, manipulable à distance sans venir dans la main.

Throw (lancer)

Au relachement de l'objet, on récupéré la velocite lineaire et angulaire du controller pour l'appliquer au mesh physique de l'objet. Cela produit un lancer naturel.

Piege : velocite bruitee La velocite du controller peut etre bruitee (micro-tremblements de la main). Pour un lancer fiable, lisser la velocite sur les 2 a 3 derniers frames (moyenne glissante) au lieu d'utiliser la valeur instantanee.
Direct Grab = simple et polyvalent Attach/Detach, couvre 80% des besoins. A utiliser par défaut.
Snap Grab = objets spécifiques Pour les objets tenus d'une certaine maniere (armes, outils).
Physics Grab = puzzles Quand les collisions pendant la saisie comptent. Plus lourd mais plus realiste.
Distance Grab = accessibilite Pour saisir les objets eloignes sans se deplacer.
Throw = velocite controller Recuperer et appliquer la velocite du controller au lacher. Lisser sur 2-3 frames.
Interface BPI_Grabbable Permet des reactions custom (son, animation, feedback) par objet via OnGrabbed/OnReleased.
3

UI en VR

Interfaces utilisateur spatialisées dans le monde 3D

Le defi de l'UI en VR

En VR, il n'y a pas d'ecran plat, pas de curseur souris, les overlays 2D sont inconfortables, le texte petit est illisible, et les boutons doivent etre actionnables à distance ou au toucher. La solution : une UI spatialisée qui existe dans le monde 3D.

Les erreurs classiques Plaquer un HUD 2D devant la camera (head-locked) provoque fatigue oculaire et malaise. Le texte trop petit est illisible a cause de la résolution limitee des casques. Les boutons trop petits sont impossibles a toucher avec précision.

Les 4 types d'UI en VR

Type Description Exemples Recommandation
Diegetique Fait partie du monde du jeu Ecran sur un mur, montre au poignet, tableau de bord Excellent — immersif
Spatiale Flotte dans l'espace 3D Score, tooltip, marqueur de quete Bon — informatif
Attachee a la main Suit le controller Menu radial, inventaire, settings Excellent — pratique
Head-locked Suit la tete du joueur HUD minimal, reticule A eviter — fatigant
Recommandation Privilegier l'UI diegetique (monde du jeu) et l'UI attachee a la main (menus, inventaire). Eviter le head-locked sauf pour un reticule minimal.

Widget Component : afficher un UMG Widget en 3D

Le WidgetComponent permet d'afficher n'importe quel Widget UMG dans l'espace 3D du monde virtuel.

  • Creer un Widget UMG classique (boutons, textes, images)
  • Ajouter un WidgetComponent a un Actor pour le projeter en 3D
  • Configurer : Draw Size (1920x1080), Widget Class, Geometry Mode (Cylinder/Flat)

Widget Interaction Component : interagir avec les widgets 3D

Le WidgetInteractionComponent permet aux controllers d'interagir avec les widgets 3D. Il emet un rayon virtuel qui détecté les widgets et simule un curseur souris.

Configuration

  • Ajouter au controller (MotionController_R typiquement)
  • Interaction Distance — 500 a 1000 cm
  • Interaction Source — World (position dans le monde)
  • Afficher un laser pointer pour le retour visuel

Fonctionnement

  • Emet un rayon qui détecté les WidgetComponents
  • Le Trigger simule un clic souris
  • Le Thumbstick simule le scroll
  • Le point d'impact du rayon = position du curseur souris

Pattern : Menu attache a la main

Un des patterns les plus courants et efficaces en VR. Le menu est attache au controller gauche (comme une montre), et le joueur interagit avec l'autre main.

WidgetComponent sur controller gauche Attacher au MotionController_L avec un offset d'environ 20cm devant, legerement au-dessus (comme une montre au poignet).
WidgetInteraction sur controller droit La main droite pointe et interagit avec le menu de la main gauche via le laser pointer.
Toggle avec bouton Menu Activer/désactiver la visibilité du menu avec un bouton dédié (Menu/Y). Le menu devrait toujours faire face au joueur.
Inclure illustration : Interaction UI en VR : Menu Main + Laser Pointer

Laser Pointer

Le laser pointer est indispensable pour que le joueur voie ou il pointe et puisse interagir avec précision.

Implementation simple

  • StaticMesh — Cylindre fin, enfant du controller
  • Aligne sur le forward vector du controller
  • Tick : si hit → ajuster la longueur au point d'impact
  • Sinon → longueur max ou masquer
  • Point (sphere) au point d'impact pour plus de précision

Alternatives

  • Beam Particle — Rayon via systeme de particules classique
  • Niagara — Systeme de particules moderne d'UE5, plus flexible et performant
  • Avantage visuel : glow, epaisseur variable, couleur dynamique

Bonnes pratiques UI en VR

Critere Recommandation
Taille du texte Minimum 24-32px. Plus petit = illisible en VR
Distance 0.5 a 2 metres du joueur
Contraste Fond opaque ou semi-transparent pour la lisibilité
Taille des boutons 3 a 5 cm en monde virtuel (suffisamment grand pour etre cible)
Feedback hover Changement de couleur et/ou de taille au survol
Feedback clic Son + visuel + retour haptique combines
Head-locked A eviter — fatigant pour les yeux et le cou
Police Sans-serif, bold — meilleure lisibilité en VR
UI spatialisée L'UI existe dans le monde 3D, pas plaquee sur l'ecran.
Widget Component Affiche un widget UMG classique dans l'espace 3D.
Widget Interaction Permet l'interaction via controller (laser + trigger = clic souris).
Menu main gauche / interaction main droite Le pattern standard pour les menus VR.
Texte 24px+, boutons 3-5cm Adapter les tailles pour la lisibilité et la précision VR.
Feedback visuel / sonore / haptique Toujours accompagner les interactions UI d'un retour multi-sensoriel.
4

Feedback sensoriel

Haptique, audio spatial et feedback visuel

Pourquoi le feedback est crucial en VR

En VR, le joueur n'a pas de retour physique naturel. Il ne sent pas l'objet qu'il saisit, n'a pas de vrais pieds qui touchent le sol, et manque de retour kinesthesique. Pour compenser, on combine des feedbacks multi-sensoriels sur trois canaux : haptique (vibrations), audio (sons spatiaux) et visuel (particules, outlines, animations).

La regle d'or Un bon feedback = une interaction qui "semble réelle". Combiner au minimum 2 canaux de feedback par interaction pour un résultat convaincant.

Haptic Feedback (vibrations des controllers)

Les controllers Quest ont des moteurs haptiques qui permettent des vibrations de differentes amplitudes et durees. On utilise Play Haptic Effect avec une amplitude (0.0 a 1.0) et une duree, ou une courbe personnalisee.

Quand declencher un retour haptique ?

Evenement Duree Amplitude Description
Grab objet 0.1s 0.3 Confirmation de saisie, subtile
Collision / tir Variable 0.3 - 0.8 Proportionnel a la force d'impact
Bouton UI 0.05s 0.2 Micro-feedback de confirmation

Courbes haptiques (HapticFeedbackEffect_Curve)

Les courbes haptiques permettent de définir comment l'amplitude varie dans le temps, pour des effets nuances et expressifs.

Impulsion Peak rapide puis retombee. Ideal pour : clic de bouton, collision ponctuelle. Forme : pic a 1.0 puis chute rapide a 0.
Montee progressive Rampe de 0 a 1. Ideal pour : tension, charge d'energie, montee en puissance.
Pulsation Ondulation repetee. Ideal pour : alarme, battement de coeur, danger.
Burst Plusieurs pics rapides. Ideal pour : explosion, rafale de tir, texture de surface.
Inclure illustration : Courbes haptiques (HapticFeedbackEffect_Curve)

Audio spatialisé

L'audio spatialisé place les sons dans l'espace 3D. Le cerveau localise les sources sonores grace a trois mecanismes :

Mecanismes de localisation

  • ITD (Interaural Time Difference) — Difference de temps d'arrivee du son entre les deux oreilles
  • ILD (Interaural Level Difference) — Difference d'intensite entre les deux oreilles
  • HRTF (Head-Related Transfer Function) — Filtrage du son par la forme de l'oreille (haut/bas, avant/arriere)

Audio VR dans UE5

  • Audio spatialisé natif — UE5 adapte le rendu stereo selon la position et rotation de la tete
  • Binaural / HRTF — Rendu audio plus realiste, essentiel en VR
  • Plugins avances — Oculus Audio ou Steam Audio pour un HRTF de meilleure qualite

Configuration audio dans UE5

Parametre Description Valeur recommandée VR
Inner Radius Zone de volume maximal autour de la source 10-50 cm (petit pour realisme)
Falloff Distance Distance a laquelle le son disparait Adapte a l'objet (50cm-10m)
Attenuation Shape Forme de la zone d'attenuation Sphere, Capsule, Box ou Cone
Spatialize Activer la spatialisation 3D Toujours activer en VR
Binaural HRTF Rendu binaural realiste Activer pour la VR

MetaSounds : audio nodal UE5

MetaSounds est le nouveau systeme audio nodal d'Unreal Engine 5. Il remplace progressivement le systeme audio classique avec une approche plus performante et flexible basee sur un graphe de noeuds DSP.

Plus performant Traitement DSP nodal optimise, meilleur que les Sound Cues classiques.
Plus flexible Graphe de noeuds pour combiner, filtrer et moduler les sons en temps reel.
Meilleur controle spatialisation Integration native avec le systeme de spatialisation VR.
Parametres exposes Variables exposees au Blueprint pour un controle dynamique.

Usage VR concret

  • Sons reactifs — Pitch qui varie avec la velocite de l'objet (plus on lance vite, plus le son est aigu)
  • Environnements dynamiques — Reverb qui s'adapte a la taille de la salle
  • Feedback modulable — Parametres exposes pour ajuster le son selon l'intensite de l'interaction

Bonnes pratiques audio VR

Regles essentielles Tout son d'interaction doit etre spatialisé (positionne dans le monde 3D). Inner radius petit (10-50cm) pour un rendu précis. Falloff adapte a la taille et l'importance de la source. Pas de musique head-locked (la musique doit venir d'une source dans le monde ou etre ambient). Volume cohérent — le joueur est "dans" le monde, pas devant un ecran. Binaural / HRTF actif pour un rendu VR realiste.

Feedback visuel

Le retour visuel complete les canaux haptique et audio pour une expérience d'interaction complete.

Outline / Highlight Contour lumineux quand le laser survole un objet interactif. Signale l'interactivite.
Particules Effets de particules a l'impact, explosion, etincelles. Renforce le poids de l'interaction.
Animation Pulse, bouton qui s'enfonce, rebond. Confirme visuellement l'action.
Changement de couleur Vert = OK, rouge = erreur, bleu = selectionne. Communication instantanee de l'etat.
Glow / Emissive Materiaux emissifs pour attirer l'attention du joueur vers les elements importants.
Attention : Post-process et outlines Les outlines via Custom Stencil + Post-Process peuvent etre couteuses sur standalone (Quest). Privilegier les materiaux emissifs ou des solutions plus legeres pour le standalone.

Combiner les feedbacks : exemples concrets

Exemple : Grab (saisie d'objet)

Canal Feedback
Haptique Vibration 0.1s, amplitude 0.3
Audio Son "pick up" spatialisé a la position de l'objet
Visuel Illumination breve de l'objet, outline disparait

Exemple : Collision (impact)

Canal Feedback
Haptique Vibration proportionnelle a la force d'impact
Audio Son d'impact spatialisé au point de collision
Visuel Particules d'impact, rebond de l'objet

Centraliser les feedbacks

Creer un Actor Component reutilisable qui centralise tous les feedbacks (PlayGrabFeedback, PlayReleaseFeedback, PlayImpactFeedback). L'ajouter a tout objet interactif pour un feedback cohérent dans tout le jeu, reglable par objet.

Compenser l'absence de retour physique Le feedback multi-sensoriel remplace le toucher, l'inertie et les sensations physiques absentes en VR.
3 canaux de feedback Haptique (vibrations), Audio spatial (sons 3D), Visuel (particules, outlines, animations).
Combiner min. 2 canaux Toujours combiner au moins 2 canaux par interaction pour un résultat convaincant.
Courbes haptiques Permettent des effets nuances (impulsion, montee, pulsation, burst).
Audio spatialisé binaural Activer HRTF pour un rendu 3D realiste. MetaSounds pour un controle avance.
Component reutilisable Centraliser les feedbacks dans un AC_InteractionFeedback pour coherence et maintenabilite.

Recapitulatif — Jour 3

Interactions et Locomotion VR : les systemes essentiels

Vue d'ensemble

Topic Concepts cles A retenir
Locomotion Room-Scale, Téléportation, Smooth, Snap/Smooth Turn Téléportation par défaut, Smooth en option, Snap Turn standard. Toujours deplacer le Pawn, jamais la Camera.
Grab Direct, Snap, Physics, Distance Grab, Throw Direct Grab pour 80% des cas. Physics Grab pour puzzles. Velocite controller au lacher pour Throw. Interface BPI_Grabbable.
UI VR Widget Component, Widget Interaction, Menu main, Laser UI spatialisée dans le monde 3D. Menu main gauche / interaction main droite. Texte 24px+, boutons 3-5cm.
Feedback Haptique, Audio spatial, Visuel, MetaSounds Combiner min. 2 canaux par interaction. Centraliser dans un component. Binaural/HRTF actif.