Simulation HeadTracking Mobile sans Google SDK, et sans Gyroscope

Section dédiée à la VR avec Unity
SirAlex
Messages : 168
Inscription : 17 Jan 2012 14:57
Localisation : Normandie - FRANCE

Simulation HeadTracking Mobile sans Google SDK, et sans Gyroscope

Message par SirAlex » 21 Mars 2017 17:54

Bonjour à tous,

cela faisait un bail !
Je viens quérir votre aide, car j'ai un petit souci. Je suis en train de développer une Appli VR mobile sous Android, Mon petit souci est de rendre compatible cette appli avec les téléphones comme le mien qui ne disposent pas de gyroscope.

J'ai orienté mes recherches sur l’accéléromètre et le compas. Mais je n'arrive à rien de fabuleux.

Auriez-vous quelconque tuyaux ? à noter que l'objectif est qu'aucune application ne soit téléchargée en plus.

Une partie de mon code :

Code : Tout sélectionner

public class CameraControllerVR : MonoBehaviour {

    private GameObject cameraContainer;
    private Quaternion rotation;
    private bool isEnabled = false;
    private Gyroscope gyro;
    float xRot, yRot, zRot;
    public float rotationSpeed = 20f;
    

    private Vector3 direction = Vector3.zero;
    


    void Start () {
        /*
         * 1- Create new gameObject
         * 2- Retrieve position of the camera
         * 3- Parent to mainCamera
         */
        cameraContainer = new GameObject("CameraContainer");
        cameraContainer.transform.position = transform.position;
        transform.SetParent(cameraContainer.transform);
        }
        
         void EnableCompass()
    {
        if (!isEnabled)
        {
            //Debug.Log("Enable compass");
            Input.compass.enabled = true;
           Input.location.Start();

            //Debug.Log(Input.location.status);
            //Debug.Log(Input.compass.enabled);
           // isEnabled = true;
        }

    }
    
     void Update () {
        /*  if (isEnabled)
          {
              transform.localRotation = gyro.attitude * rotation;
          }
         */
        EnableGyro();
        EnableCompass();
        Debug.Log(Input.compass.rawVector.y);
        
        if (Input.acceleration != direction) {

            Debug.Log("x :"+Input.acceleration.x+ " y : "+Input.acceleration.y +" z : " + Input.acceleration.z);
            direction.x = Input.acceleration.z * -90f;
            direction.y = 0f;//-Input.compass.trueHeading * 0.5f;
            direction.z = 0f; //Input.acceleration.x * -90f;

            //cameraContainer.transform.rotation = Quaternion.Euler(0, -Input.compass.magneticHeading, 0);
             Quaternion quat = transform.localRotation;
            transform.rotation = Quaternion.Lerp(quat, Quaternion.Euler(new Vector3(direction.x, direction.y, direction.z)), Time.deltaTime * rotationSpeed);

        }

    }

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

Re: Simulation HeadTracking Mobile sans Google SDK, et sans Gyroscope

Message par boubouk50 » 21 Mars 2017 18:10

Bon courage!

J'ai essayé de m'y coller, j'ai pas réussi... Obligé de passer par le gyro. (Mon topic)
Je me souviens plus si Dive utilisait l'accéléromètre, mais cette solution m'avait aidé. Aussi, pour voir un peu comment tout cela réagissait, j'avais téléchargé des applis test sur le Play Store. (Dont gyroDroid) Ces applis te renvoient les données du gyro, accéléromètre, compass, etc. Ça m'avait permis de mieux comprendre le bousin.
"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

SirAlex
Messages : 168
Inscription : 17 Jan 2012 14:57
Localisation : Normandie - FRANCE

Re: Simulation HeadTracking Mobile sans Google SDK, et sans Gyroscope

Message par SirAlex » 21 Mars 2017 18:18

Merci,

Je vais jeter un oeil à tes liens.
Mais c'est effectivement bien complexe cette histoire :p

Avatar de l’utilisateur
E3DStef
Administrateur
Administrateur
Messages : 1646
Inscription : 14 Juil 2013 18:30
Localisation : https://www.carte-des-membres.com/fr/Unity3D-France/

Re: Simulation HeadTracking Mobile sans Google SDK, et sans Gyroscope

Message par E3DStef » 21 Mars 2017 23:17

boubouk50 a écrit :Dont gyroDroid. Ces applis te renvoient les données du gyro, accéléromètre, compass, etc. Ça m'avait permis de mieux comprendre le bousin.
+1 Pour avoir dev quelques projets là dessus la solution efficace est : avoir un gyroscope !

Mais attention certains smartphones ont compensé cet absence par plusieurs accéléromètres (sur les 3 axes), ce qui permets d'avoir plutôt de bons résultats mais bien en dessous du gyro...

Si tu trouves une solution je pense que boubouk et moi-même seront très intéressés de la connaitre ^^

A+

Stef
Le Savoir n'est Précieux que s'il est Partagé

Si besoin urgent de me contacter, faites moi un mail sur : franceunity3d@gmail.com

Répondre

Revenir vers « Unity et la VR »