Vive Tracker à l'envers dans Unity

Section dédiée à la VR avec Unity
Xameal
Messages : 13
Inscription : 15 Mars 2020 23:56

Vive Tracker à l'envers dans Unity

Message par Xameal » 28 Avr 2022 14:58

Bonjour,

Dans mon projet Unity, il y a un problème qui me tracasse depuis un certain temps, et je n'arrive pas à le résoudre :
Image

Comme vous pouvez le voir. L'objet que je track à l'aide des Vive Tracker 3.0 est à l'envers.
Pourtant je vous assure que l'objet dans la vraie vie est à l'endroit. Le tracker est également bien positionné par rapport à la vie réelle.

Cependant, voici mon objet en mode "Scène" lorsque je ne lance pas mon jeu, comme vous pouvez le voir, il est à l'endroit : (Le carré rouge représente le tracker, car j'ai compris qu'il ne faut pas déplacer le tracker, mais déplacer l'objet pour le positionner dessus) :
Image

Pourquoi l'objet est-il à l'envers ? Est-il possible que ce soit le "vrai" tracker qui soit à l'envers ?
(Et question bonus ^^ : Est-il possible de changer de place les tracker dans Unity en Scène ? C'est-à-dire changer leur position X, Y et Z dans Unity pour laisser l'objet en 0 / 0 / 0 et mettre le tracker au même endroit que dans la vraie vie ?)


Ma carte est, je pense, à l'endroit parce que le ciel est bien "en haut".
Je tiens à préciser que je ne mettrais pas simplement l'arme à l'envers dans le mode scène. J'aimerais qu'il soit correctement positionné pour faciliter les futures étapes de création.
Merci d'avance pour vos réponses.

Avatar de l’utilisateur
boubouk50
ModoGenereux
ModoGenereux
Messages : 6186
Inscription : 28 Avr 2014 11:57
Localisation : Saint-Didier-en-Bresse (71)

Re: Vive Tracker à l'envers dans Unity

Message par boubouk50 » 28 Avr 2022 15:34

Je ne sais pas comment fonctionne le système, mais je pense qu'il doit s'initialiser selon des axes prédéfinis ce qui expliquerait le changement d'orientation de ton arme.
Donc soit ton tracker virtuel (le carré rouge) est mal orienté soit c'est l'arme. Et donc, c'est l'arme puisqu'elle est orientée en fonction de l'autre.

