Réalité Augmentée

Bonjour à  tous,


 


Je travaille en ce moment sur une application en réalité augmentée. J'ai une liste de points dont la structure est : (Azimuth, Hauteur) que je souhaite représenter sur l'écran de la caméra.


 


Grâce aux capteurs du device je récupère l'azimut (j'imagine que c'est la valeur au centre de l'écran), je récupère aussi les données du gyroscope pour connaitre l'inclinaison du device. J'ai aussi à  ma disposition la hauteur en altitude du device (j'imagine aussi au centre de l'écran). Je pense que j'aurai aussi besoin de la focale de la camera mais peut-on la récupérer quelque part ?


 


Commenta représenter mes points à  l'écran ? Comment connaitre l'intervalle de valeurs à  présenter. Que couvre la camera en therme d'azimuts (de gauche à  droite) et d'altitude  (de haut en bas) ? Comme corréler le plan x, y de la view de la camera avec mes données ?


 


Je n'ai rien trouvé de probant sur cocoapod ni sur GitHub, stackover est un désert sur le sujet


 


D'avance merci de votre aide


Mots clés:

Réponses

  • Apple a filé en sample pARK. Il me semble que le sample se base sur des POI pour les afficher, c'est peut-être pas tout à  fait ton problème, mais il y a peut-être des éléments de réponses là -dedans.


  • Merci Larme, c'est de l'ObjC  B)


     


    J'ai trouvé une version similaire sur ici www.raywenderlich.com en Swift 3 à  l'aide de l'excellente librairie HDAugmentedReality  ::)


     


    Ca marche pas mal mais ca ne localise que des POI (lat, long) avec des vecteurs de direction. C'est très bien pour l'azimuth mais pour mon angle d'altitude par rapport à  l'inclinaison du device je n'ai rien pu faire. L'auteur de HDAugmentedReality  promet de s'y pencher, il y a même une issue à  ce sujet mais ça coince encore un peu.


     


     


    Cet après midi j'ai réussit à  retrouver mes petits sur papier en math pour créer une fonction qui me donne la position x,y par rapport à  la position du device et à  mes deux angles azimut et hauteur. Ne me manque plus a priori à  trouver la focal ou FOV (field of view) de chaque appareil. Pour l'instant je pense mettre une constante en attendant mieux. J'ai trouvé des spec techniques sur internet mais comment savoir si mon utilisateur utilise tel ou tel appareil ? Pour que mon code soit pérenne je préférerai recevoir le FOV directement de la camera mais je ne trouve cela nul par dans la doc...


  • Tu peux connaà®tre le modèle de l'appareil, et donc via ta liste de specs connaà®tre ton FoV : https://www.boinx.com/chronicles/2013/3/22/field-of-view-fov-of-cameras-in-ios-devices/+ http://stackoverflow.com/questions/11197509/ios-how-to-get-device-make-and-model



    Maintenant, c'est peut-être à  tester, mais je me demande si cette info ne serait pas dans les metadatas d'une photo prise avec l'appareil. Donc simuler une ? Ou en prendre une et la relire ?


  • iLandesiLandes Membre
    janvier 2017 modifié #5

    Merci Larme,


     


    Je crois que j'ai trouvé dans la Doc Apple :


     


     


    J'essaie demain et je vous raconte ;-)


     





    var videoFieldOfView: Float { get }

     





    Returns zero if the format's field of view is unknown.



  • iLandesiLandes Membre
    février 2017 modifié #6

    J'arrive à  avoir la position du soleil par rapport à  une position GPS. J'ai un angle horizontal (azymuth) et vertical élévation. Les deux angles sont en degrés et j'ai trouvé les formules pour le placer sur un écran à  plat. Je connais le champs de vision (FOV) de la camera et la diagonale (en points) de l'écran. A partir de ces données j'arrive à  représenter le soleil grâce a des fonctions qui traduisent un angle en degrés en point.


     


    Mon problème maintenant est d'afficher cela en fonction de la rotation du téléphone sur 3 axes (x,y,z) pour réussir à  faire de la réalité augmentée. Il faudrait que j'arrive à  trouver une fonction qui en fonction des points que j'ai trouvés ; quand le device bouge (s'incline du haut vers le bas et de la gauche vers la droite) me donne les points(x,y) modifiés.


     


    Pour l'instant j'ai trouvé ça : http://stackoverflow.com/questions/27766471/move-a-camera-toward-it-pointing-direction-taking-rotation-into-consideration


     


    Mais j'ai pas compris :[


     


     




    D'avance merci de votre aide


  • CéroceCéroce Membre, Modérateur

    L'exemple donné est du Scene Kit.


    Ton problème est-il de placer une caméra au centre de la scène 3D et de la faire pointer vers une direction ?


     


    Je peux t'aider avec Scene Kit, j'en ai une grosse expérience.


  • MalaMala Membre, Modérateur

    Je t'ai répondu sur mon sujet mais je n'avais vu le tiens avant. Ok, donc ton soucis c'est la projection à  l'écran. J'aurais tendance à  penser aussi qu'il faut connaitre l'optique. A moins qu'Apple ait prévu le coup mais je ne saurais répondre.


Connectez-vous ou Inscrivez-vous pour répondre.