Rendering de Mapas de Quake 2 – Skybox

Tras un poco de trabajo extra, finalmente implementé soporte para dibujar una aproximación de los cielos del Quake 2.

Algo que me tenía bastante confundido era cómo dibujar los polígonos que tenían mapeada una textura de cielo de la forma en que se veían en el juego. Finalmente, lo que decidí hacer fue simplemente eliminar todos estos polígonos y dibujar una Skybox acorde a las dimensiones de la bounding box del mapa.


Rendering del cielo en base2.bsp.



Hasta donde tengo entendido, esto no se encuentra tan fuera de lo que se realizaba en el juego, ya que cada mapa BSP define un conjunto de texturas a mapear sobre una hipotética Skybox que no se encuentra definida en ningún lado. Esto me lleva a pensar que los polígonos mapeados con textura de cielo, los cuales ahora no se renderizan, son en realidad un artefacto para el algoritmo de determinación de visibilidad y no un instrumento visual.

Para renderizar el cielo desarrollé un nuevo Shader que elimina la porción de traslación de la matriz ModelView, haciendo que el cielo se encuentre “infinitamente” lejano. A nivel de mapeo de texturas, utilicé CLAMP_TO_EDGE para ocultar las aristas de la Skybox. El efecto es bastante sorprendente: incluso sabiendo dónde se ubican las aristas, resulta difícil notar las caras interiores de la Skybox.


Cuarto de exteriores en base1.bsp, renderizado con su cielo.

Cuarto final en base1.bsp. Notar el cielo a través de las ventanas y el techo.


This entry was posted in C++, Computación Gráfica, OpenGL, Programacion, Quake. Bookmark the permalink.

4 Responses to Rendering de Mapas de Quake 2 – Skybox

  1. Fabián says:

    Hola Alejandro, cómo andas? Soy Fabián, curse comp. graf 2 contigo el semestre pasado.. quería simplemente preguntarte de dónde sacaste la especificación de los archivos bsp del quake 2, la cosa es que estaba haciendo un juego medio de hobby y quería establecer por lo menos el formato de los mapas.
    Saludos!

  2. admin says:

    Hola Fabián,

    Disculpa la demora en responder. Este blog se encuentra un tanto deprecated.

    Mira, no hay un solo lugar donde encontrar toda la información necesaria. Un buen lugar fue Flipcode, un blog algo antiguo pero que contiene la información fundamental para interpretar el formato BSP 38 (correspondiente a Quake 2).

    De ahí en más, dependiendo de qué tanto quieras implementar, tendrás que buscar en otros lugares. Lo que me dio más trabajo personalmente fueron las texturas y los lightmaps, sobre todo por la escasez de información.

    Saludos y suerte!
    Alejandro.-

  3. Fabián says:

    Gracias, al final seguí con heightmaps nomas :P. Porque decis que esta deprecated, tenes otro?
    Seguís dando compgraf 2? Hay cosas que encontré que me parecen muy buenas para enseñar, capaz te sirven. Una es la libreria opentk para usar opengl con C#, que la encontré realmente muy completa, tiene todo prácticamente, incluso la libreria de matemáticas que hicimos integrada (y no tenes problemas para pasarle las matrices que te genera a opengl), ademas te da la funcionalidad de capturar el teclado y el mouse.
    La otra es bulletsharp que se integra con opentk y es tipo un wrapper de la libreria de fisicas bullet (para c++), esta buena porque con 2 o 3 lineas ya te creas un mundo medio “dinamico”, fácilmente.
    Saludos,
    Fabián

  4. admin says:

    Hola Fabián,

    Gracias por tu comentario. Sí, este blog está obsoleto. Mi blog se encuentra ahora alejandrosegovia.net

    El motivo por el cual mantengo este blog es principalmente por la sección tutoriales, pero desde hace tiempo no publico aquí.

    Saludos,
    Alejandro.-

Comments are closed.