• Viernes 8 de Noviembre de 2024, 13:32

Mostrar Mensajes

Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.


Temas - Karkayu

Páginas: [1]
1
OpenGL / Capturar Pantalla
« en: Lunes 24 de Marzo de 2008, 00:02 »
Hola a todos:

A ver si alguno puede orientarme. Necesito implementar la típica opción de que, al pulsar una tecla, se me vuelque la escena que se esta visualizando en un fichero .jpg (o .bmp) ¿Como lo hacéis vosotros? ¿existe alguna librería para ello?

Yo habia pensado en volcar el contenido del framebuffer, pero me genera archivos  .raw y yo necesito algo mas estandar.

Uso C y Glut, bajo Linux ¿Alguna idea?

Un saludo

2
OpenGL / Texto En La Escena
« en: Lunes 19 de Marzo de 2007, 21:36 »
Aqui estoy otra vez  :P

Necesito saber como poner texto dentro de la escena. Yo se poner texto usando glOrtho2d y glRasterPos2f(x,y), pero con esto el texto va "pegado" a la ventana. Es decir, si muevo la camara o aumento el zoom, el texto se va a ver igual siempre.

Lo que yo quiero es dibujar una ruta de puntos y encima de cada punto colocarle un nombre. Si muevo la camara, y por tanto los puntos de la escena, quiero que el texto se mueva con cada punto. No se si me he explicado bien  :D

Me gustaria que me orientaseis o en su defecto que me digais cual es el nombre de la técnica (y asi puedo buscar informacion por internet).

Un saludo

3
OpenGL / Re: Movimiento De Camara
« en: Viernes 16 de Marzo de 2007, 19:03 »
Hola a todos:

Estoy modelando una escena con openGL/GLUT y me gustaria poder rotar la camara alrededor de dicha escena.

Mi intencion es que la camara gire alrededor de un punto de la escena (como si la escena estuviera dentro de una esfera y la camara se moviera por ella). Para ello usaria los cursores.
Usando arriba/abajo la camara se deberia mover siguiendo el recorrido de un meridiano y con izquierda/derecha la camara se moveria siguiendo el recorrido de un paralelo.

He visto varios tutoriales sobre el movimiento de la camara pero en todos ellos lo que hacen es rotar la escena (con gltranslate y glrotate). Eso no es lo que yo busco ya que, para mi, eso es una perdida de rendimiento importante (sobre todo si no se posee una celeradora 3D) ya que mi escena comienza a ser ostentosa en contenido.

Mi idea es mover la camara variando para ello los valores de los parametros de la funcion gluLookAt .
Para ello paso las coordenadas de la posicion de la camara  a coordenadas esfericas (usando las correspondientes formulas matematicas), hago un incremento del angulo azimutal o elevacion (segun el movimiento que vaya a hacer) y vuelvo a pasar de esfericas a coordenadas de mundo.

El problema que tengo es el siguiente:
Haciendo lo antes comentado, la primera vez que toco alguna tecla para mover la camara (en cualquier direccion), la camara me da un salto y se coloca en otro sitio en el espacio  :blink:
Una vez realizado ese salto, ya gira todo correctamente.

¿Como evito ese salto?

El salto en cuestion mueve literalmente la camara de sitio (he ido mirando los valores de las variables que uso en el gluLookAt en cada momento y cambian bruscamente la primera vez que pulso una tecla).

¿Alguna idea/sugerencia?
¿Es correcto el metodo que estoy usando o conoceis otro mejor?

Un saludo

PD.- Programo con OpenGL/GLUT, en C y bajo Linux  :comp:

4
OpenGL / Rotaciones De Camara En Una Escena Simple
« en: Domingo 24 de Abril de 2005, 11:48 »
Saludos a todos.

Estoy empezando a programar en OpenGl y me surgen unas dudillas.
Por ahora no son muy complicadas y seguro que con vuestro nivel me las
sabreis responder  :D .

Bueno, al grano.
He programado una escena donde, por ahora, solo tengo puntos y lineas
que dibujan una casita en 3D (si, lo se, es muy triste)  :( .

Al pulsar una tecla, cambio la proyeccion: de paralela a conica y
viceversa.
Para ello he usado glFrustum y glOrtho. Redibujo la escena con cada una
dependiendo del caso.
Luego, situo la camara con gluLookAt

Mi problema viene al intentar mover la camara alrededor de la casita.
Cada vez que pulse alguno de los cursores, la camara debe rotar segun
la direccion correspondiente.
He pensado que lo mas facil es transformar a coordenadas esfericas cada
vez que quiera moverla, variar el angulo correspondiente y recalcular
las nuevas coordenadas.

Pues no va.  :(
No se que hago mal (segurisimo que es una tonteria... :huh: ).

Os explico un poco como lo hago:
camx,camy,camz ==> posicion de la camara
objx,objy,objz ==> posicion del objeto
Estos son los argumentos que tiene el gluLookAt.

dist ==> es la distancia entre esos dos puntos, es decir el modulo de
ese vector.

Cada vez que pulso un cursor, pej Arriba, calculo los angulos
azim y elev usando las formulas:

azim = (M_PI/180) * atan(camx/camz);
elev = (M_PI/180) * asin(camy/dist);

Ahora incremento uno de los dos angulos, en este caso el elev,
elev += 15.0*(M_PI/180);

Recalculo las nuevas coordenadas camx,camy,camz usando las formulas (no

las pongo pq estas son largas....)
Y redibujo la escena con glutPostRedisplay();

De esta forma, como camx,camy,camz son argumentos de gluLookAt y estos
argumentos han variado, deberia funcionar, no?????

Sabeis que hago mal????
Gracias por leer este post tan largo y muchisimas gracias de antemano
para todos los que intenteis ayudarme.

A cuidarse.   B)

Páginas: [1]