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.
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.