Partager via


Guide de portage des entrées pour Unity

Vous pouvez porter votre logique d’entrée vers Windows Mixed Reality en utilisant l’une des deux approches suivantes :

  • API Input.GetButton ou Input.GetAxis générales d’Unity qui s’étendent sur plusieurs plateformes.
  • Les API UnityEngine.XRModule , qui offrent des données plus riches spécifiquement pour les contrôleurs de mouvement et les mains HoloLens.

API Input.GetButton et Input.GetAxis générales

Unity utilise actuellement ses API générales Input.GetButton et Input.GetAxis pour exposer les entrées pour le SDK Oculus et le Kit de développement logiciel (SDK) OpenVR. Si vos applications utilisent déjà ces API pour l’entrée, ces API constituent le chemin le plus simple pour prendre en charge les contrôleurs de mouvement dans Windows Mixed Reality. Il vous suffit de remapper les boutons et les axes dans le gestionnaire d’entrée.

Pour plus d’informations, consultez la table de mappage des boutons/axes Unity et la vue d’ensemble des API Unity communes.

Important

Si vous utilisez des contrôleurs HP Reverb G2, consultez Contrôleurs HP Reverb G2 dans Unity pour obtenir d’autres instructions de mappage d’entrée.

API d’entrée XR

Les versions d’Unity ont supprimé progressivement le XR. API WSA en faveur du Kit de développement logiciel (SDK) XR. Pour les nouveaux projets, il est préférable d’utiliser les API d’entrée XR dès le début. Pour plus d’informations, consultez Entrée XR Unity.

Si votre application génère déjà une logique d’entrée personnalisée pour chaque plateforme, vous pouvez utiliser les API d’entrée spatiale spécifiques à Windows dans l’espace de noms UnityEngine.InputSystem.XR . Ces API vous permettent d’accéder à plus d’informations, telles que la précision de position ou le type de source, pour distinguer les mains et les contrôleurs sur HoloLens.

Notes

Si vous utilisez des contrôleurs HP Reverb G2, toutes les API d’entrée continuent de fonctionner, à l’exception de InteractionSource.supportsTouchpad, qui retourne false sans données de pavé tactile.

Pose de poignée et pose de pointeur

Windows Mixed Reality prend en charge les contrôleurs de mouvement dans différents facteurs de forme. La conception de chaque contrôleur diffère dans sa relation entre la position de la main de l’utilisateur et la direction vers l’avant naturelle que les applications utilisent pour pointer lors du rendu du contrôleur.

Pour mieux représenter ces contrôleurs, vous pouvez examiner deux types de poses pour chaque source d’interaction: la pose de poignée et la pose de pointeur. Vous exprimez toutes les coordonnées de pose dans les coordonnées du monde Unity.

Pose de poignée

La pose de poignée représente l’emplacement de la paume d’une main détectée par un HoloLens, ou de la paume qui tient un contrôleur de mouvement. Sur les casques immersifs, utilisez cette pose pour rendre la main de l’utilisateur ou un objet tenu dans la main de l’utilisateur, tel qu’une épée ou un pistolet.

  • La position de la poignée est le centroïde de la paume lors de la tenue du contrôleur naturellement, ajusté à gauche ou à droite pour centrer la position dans la poignée.
  • L’axe droit de l’orientation de la poignée est le rayon qui est normal à votre paume, vers l’avant de la paume gauche, vers l’arrière de la paume droite, lorsque vous ouvrez complètement votre main pour former une position plate à cinq doigts.
  • L’axe avant de l’orientation de la poignée est le rayon qui pointe vers l’avant à travers le tube formé par vos doigts non-pouce lorsque vous fermez partiellement votre main, comme si vous teniez le contrôleur.
  • L’axe vers le haut de l’orientation de la poignée est l’axe haut impliqué par les définitions droite et avant.

Accédez à la pose de prise en main via le XR d’Unity. API InputTracking.GetNodeStates , telles que XRNodeState.TryGetPosition ou XRNodeState.TryGetRotation.

Pose du pointeur

La pose du pointeur représente l’extrémité du contrôleur pointant vers l’avant. Cette pose est mieux utilisée pour le cast de rayons pointant vers l’interface utilisateur lorsque vous effectuez le rendu du modèle de contrôleur lui-même.

La pose du pointeur est disponible dans Unity uniquement via l’API spécifique à Windows MR, sourceState.sourcePose.TryGetPosition/Rotation, en passant comme InteractionSourceNode.Pointer argument.

Voir aussi