Semanas 8-9

Usando mapas de cubos:

Después de decidir que no tenía suficiente tiempo para implementar el trazado de rayos, decidí crear un sistema para incluir skyboxes en el juego. Mi implementación estuvo plagada de problemas. La forma más recomendada de abordar los skyboxes que pude encontrar fue usando cubemaps. También hay un buen tutorial publicado por learnopengl.com aquí. AprendaOpenGL – Mapas de cubos. La otra cosa buena de los mapas de cubos es que permiten reflexiones sencillas al ingresar el tipo de muestra de cubo en un sombreador glsl. Intenté con todas mis fuerzas hacer que cubemaps funcionara, pero el “mejor” resultado que pude obtener fue el siguiente.

cajafallida1.gif

cajafallida2.gif

El de la izquierda era yo olvidando que las texturas .png y .jpg tienen diferentes cantidades de canales. Incluso después de solucionar el problema con el renderizado fallido, persistieron los problemas de que el palco era solo un avión que se movía en la dirección de la cámara.

Decidí que había terminado con cubemaps y decidí comenzar a crear un skybox a través de los marcos que ya había creado.

Hackear juntos un palco:

La primera cosa extremadamente importante a tener en cuenta al crear un skybox es que la geometría que dibujes debe dibujarse con la máscara de profundidad desactivada.

máscara de profundidad.png

Como puedes ver en la imagen de arriba, creé una función que me ayuda a dibujar los planos necesarios para la primera implementación dibujando 6 planos separados y diferentes rotaciones y traslaciones.

skybox1.gif

Se ve extremadamente alucinante cuando puedes mover la cámara a través del lugar donde se dibuja el palco, así que decidí que necesitaba ampliarlo. También seguía usando la textura de ladrillo, así que busqué un poco y encontré un generador de skybox espacial para obtener algunas texturas nuevas.

skybox2.gif

Estaba empezando a verse mejor, especialmente con el cambio de textura, pero el palco no está centrado en la posición de la cámara y no se mueve junto con la posición de la cámara. Pensé que sería tan fácil como agregar el Vector a las traducciones originales, pero no pareció gustarle esa solución. Varias veces se movía hacia la cámara a una velocidad más rápida o se movía hacia abajo mientras la cámara se movía hacia arriba, por lo que me tomó algo de tiempo descubrir cuáles eran las adiciones correctas. Terminé con lo siguiente.

implementación de skybox.png

skybox3.gif

El único problema real que tengo con mi implementación es que la creación de reflejos es mucho más difícil sin el uso del mapa de cubos. Terminé pasando alrededor de 3 horas tratando de hacer que los reflejos funcionaran después de terminar el palco. Estuve plagado de errores de compilación para los sombreadores que estaba tratando de crear y finalmente decidí que si los reflejos eran algo que quería explorar eventualmente, podría volver a visitar en el futuro lo que había trabajado esta semana.

By rb8jg

Leave a Reply

Your email address will not be published. Required fields are marked *