Raycaster
Este es un proyecto para mi estudio del método de la perspectiva. A medida que vaya abanzando con la explicación del programa, voy a clarificar como se relaciona el mismo con el método pero por ahora:
¿Qué es un raycaster?
Sería oportuno analizar la palabra:
- Ray: rayo.
- Caster: sondear, castear, lanzar, etc.
Entonces podría decirse que es un programa que dispara una determinada cantidad de rayos para así crear un espacio ilusrio tridimensional. El primer uso para esta técnica fué en Wolfenstein 3-D en 1992 por lo que es una técnica utilizada en compurtadoras de muy vajos recursos.
¿Como funciona?
Hay que tener en cuenta que en la lógica detrás del sistema del programa se utiliza un plano 2D para generar la ilusión de una pantalla 3D y por esto nos vamos a encontrar con limitaciones, como ser:
- En la pantalla (o plano de proyección) solo aparecerán una serie de lineas verticales consecutivas, una al lado de la otra, las cuales por su distinta longitud van a formar la imagen deseada. Esto signiifica que solo se pueden dibujar imágenes con lineas verticales y no pixel por pixel (ese es en realidad otro método llamado raytracing) lo cual es una grán limitación plástica, pero aún así se pueden lograr muchas cosas con tan pocos recursos.
Si en realidad es un plano 2D ¿Cómo se logra ver 3D en la pantalla?
La explicación es algo compleja y tiene mucho cálculo de por medio, pero para simplificarlo todo:
Se dispara un rayo desde el espectador hacia la pared más cercana, cuando el rayo choca contra la pared, se mide la longitud del rayo y esa distancia se la divide por una constante (que generalmente es la altura de la pantalla). El número resultante del cálculo será la longitud de la línea vertical mostrada en la pantalla.
(altura de la línea) = ((tamaño/altura de un cubo)*(altura de pantalla total))/(distancia del rayo)
Este proceso se repite 60 veces, una por cada grado del ángulo de visión. Cada vez que un ciclo se concreta y una linea vertical es dibujada en la pantalla, se dispara otro rayo 1º más a la derecha y cuando el proceso ya se realizó 60 veces se comienza de nuevo por el 1er grado.
Como habrás notado, en ningún momento se utilizó el plano de proyección para atravezarlo con un rayo antes de que se toque la pared: más bien el rayo salió de la persona/espectador, chocó la pared y el resultado de la división entre la distancia y la constante se plasma en el plano de proyección en forma de línea vertical. Esto me llevó a pensar donde estaría la pantalla en el plano 2D y llegué a la conclusión de que la pantalla es en realidad la constante que multiplica o también la línea del suelo más cercana al espectador.