2024-01-20 15:35:52 +01:00
2024-01-20 15:35:52 +01:00
2024-01-20 15:35:52 +01:00
2024-01-19 18:52:58 +01:00
2024-01-19 18:52:58 +01:00
2024-01-19 20:09:21 +01:00
2024-01-09 15:15:20 +01:00
2024-01-19 18:52:58 +01:00
2024-01-20 15:35:52 +01:00

cube3D


This project is a 3D mini game, that uses raycasting to produce a FPP (first person perspective), just like in Wolfenstein3D or Doom.

moving into the 3D

It creates a 3D view from a map in a text file, and move the view as if we were walking and looking around.

An example of a map :

$> cat -e map.cub
111111111111111111111111$
1......................1$
1......................1$
1......................1$
1.....11111....1.1.1...1$
1.....1...1............1$
1.....1...1....1...1...1$
1.....1...1....E.......1$
1.....11.11....1.1.1...1$
1......................1$
1......................1$
1......................1$
1......................1$
1......................1$
1.......11.............1$
1.......11.............1$
111111..11............11$
11.1....11.............1$
11....1.11............11$
11.1....11.............1$
11.1111111............11$
11...................111$
1111111111..........1111$
111111111111111111111111$
$>

This map will produce this 3D view :

moving into the 3D

You can change the images on the wall :

change the images on the wall

And change the map itself :

change the map

raycasting


Raycasting is a technic that creates the illusion of 3D with very low computational power.

This technic has the hability to not show hidden area by design, which is a great simplification for rendering.

How it works :

  1. first you determine the position and orientation of the viewer in a plan,

  1. then you cast a ray until it reaches a wall

  1. you can now trace the vertical line on the 3D view

  1. the height of the wall is inversely proportional to the length of the ray : the closer the wall, the heigher it is

  1. finally, if the rays scan the whole picture, you see the perspective appears

  1. but you can also see that walls are rounded, like a fish eye effect. It's because rays change length while scanning the wall, so we must apply a correction to the angle

example of raycasting in action while construction of the project :

example of raycasting during the construction of the project

ressources


Description
No description provided
Readme 106 MiB
Languages
C 99.9%