2010-02-02 12 views
7

Estoy escribiendo una aplicación Android AR y tengo mi motor funcionando pero contiene un comportamiento extraño que parece que no puedo solucionar. Estoy superponiendo una superficie OpenGL en la imagen de la cámara y estoy colocando objetos 3D en la vista en consecuencia. Si utilizo datos ficticios para la ubicación de mis objetos AR, es decir, LAT 10 LON 10 se convierte en x = 10 y = 10 en la superficie OpenGL, entonces la superposición funciona perfectamente. Sin embargo, si uso coordenadas GPS directas para mi LAT y LON (por ejemplo, LAT 12.34567890 LON 100.23456789), entonces todos mis objetos se mueven alrededor de su ubicación o no aparecen. Sé que hay problemas con el uso de puntos flotantes y el marco OpenGL, pero he estado leyendo y todavía tengo problemas para detener este comportamiento. ¿Alguien mas ha tenido este problema? ¿Debo utilizar un factor de escala entre mi GPS y la superficie de OpenGL? En caso afirmativo, ¿qué valores son buenos? Traté de escalar mi LAT y LON por 1000000 para eliminar el punto flotante, pero no ayudó y el rendimiento fue terrible.Realidad Aumentada - Asignando GPS a OpenGL

Estoy tan cerca de hacer que esto funcione, que cualquier ayuda sería muy apreciada.

Respuesta

1

Calcule en qué 1x1 o 0.5x0.5 grados 'recuadro' están sus coordenadas crudas y restar ese recuadro, de modo que sus coordenadas ahora están relacionadas con el 'recuadro' en lugar de todo el mundo.

So LAT 12.34567890 LON 100.23456789 está en la caja (12.100), con coordenadas (0.34567890, 0.23456789). Querrá pasar el (0.34567890, 0.23456789) a OpenGL.

Obtener aproximadamente 1m de precisión de un flotador con +/- 180.0 grado es algo incompleto en el mejor de los casos, y una vez que comienzas a hacer todas las operaciones de matriz de OpenGL las cosas empiezan a dar vueltas bastante mal.

+0

Hola genpfault Gracias por la respuesta. Me tienes pensando en una línea diferente. Empecé a pensar que el procesador estaba estropeando las cosas, pero luego recordé la regla de oro, "no es su código, es mío". Después de tomar un enfoque más metódico, descubrí que el valor de rotación que estoy usando era introducir el jitter, así que necesito filtrarlo un poco más. Espero haber superado esto y poder liberarlo ... – Snowwire

Cuestiones relacionadas