/Cub3d

Primary LanguageC

Cub3d

Mon premier RayCaster avec la minilibX.

Table of Contents

  1. Summary
  2. Raycasting
  3. Resources

Summary

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

Raycasting

Ray casting is capable of transforming a limited form of data into a three-dimensional projection with the help of tracing 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 it remains the most efficient method to render a 3D image.

Schéma

image image image

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 rays intersect an object, the object's color and brightness at that point determines the value of one pixel in the final image. A direction vector represents the orientation of the observer extending forward. A camera planperpendicular to the direction vector, representing the shape of the final rendered image, is also required in most types of ray casting.

Sitographie