Maintenant, on ne dispose pas assez d'information sur les 2 objets pour confirmer cela.
Il nous faut au minimum les gizmos et les rotations de chaque objet (tracker et arme (ou du noeud intermédiaire s'il existe)) en éditeur et en runtime.
"Ce n'est pas en améliorant la bougie, que l'on a inventé l'ampoule, c'est en marchant longtemps."
Nétiquette du forum
Savoir faire une recherche
Apprendre la programmation

Xameal
Messages : 13
Inscription : 15 Mars 2020 23:56

Re: Vive Tracker à l'envers dans Unity

Message par Xameal » 28 Avr 2022 16:41

Merci de ta réponse si rapide.
Je vais détailler et mettre pleins de photos dans cette réponse pour essayer de me faire comprendre au maximum et de vous donner le plus d'informations sur mon problème.

Voici déjà une première photo, qui vous montre ma scène.
Le cube blanc représente mon tracker (pour savoir ou positionner mon pistolet avant l'exécution).
Comme vous le voyez à gauche, je dispose de ViveRig, qui est mon "personnage" VR. Il est en X = 0 / Y = 0 et Z = 0. Les axes de rotations sont aussi tous à 0.
La caméra, l'objet "ViveTrackers", "Tracker1", "DeviceTracker", "OpenVRRenderModel" et "Cube" sont tous en 0/0/0, avec des rotations égal à 0.
En clair, j'ai changé de position le pistolet uniquement, pour le positionner en en face du tracker. Comme dans la vraie vie.
Image

Maintenant, voyez ce que cela donne, une fois que je lance le jeux :
Image

Comme vous le voyez, le pistolet est à l'envers.
Je ne veux pas mettre mon pistolet à l'envers dans ma scène pour résoudre le problème. J'aimerai, si possible, que le pistolet reste simplement droit au lancement du jeux.

Voici comment est monté mon tracker :
Image
Image

Update : J'ai replacer mon tracker dans l'autre sens que celle présente sur les photos (la pointe du triangle est maintenant en haut), et le pistolet s'est mis à l'endroit.

Les trackers ont donc bel et bien un "sens"... Ce qui semble logique, mais j'ai plusieurs trackers installés, et je ne peux pas tous les démonter... :/
Pensez-vous qu'il existe une solution pour corriger le problème dans Unity, hormis celle dit plus haut ? Suis-je obligé de remettre tout mes trackers dans le bon sens ?

Avatar de l’utilisateur
boubouk50
ModoGenereux
ModoGenereux
Messages : 6186
Inscription : 28 Avr 2014 11:57
Localisation : Saint-Didier-en-Bresse (71)

Re: Vive Tracker à l'envers dans Unity

Message par boubouk50 » 28 Avr 2022 16:53

Xameal a écrit :
28 Avr 2022 16:41
Suis-je obligé de remettre tout mes trackers dans le bon sens ?
S'il y a un sens, il est fait pour être respecté, non?
En gros, tu montes à l'envers et ensuite tu demandes pour le faire à l'envers dans Unity pour contrer ton erreur de départ. Tu ajoutes donc une correction à une erreur plutôt que de ne pas faire l'erreur en premier lieu.

Le tracker réel à un sens pour que le tracker virtuel se cale sur ce sens. Il est la passerelle entre le réel et le virtuel. Toucher à cela n'est pas recommandé puisque tu modifies la référence.
En gros, au lieu de calibrer sans rotation, tu seras obligé de calibrer avec une rotation de 180° en Z local. Ce n'est pas faux en soi, mais c'est prendre le pb à l'envers.

Donc si tu positionnes tes trackers "à l'envers" (ce qui n'a pas de sens en soi, ils sont juste positionnés d'une manière qui ne te convient pas) alors il faut les positionner à l'envers aussi dans Unity, ou bien inverser les objets trackés.
Le mieux étant de les positionner dans le bon sens dans le réel pour qu'ils le soient dans le virtuel.

Comme dit, ça n'a pas de sens en soi, puisque la tracking est local. C'est juste une vision de l'esprit parce que tu veux que ton arme ne soit pas retournée dans Unity. Mais le tracking est juste quelque soit l'orientation réelle.
"Ce n'est pas en améliorant la bougie, que l'on a inventé l'ampoule, c'est en marchant longtemps."
Nétiquette du forum
Savoir faire une recherche
Apprendre la programmation

Xameal
Messages : 13
Inscription : 15 Mars 2020 23:56

Re: Vive Tracker à l'envers dans Unity

Message par Xameal » 29 Avr 2022 11:21

Merci des réponses, quand je me suis rendu compte trop tard que les trackers avait un sens obligatoire. Ducoup j'avais déjà fait mes POGO pins (boutons personnalisable sur les trackers) etc... et le retourner dans la vraie vie est compliqué sans abîmer les connectiques à l'intérieur.

Avatar de l’utilisateur
boubouk50
ModoGenereux
ModoGenereux
Messages : 6186
Inscription : 28 Avr 2014 11:57
Localisation : Saint-Didier-en-Bresse (71)

Re: Vive Tracker à l'envers dans Unity

Message par boubouk50 » 29 Avr 2022 11:29

Dans ce cas, il te faut palier en inversant dans Unity, donc faire une rotation de ton arme.
Cela t'est peut être contraignant en éditeur, mais pas en Build.
Sinon, il te faut faire un script spécifique pour effectuer une rotation de tes objets enfants des trackers pour les tourner au Start()
Ainsi, tu les auras dans le bon sens en éditeur (mais inversé par rapport à la réalité) et en Build.
"Ce n'est pas en améliorant la bougie, que l'on a inventé l'ampoule, c'est en marchant longtemps."
Nétiquette du forum
Savoir faire une recherche
Apprendre la programmation

Xameal
Messages : 13
Inscription : 15 Mars 2020 23:56

Re: Vive Tracker à l'envers dans Unity

Message par Xameal » 29 Avr 2022 17:14

C'est exactement ce que j'ai fait, et regardez le nouveau problème (Sincèrement désolé, je n'ai jamais eu de problème de ce genre dans Unity) :

J'essaie de faire tourner un objet à "-90" degrés au début de mon jeu à l'axe X et Y.
J'ai donc fait un tout petit script qui permettrait cela, le voici :

Code : Tout sélectionner

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class ObjectRotation : MonoBehaviour
{

    public Vector3 anglesToRotate;
    void Start()
    {
        this.transform.Rotate(anglesToRotate); 
    }

}
J'obtiens ceci :
Photo0.PNG
Photo0.PNG (9.15 Kio) Consulté 2977 fois
Maintenant le problème est le suivant, voyez par vous-même :
Voici ce que j'ai avant de build: Mon objet a déjà une rotation de -90 degrés sur l'axe des X.
J'entre les valeurs -90 | -90 | 0 dans mon code. (Je souhaite donc avoir en Rotation : X = -180 / Y = -90 / Z = 0 )
Photo1.PNG
Photo1.PNG (110 Kio) Consulté 2977 fois
Cependant, lorsque je lance l'application, l'axe X est égal à -180 (-90-90 = -180) MAIS le -90 de l'axe Y a été ajouté à l'axe Z ? ?? Et en plus de cela, l'axe Y a été assigné à -1.52587 ? ??
Photo2.PNG
Photo2.PNG (112.88 Kio) Consulté 2977 fois
Quelqu'un a-t-il une idée de ce qui ne va pas ? J'attends vos réponses et vous remercie d'avance.

PS : J'apprécie le fait que vous ne vous demandez pas pourquoi je veux faire une chose aussi farfelue ^^. J'ai juste réellement besoin de faire ça, et ce nouveau problème me laisse bouche bée parce que.... le code ne consiste qu'à quelques lignes :')

Avatar de l’utilisateur
boubouk50
ModoGenereux
ModoGenereux
Messages : 6186
Inscription : 28 Avr 2014 11:57
Localisation : Saint-Didier-en-Bresse (71)

Re: Vive Tracker à l'envers dans Unity

Message par boubouk50 » 29 Avr 2022 17:58

1/ Ne pas confondre rotation locale et world
2/ les EulerAngles peuvent prendre plusieurs valeurs pour une même rotation, c'est pour cela que les quaternions sont utilisés. (-90,0-90) peut être égal à (180,90, 0) par exemple (c'est faux comme exemple mais c'est vrai pour certaines combinaisons)

Par contre, le 1.52587, je ne vois pas. Est-ce qu'un autre gameObject ou script joue sur sa rotation?
"Ce n'est pas en améliorant la bougie, que l'on a inventé l'ampoule, c'est en marchant longtemps."
Nétiquette du forum
Savoir faire une recherche
Apprendre la programmation

Xameal
Messages : 13
Inscription : 15 Mars 2020 23:56

Re: Vive Tracker à l'envers dans Unity

Message par Xameal » 02 Mai 2022 11:55

Ecoute, j'ai utilisé après avoir lu ta réponse la fonction "Quaternion.Euler();" avec (-180.0f, -90.0f, 0.0f) en paramètre et... ça à marché :).

Merci beaucoup de tes réponses, je ne savais pas que la rotation avait cette ambiguïté ! Je ne sais pas trop la raison du pourquoi, mais il doit y'avoir une raison que j'essayerai de comprendre quand j'aurai un peu de temps ^^.
En attendant, comme tu me l'as recommandé, j'utilise Quaternion pour mes rotations d'objets.

Merci encore !

Répondre

Revenir vers « Unity et la VR »