Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





gluLookat: Fallo al usar las 3 componentes de Eye

Iniciado por albmargu, 28 de Septiembre de 2010, 01:17:48 PM

« anterior - próximo »

albmargu

Hola, estoy bastante desesperado con este error.

Estoy usando perspectiva Ortogonal y el programa me venía funcionando perfectamente. Tengo un algoritmo que calcula la posición real de la cámara que tomó una fotografía para poder orientar una figura sobre esta imagen (del estilo de ARToolkit).

El problema me viene ahora que estoy superponiendo objetos complejos y calculo su orientación a través de su silueta. Bien, con la posición calculada y verificada en Matlab. Si le paso a Eye mis 3 componentes, el objeto aparece girado sobre el eje óptico (Eye - Origen), pero si le paso únicamente 1 ó 2 la figura se orienta correctamente y aparece bien. Dicho de otra manera, el objeto debe resposar sobre el suelo mientras no lo mire desde abajo, y no aparece así.

También he notado que si la componente Z no es negativa, la figura aparece bocabajo, pero eso es algo fácil de arreglar.

¿Tiene alguien idea de qué hago mal?

Un saludo y gracias.

tamat

con la información que das me cuesta entender qué haces exactamente. calculas la matriz view-projection usando tus algoritmos y luego tienes que calcular la model de cada objeto?
Por un stratos menos tenso

albmargu

De acuerdo, lo especifico un poco más.

Sólo tengo que mostrar un objeto sobreimpresionado sobre un fondo que es un fotografía tomada con una cámara. Este objeto necesita estar orientado igual que el fondo sobre el que descansa. Para orientarlo tengo un algoritmo que nos da la posición de la cámara. Paso estos valores al algoritmo y el objeto aparece correctamente. Todo esto se hace de forma automática. Se calcula la escala en función de Z y así el objeto parece estar unido al fondo. Para esto utilizo glulookat y lo hace bien.

El problema lo tengo cuando en lugar de ese algoritmo, le paso directamente las coordenadas de la cámara extraídas a partir de su silueta. En ese caso utilizo glulookat y le paso las 3 coordenadas EYE. Lo que ocurre es que si le paso las 3, el objeto me aparece girado. Por girado quiero decir que el objeto no descansa sobre su base. Si le paso 2 o sólo una. La orientación del objeto es correcta.

Es como si el vector UP de glulookat estuviera mal y girase el objeto, pero me extraña mucho que con un algoritmo funcionara y con el otro no.

La forma de llamar a glulookat en ambos casos es la misma. Dentro de un bloque push-pop se hace la llamada y se almacena la matriz. Hay otras operaciones de corrección y desplazamiento que se almacenan en otra matrices para usarlas o a mi antojo.

Un saludo.

tamat

codigo y fotos, sino ya te digo que es dificil ver qué falla
Por un stratos menos tenso






Stratos es un servicio gratuito, cuyos costes se cubren en parte con la publicidad.
Por favor, desactiva el bloqueador de anuncios en esta web para ayudar a que siga adelante.
Muchísimas gracias.