Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





Poner Cielo

Iniciado por JunXCosio, 01 de Marzo de 2004, 12:16:30 AM

« anterior - próximo »

JunXCosio

 Pues eso que intento a una escena ponerle un Cielo en mi escena.  (ole)

y claro esta que aunque la camara se eleve nunca llegue al cielo no se si me explico.

y que se mueva y esas cosas...

Alguien sabe como puedo hacerlo o sino donde puedo encontrar informacion sobre ello?

muchas gracias de ante mano...

Nota: Es en OpenGL y perdonar por estas preguntas tan chorras pero estoy empezando en este mundillo... :D
a televisión es muy educativa, cuando alguien la enciende en casa, yo me marcho a la habitación a leer un libro. Groucho Marx

_Grey

 Lo habitual y sencillo es que pongas un cubo o una esfera con el dibujo de las nubes, las montañas a los lados, y en fin, lo que quieras tener de fondo.

El centro de la esfera y el cubo sera la posicion de la camara, asi si giras la vista, veras moverse las montañas del fondo y todo lo demas, pero por mucho que te muevas, nunca llegaras a los limites por que esta en la posicion de la camara.

No tengo links a tutoriales, pero seguro que se pasa mas de uno con ellos.

Espero que te sirva lo dicho  :)

Bye!.

Thenend

 Nada de preguntas chorras, es una buena pregunta.

Una forma facil y efectiva de hacer un cielo es usando un skybox. He buscado en google y no veo ningún tuto "ideal" sobre el tema. Te pongo uno de gamasutra que te ayuda a hacerte una idea de lo que son y de como crearlos:

http://www.gamasutra.com/features/19981023/bell_01.htm

También hay uno en gametutorials pero me lo acabo de bajar y me parece que no sirve de nada porque la cámara se mueve en relación al skybox y por lo tanto no se consigue el efecto deseado, pero viene con unas texturas que puedes utilizar en tu escena:

http://www.gametutorials.com/Tutorials/ope.../OpenGL_Pg2.htm

Como no me parece que ninguno de los dos te solucione el tema te doy una pequeña explicación de de que va esto.

Como segúramente ya sabrás, a la hora de renderizar una escena, cada pixel tiene un valor almacenado en el "z-buffer" que indica lo lejos que está de la cámara, de manera que solo podamos sobreescribir ese pixel con otro que pertenezca a un objeto que esté mas cerca que él. Así no influye el orden en el que se dibujan los polígonos sino la distancia a la que están.

Cuando comenzamos a dibujar un frame los valores del z-buffer indican que ese pixel está en la posición mas lejana posible. Si en ese momento dibujamos un polígono y le decimos que no escriba en el buffer la distancia a la que está sino que deje el valor z tal y como está, ese polígono siempre será el mas lejano y todos los demás se dibujarán encima de él. Y eso es exáctamente lo que ocurre con el fondo ¿no?

Bien, pues ahora imagina que cojes una caja de cartón, le pintas unas montañas por dentro, te la pones en la cabeza y la renderizas de esta manera en la escena. ¿Ya lo pillas? Como llevas la cabeza dentro, mires donde mires la ves y como se mueve contigo nunca llegas chocarte con ella. Y no te impide ver los objetos que tienes a tu alrrededor porque como se supone que está lo mas lejos posible (porque no ha escrito el buffer-z), todos los objetos se dibujan encima de ella, da igual la distancia a la que esté, aunque la tengas pegada a la nariz.

Bueno, y en la parte técnica, si estás en OpenGL necesitarás usar glDisable(GL_DEPTH_TEST); cuando dibujes la caja y glEnable(GL_DEPTH_TEST); cuando termines, para que los polígonos se sobreescriban normalmente.

No se si me he explicado bien. A ver si te ayuda.

EDIT: anda, mientras lo escribia ha contestado Grey xD

JunXCosio

 Voy a probar todo eso...

Ya os contare, muchaaaaaaas gracias... (ole)  
a televisión es muy educativa, cuando alguien la enciende en casa, yo me marcho a la habitación a leer un libro. Groucho Marx

JunXCosio

 Lo he hecho y chapo... pero tengo un par de dadas:

1º De que me sive desactivar y activar el z-buffer si todos los objetos se dibujan dentro del cubo o skybox???
Digo esto porque he probado hacer lo de las dos formas y la cosa es la misma si me acerco muchoooooo llego a salirme del skybox de las dos maneras (con el z-buffer o si el), la unica deferencia es que los objetos se ven simpre... No se si me explico bien...

mirar este es parte del codigo en la funcion render desactivando y :

gluLookAt(Camara.m_posicion.m_fX, Camara.m_posicion.m_fY, Camara.m_posicion.m_fZ,
    Camara.m_vista.m_fX,    Camara.m_vista.m_fY,    Camara.m_vista.m_fZ,
    Camara.m_altura.m_fX,   Camara.m_altura.m_fY,   Camara.m_altura.m_fZ);

   //------- Ponemos el SkyBox -------
   glDisable(GL_DEPTH_TEST); //Desactivamos el Z-Buffer
   CrearSkyBox();
   glEnable(GL_DEPTH_TEST); //Activamos el Z-Buffer
   //...


Y mi otra prgunta es si sabeis de algun sitio que pueda pillar unas imagenes para hacer skybox como las de  gametutorials...

Muchas gracias por vuestro tiempo que sois la hostia  (ole)
a televisión es muy educativa, cuando alguien la enciende en casa, yo me marcho a la habitación a leer un libro. Groucho Marx

Thenend

 La gracia del efecto es que el cubo se mueve contigo, el tutorial de DigiBen está mal, esa no es la idea y de hecho sirve de poco porque como dices te puedes salir del cubo. Tienes que dibujar el cubo aplicando las rotaciones de la cámara pero no el desplazamiento, de esta manera siempre estarás en el centro del cubo, como dice Grey. Y da igual el tamaño del cubo, puedes hacerlo mas pequeño que la escena, de hecho deberías porque si está mas lejos que el plano lejano del frustum no se verá, y si está mas cercano tapará algunos objetos irremisiblemente.

Skyboxes, según el tuto de gametutorials, tienes aqui:

http://www.planethalflife.com/crinity/skymain.htm

Talué.

AgeR

 También puedes hacertelos tú con Terragen.

Saludos!

_Grey

 La razon para desactivar el ZBuffer (cosa que no puntualice en el primer mensaje), es que, por problemas de precision y de maximos y minimos, es por ellos que es posible que los topes del cubo no se dibujen o incluso que algun objeto quede "detras" de los poligonos del skybox, como es "el fondo" podemos permitirnos tratarlo sin ZBuffer y de paso ahorrarnos estos problemas, siempre sera "lo mas lejano".

Saludotes.

JunXCosio

 Ok entendido mas o menos ... :blink:  
a televisión es muy educativa, cuando alguien la enciende en casa, yo me marcho a la habitación a leer un libro. Groucho Marx

Lord Trancos 2

Cita de: "AgeR"También puedes hacertelos tú con Terragen.

Saludos!
No tendras por casualidad el terraSky, ¿verdad?
Es que en la web de terragen no esta disponible, y aunque lo he buscado en google todo lo que encuentro son links 404
on los años y mucho esfuerzo he llegado a atesorar una ignorancia total sobre casi todas las cosas.
Gate to Avalon (mi Blog)

AgeR

 Pues no lo tengo, no.  :(

Saludos!






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.