Activa las notificaciones para estar al tanto de lo más nuevo en tecnología.

Entornos 3D simples con raycasting

Si usted está buscando una manera fácil y rápida de crear un juego en 3D, quizás sea interesante que pruebe raycasting. Hunter Loftis ha logrado...

fps00

Si usted está buscando una manera fácil y rápida de crear un juego en 3D, quizás sea interesante que pruebe raycasting. Hunter Loftis ha logrado crear un juego como aquellos en donde se ven disparando en primera persona, en solamente 256 líneas de Javascript. Crear un mundo tridimensional no es un ejercicio simple, pero si se elige raycasting y se mantienen las demandas del juego de forma simple, la cosa cambia. Raycasting es como “ray tracing”. Se toma una dirección desde un punto de vista en particular y se sigue la trayectoria que tomaría un rayo de luz, pero en reversa, y se ven qué superficies son las que se tocan.

En ray tracing usualmente se siguen los rayos secundarios desde las superficies para incrementar el realismo. En raycasting básicamente se tiene un modelo 3D para ver cuál es la superficie más cercana al punto de vista en cada dirección. Es en términos reales, simple y muy efectivo. Raycasting es la base de los programas en primera persona como Duke Nukem 3D.

Como dice Loftis: “Raycasting se siente como hacer trampa, como si se fuese un programador flojo. Me encanta. Uno se sumerge en un entorno 3D sin las complejidades del “3D real”, que relantizan todo. Por ejemplo, raycast corre en tiempo constante, por lo que se puede cargar un mundo masivo y simplemente trabajará, sin optimización, tan rápido como un modelo pequeño. Los niveles se definen como mallas simples en lugar de árboles de polígonos de manera que se puede navegar dentro del modelo 3D sin tener antecedentes en el modelado tridimensional o un doctorado en matemáticas”.

mazeanimation
Si usted quiere hacer un laberinto, un túnel o un medio ambiente con paredes complejas verticales, hallará que es incluso más fácil. En este caso, solamente hay que escanear la dirección horizontal y descubrir la pared más cercana. Se pueden dibujar franjas verticales, representando los colores de las paredes y la altura. Por supuesto que para que se vea mejor, hay que trabajar enb los detalles, por ejemplo, las texturas de las paredes y quizás una pertinaz lluvia o rayos de las tormentas.

Una demostración del propio Loftis puede verse aquí.

Referencias:

Un programa de FPS en 256 líneas de código javascript
i-programmer

Comentarios