IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Android Discussion :

Réalité augmentée problème de fluidité


Sujet :

Android

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Juin 2012
    Messages
    1
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2012
    Messages : 1
    Points : 1
    Points
    1
    Par défaut Réalité augmentée problème de fluidité
    Bonjour a tous,
    J'aurais besoin de votre aide, voila mon problème :

    Je suis en train de développer une application de réalité augmentée et j'ai quelques problèmes de fluidité. Je m'explique, mon application est de type "orientation", comme l'appli wikitude pour ceux qui connaissent. Je veux indiquer a l'utilisateur, sur son écran de portable, se qui est devant lui à l'aide d'une petite image.
    J'utilise les capteurs du téléphone suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    magnetic = sensorMngr.getDefaultSensor (Sensor.TYPE_MAGNETIC_FIELD);
    accelerometer = sensorMngr.getDefaultSensor (Sensor.TYPE_ACCELEROMETER);
    orient = sensorMngr.getDefaultSensor (Sensor.TYPE_ORIENTATION);
     
    sensorMngr.registerListener (sensorLstr, magnetic, SensorManager.SENSOR_DELAY_UI);
    sensorMngr.registerListener (sensorLstr, accelerometer, SensorManager.SENSOR_DELAY_UI);
    sensorMngr.registerListener (sensorLstr, orient, SensorManager.SENSOR_DELAY_UI);
    Le capteur orientation pour le calcul de l'azimut et le reste pour le pitch. Le placement de l'image n'est pas mon problème mais plus son déplacement...il n'est pas fluide. A chaque réception d'une valeur de mes capteurs je mets à jour la position de mon image à l'aide d'un setMargin().

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    float angle = (float) angleDirection (getSpotAngle (c, p, me), azimut);
    lp = new FrameLayout.LayoutParams (FrameLayout.LayoutParams.WRAP_CONTENT, FrameLayout.LayoutParams.WRAP_CONTENT);
    if (pitch < screenHeight / 2)
       marginTop = (int) ( (Math.abs (pitch) - 90) / 90 * screenHeight);
    else
       marginTop = - (int) ( (Math.abs (pitch) - 90) / 90 * screenHeight);
     
    marginLeft = (int) ( - angle * screenWidth / 90);
    lp.setMargins (marginLeft , marginTop, 0, 0);
    L'angle correspond à l'angle entre mon azimut et la direction entre ma position et la position de mon point.

    Je ne sais pas quoi faire pour que le déplacement de mon image se fasse de façon fluide. Aujourd'hui l'image saute...
    Par contre je répète que mon problème ne vient pas du placement de l'image mais du déplacement.

    J'espère avoir été assez clair.
    Je vous remercie, si vous avez des questions n'hésitez pas.

  2. #2
    Expert éminent

    Avatar de Feanorin
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    4 589
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 4 589
    Points : 9 149
    Points
    9 149
    Par défaut
    Bonjour,

    Tu peux toujours essayer de passer par les animations déjà ton image ne sautera pas tout le temps.

    Après peut être que tu dessines ton image trop souvent , laisser du temps entre chaque saut serait une bonne idée ? enfin cela reste une piste

    Du style ne déplacer l'image que toutes les x secondes et non chaque fois qu'elle doit bouger.

    Pour les animations c'est par ici :
    http://developer.android.com/referen...e-summary.html
    Par contre le fait d'utiliser les animations te fera changer ton code, il faudra passer par une View et sa position et non ses Margins ...

  3. #3
    Futur Membre du Club
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2012
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juillet 2012
    Messages : 8
    Points : 6
    Points
    6
    Par défaut
    Bonjour ,
    je suis en train de faire la même application 'Réalité Augmentée avec Android' mais quand j’exécute mon app elle se bloque et elle m'affiche tout ces message là :

    07-18 12:38:55.260: E/AndroidRuntime(2050): FATAL EXCEPTION: main
    07-18 12:38:55.260: E/AndroidRuntime(2050): java.lang.NullPointerException
    07-18 12:38:55.260: E/AndroidRuntime(2050): at org.com.formation.test.Main.getSpotAngle(Main.java:103)
    07-18 12:38:55.260: E/AndroidRuntime(2050): at org.com.formation.test.Main.moveSpot(Main.java:127)
    07-18 12:38:55.260: E/AndroidRuntime(2050): at org.com.formation.test.Main$1.onSensorChanged(Main.java:168)
    07-18 12:38:55.260: E/AndroidRuntime(2050): at android.hardware.SensorManager$ListenerDelegate$1.handleMessage(SensorManager.java:580)
    07-18 12:38:55.260: E/AndroidRuntime(2050): at android.os.Handler.dispatchMessage(Handler.java:99)
    07-18 12:38:55.260: E/AndroidRuntime(2050): at android.os.Looper.loop(Looper.java:137)
    07-18 12:38:55.260: E/AndroidRuntime(2050): at android.app.ActivityThread.main(ActivityThread.java:4424)
    07-18 12:38:55.260: E/AndroidRuntime(2050): at java.lang.reflect.Method.invokeNative(Native Method)
    07-18 12:38:55.260: E/AndroidRuntime(2050): at java.lang.reflect.Method.invoke(Method.java:511)
    07-18 12:38:55.260: E/AndroidRuntime(2050): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
    07-18 12:38:55.260: E/AndroidRuntime(2050): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
    07-18 12:38:55.260: E/AndroidRuntime(2050): at dalvik.system.NativeStart.main(Native Method)
    Pouvez vous m'aidez ???
    Merci d'avance


    Citation Envoyé par Feanorin Voir le message
    Bonjour,

    Tu peux toujours essayer de passer par les animations déjà ton image ne sautera pas tout le temps.

    Après peut être que tu dessines ton image trop souvent , laisser du temps entre chaque saut serait une bonne idée ? enfin cela reste une piste

    Du style ne déplacer l'image que toutes les x secondes et non chaque fois qu'elle doit bouger.

    Pour les animations c'est par ici :
    http://developer.android.com/referen...e-summary.html
    Par contre le fait d'utiliser les animations te fera changer ton code, il faudra passer par une View et sa position et non ses Margins ...

  4. #4
    Expert éminent

    Avatar de Feanorin
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    4 589
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 4 589
    Points : 9 149
    Points
    9 149
    Par défaut
    Bonjour,

    org.com.formation.test.Main.getSpotAngle(Main.java:103)
    Pourrais tu nous montrer ton code, surtout la fonction moveSpot et getSpotAngle de ta fonction MAIN .

    Ton erreur est à la ligne 103 de ton fichier Main.java.

  5. #5
    Futur Membre du Club
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2012
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juillet 2012
    Messages : 8
    Points : 6
    Points
    6
    Par défaut
    Bjr ;

    voila la partie du code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
     public final static float getSpotAngle(Context _context, GeoPoint p, Location me) {
            Location location = new Location("LOCATION_SERVICE");
     
            try {
                location.setLatitude(p.getLatitudeE6());
                location.setLongitude(p.getLatitudeE6());
            } catch (Exception e) {
            	Log.e("GETSPOTANGLE", e.getMessage());
            }
     
            return  me.bearingTo(location);
        }
     
        public final static double angleDirection(double spotAngle, double direction){
        	 double angle;
             if (spotAngle > 0) {
                 if (direction < spotAngle - 180)
                     angle = 360 - spotAngle + direction;
                 else
                     angle = direction - spotAngle;
             } else {
                 if (direction > spotAngle + 180)
                     angle = direction - spotAngle - 360;
                 else
                     angle = direction - spotAngle;
             }
     
             return (angle);
        }
     
        public final static void moveSpot(Context c, TextView tv, GeoPoint p, float azimut, Location me, int screenWidth, float roll, int screenHeight, float pitch)
        	{
        	       float angle =(float) (angleDirection (getSpotAngle (c, p, me), azimut));///////////////////////////
        	    	Log.i("ANGLE ",""+angle); 		    	
        	    	LayoutParams lp = new FrameLayout.LayoutParams(FrameLayout.LayoutParams.WRAP_CONTENT, FrameLayout.LayoutParams.WRAP_CONTENT); 
        	        int marginTop,marginLeft;
     
        	if(pitch<screenHeight/2)
        		marginTop =   (int) ((roll-90)/90*screenHeight);
        	else
        		marginTop = - (int) ((roll-90)/90*screenHeight);
     
        		marginLeft = (int)  ( - angle * screenWidth / 90);
     
     
        	lp.setMargins(marginLeft,marginTop,0,0);
        	lp.gravity = Gravity.CENTER;
        	tv.setLayoutParams(lp);
     
        }
    Citation Envoyé par Feanorin Voir le message
    Bonjour,



    Pourrais tu nous montrer ton code, surtout la fonction moveSpot et getSpotAngle de ta fonction MAIN .

    Ton erreur est à la ligne 103 de ton fichier Main.java.

  6. #6
    Expert éminent

    Avatar de Feanorin
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    4 589
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 4 589
    Points : 9 149
    Points
    9 149
    Par défaut
    Bonjour,

    Ton problème semble venir de la variable me (Location) qui semblerait être nulle.

    Pourrais tu vérifier si c'est le cas ?

    Ensuite peux tu me dire ou est ce que tu initialises cette variable ?

    Merci

  7. #7
    Futur Membre du Club
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2012
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juillet 2012
    Messages : 8
    Points : 6
    Points
    6
    Par défaut Suite ..
    salut ..
    oui, c'est le cas ! le probleme parvient de la détermination de ma position courante. Pour le moment tout est reglé, mais ya un autre probleme c'est l'affichage de la Vue camera: en executant mon code j'ai des textView qui apparaissent dans leurs propres localisation (prédetrminées) mais la Vue de la Cam reste noire!
    et s'i je fait un appel au constructeur de la classe de la camera, la Vue Cameras'affiche mais les textViews n'apparaissent po que faire ??

    Citation Envoyé par Feanorin Voir le message
    Bonjour,

    Ton problème semble venir de la variable me (Location) qui semblerait être nulle.

    Pourrais tu vérifier si c'est le cas ?

    Ensuite peux tu me dire ou est ce que tu initialises cette variable ?

    Merci

  8. #8
    Futur Membre du Club
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2012
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juillet 2012
    Messages : 8
    Points : 6
    Points
    6
    Par défaut
    c'est bon tout est parfait !!

    Citation Envoyé par futur_Ing Voir le message
    salut ..
    oui, c'est le cas ! le probleme parvient de la détermination de ma position courante. Pour le moment tout est reglé, mais ya un autre probleme c'est l'affichage de la Vue camera: en executant mon code j'ai des textView qui apparaissent dans leurs propres localisation (prédetrminées) mais la Vue de la Cam reste noire!
    et s'i je fait un appel au constructeur de la classe de la camera, la Vue Cameras'affiche mais les textViews n'apparaissent po que faire ??

Discussions similaires

  1. Problème angle de vue Réalité augmentée
    Par efedril dans le forum Android
    Réponses: 0
    Dernier message: 05/02/2014, 18h49
  2. Réponses: 0
    Dernier message: 08/11/2012, 10h52
  3. Réponses: 4
    Dernier message: 19/02/2008, 08h05
  4. Réalité augmentée: Placer la caméra correctement
    Par Wishhhmaster dans le forum OpenGL
    Réponses: 3
    Dernier message: 13/05/2007, 15h48
  5. Problème de fluidité online
    Par ackan dans le forum Flash
    Réponses: 2
    Dernier message: 17/04/2007, 12h52

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo