2010-02-02 4 views
7

J'écris une application Android AR et j'ai un moteur qui fonctionne, mais il contient un comportement étrange que je n'arrive pas à résoudre. Je superpose une surface OpenGL sur l'image de la caméra et place les objets 3D dans la vue en conséquence. Si j'utilise des données fictives pour l'emplacement de mes objets AR, c'est-à-dire que LAT 10 LON 10 devient x = 10 y = 10 sur la surface OpenGL, alors la superposition fonctionne parfaitement. Cependant, si j'utilise les coordonnées GPS directes pour mes LAT et LON (par exemple LAT 12.34567890 LON 100.23456789) alors tous mes objets se déplacent autour de leur emplacement ou n'apparaissent pas du tout. Je sais que l'utilisation de flottants et le framework OpenGL pose des problèmes, mais j'ai lu et j'ai toujours du mal à arrêter ce comportement. Quelqu'un d'autre a-t-il eu ce problème? Dois-je utiliser un facteur d'échelle entre ma surface GPS et celle d'OpenGL, si oui, quelles sont les bonnes valeurs? J'ai essayé d'augmenter mes LAT et LON de 1000000 pour éliminer le point flottant, mais cela n'a pas aidé et la performance a été terrible.Réalité augmentée - Cartographie GPS à OpenGL

Je suis si proche de faire fonctionner cela, que toute aide serait très appréciée.

Répondre

1

Déterminez quelle «boîte» 1x1 ou 0.5x0.5 degrés vos coordonnées brutes sont dans et ensuite soustrayez cette boîte, de sorte que vos coordonnées sont maintenant par rapport à la «boîte» au lieu du monde entier.

Donc LAT 12.34567890 LON 100.23456789 est dans la boîte (12,100), avec les coordonnées (0,34567890, 0,23456789). Vous voudrez passer dans le (0.34567890, 0.23456789) à OpenGL. Obtenir une précision de ~ 1m à partir d'un flottant avec une plage de +/- 180,0 degrés est au mieux assez sommaire, et une fois que vous commencez à faire toutes les opérations matricielles d'OpenGL, les choses tournent mal.

+0

Salut genpfault Merci pour la réponse. Tu m'as fait penser différemment. J'ai commencé à penser que le moteur de rendu était en train de tout gâcher, mais je me suis souvenu de la règle d'or: «ce n'est pas leur code, c'est le mien». Après avoir adopté une approche plus méthodique, j'ai découvert que la valeur de rotation que j'utilisais introduisait la gigue, donc j'ai besoin de la filtrer davantage. J'espère que je suis presque passé et que je peux le faire sortir ... – Snowwire

Questions connexes