Mon premier RayCaster avec la minilibX.
Ce projet est inspiré du jeu Wolfeinstein3D, considéré comme le premier FPS jamais développé. Il vous permettra d’explorer la technique du ray-casting. Votre objectif est de faire une
vue dynamique et subjective
au sein d’un labyrinthe, dans lequel vous devrez trouver votre chemin.
Rules
- Couleurs différentes pour le sol et le plafond.
- Le programme affiche l’image dans une fenêtre et respecte les règles suivantes :
- Flèches du gauche et droite du clavier pour la rotation de caméra
-
W, A, S et D
pour se déplacer - ESC et la croix rouge doivent fermer la fenêtre et quitter le programme proprement
- utilisation d’
images de la minilibX
(= recoder my_put_pixel)
- Votre programme doit prendre en premier argument un fichier de description avec extension .cub
- La map est composée d’uniquement:
0 pour les espaces vides, 1 pour les murs, et N,S,E ou W qui indique la position de départ du joueur et son orientation.
- La map doit être fermée/entourée de murs, sinon renvoyer une erreur.
- Mis à part la description de la map, chaque type d’élément peut être séparée par une ou plusieurs lignes vides.
- La description de la carte sera toujours en dernier dans le fichier, le reste des éléments peut être dans n’importe quel ordre.
- Sauf pour la map elle-même, les informations de chaque élément peuvent être séparées par un ou plusieurs espace(s).
- Le premier caractère est l’identifiant, suivi de toutes les informations spécifiques à l’élément dans un ordre:
-NO ./path_to_the_texture
(same pour SO WE EA)
-F 0,255,255 (R,G,B)
(same pour C)
-> renvoyer"Error\n"
sinon
- La map est composée d’uniquement:
- ombres
- textures FLOOR and CEILING
- colisions
- armes avec recul et munitions
- bruitages / musique
Ray casting is capable of
transforming a limited form of data into a three-dimensional projection
with the help oftracing rays from the view point
into the viewing volume. The main principle behind ray casting is that rays can be cast and traced in groups based on certain geometric constraints.
The first game built on a ray casting engine to achieve massive success was Wolfenstein 3D, which was released on May 5, 1992.
Modern video games have advanced significantly, with faster CPUs, more memory, and the availability of GPUs to accelerate the computation of 3D graphics. However, most modern video game 3D engines still use an advanced form of ray casting, because itremains the most efficient method to render a 3D image
.
Schéma
In CGI (computer-generated imagery), ray casting
is the most basic form of raytracing
. Unlike other forms of ray tracing, where rays originate from a light source and bounce off objects to arrive at the observer, in ray casting, they're"cast" directly from the viewpoint
. When cast raysintersect an object
, the object's color and brightness atthat point determines the value of one pixel in the final image
. Adirection vector
represents the orientation of the observer extending forward. Acamera plan
perpendicular to the direction vector, representing the shape of the final rendered image, is also required in most types of ray casting.
- Lode's Computer Graphics Tutorial
- Youtube raycasting tutorial
- Explanations of raycasting
- Other tutorial
Réalisé avec Lee Francesco