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.
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.
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.
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. |