Un moteur de rendu 3D temps réel écrit en C, propulsé par MiniLibX.
Transforme n'importe quelle carte de hauteur en un monde filaire interactif : projection isométrique ou perspective, transformations topologiques (tore, sphère), dégradés de couleurs procéduraux et une caméra entièrement contrôlable à la souris.
- Aperçu
- Fonctionnalités
- Contrôles
- Format des cartes
- Compilation
- Utilisation
- Architecture
- Pipeline de rendu
- Palettes de couleurs
- Auteur
« FDF » (Fil De Fer) prend un fichier texte décrivant une grille de hauteurs et en dessine le maillage en perspective. Chaque point du maillage est relié à ses voisins par une ligne tracée avec l'algorithme de Bresenham, le tout interpolé avec un dégradé de couleur en fonction de l'altitude.
| Fonctionnalité | Détail |
|---|---|
| Double projection | Orthographique et perspective, commutables à chaud |
| Caméra libre | Rotation (yaw / pitch / roll), translation et zoom à la souris |
| Transformations topologiques | Maillage replié en sphère ou en tore |
| Dégradés de couleurs | Interpolation RGB sur l'altitude de chaque arête |
| Presets de terrain | Earth, Volcanic, Arctic, Martian |
| Plans de clipping | Near / far / z-near / z-far réglables |
| HUD live | Panneau d'informations affichant l'état de la scène en temps réel |
| Bouton reset | Réinitialisation caméra d'un clic |
| Rendu par image | Buffer d'image unique + double mise à l'échelle |
| Action | Effet |
|---|---|
| Clic gauche + glisser | Rotation de la caméra |
| Clic droit + glisser | Translation de la caméra |
| Clic molette + glisser | Translation sur l'axe Z (projection non-isométrique) |
| Molette haut / bas | Zoom avant / arrière |
Clic sur reset |
Réinitialise la position de la caméra |
| Touche | Effet |
|---|---|
Échap |
Quitter |
I |
Basculer mode isométrique ⟷ libre |
P |
Basculer orthographique ⟷ perspective (mode libre) |
T |
Changer la transformation : none → torus → sphere (mode iso) |
C |
Changer le preset de couleurs |
↑ / ↓ |
Sélectionner le paramètre à modifier dans le HUD |
R |
Réinitialiser le paramètre sélectionné |
KP + / KP - |
Augmenter / diminuer le paramètre sélectionné |
0 → z_ratio 1 → near 2 → far
3 → z_near 4 → z_far 5 → mouse sensi
Une carte est un simple fichier .fdf : une grille de nombres où chaque valeur
représente l'altitude du point. Les couleurs optionnelles suivent la syntaxe
z,0xRRGGBB.
0 0 0 0 0
0 1 1 1 0
0 1 2 1 0
0 1 1 1 0
0 0 0 0 0
Avec couleurs :
0,0xFF0000 10,0x00FF00 0,0xFF0000
10,0x0000FF 20,0xFFFFFF 10,0x0000FF
0,0xFF0000 10,0x00FF00 0,0xFF0000
Le dépôt fournit un large éventail de cartes de test dans
maps/: montagnes, planisphères, portraits, fractales, etc.
sudo apt-get install gcc make libx11-dev libxext-dev zlib1g-devgit clone git@github.com:delmath/fdf.git
cd fdf
makeLe Makefile compile automatiquement libft et minilibx-linux, puis génère
le binaire fdf avec une barre de progression colorée.
make # compile le projet
make clean # supprime les .o
make fclean # supprime les .o, les libs et le binaire
make re # recompile entièrement./fdf maps/42.fdfQuelques cartes intéressantes :
./fdf maps/mars.fdf
./fdf maps/monalisa_colored.fdf
./fdf maps/hydrochoerus_hydrochaeris.fdf
./fdf maps/MGDS_WHOLE_WORLD_OCEAN1_L.fdffdf/
├── include/
│ └── fdf.h # Structures, defines et prototypes
├── src/
│ ├── main.c # Point d'entrée
│ ├── init/ # Initialisation scène, caméra, presets
│ ├── math/ # Matrices, projections, transformations
│ ├── mlx/ # Hooks MiniLibX & boucle d'événements
│ ├── render/ # Tracé des lignes, couleurs, HUD
│ └── utils/ # Parsing, math helpers, gestion souris
├── maps/ # Cartes .fdf d'exemple
├── libft/ # Bibliothèque C maison
├── minilibx-linux/ # MiniLibX
└── Makefile
Carte .fdf
│
▼
Parsing ──► t_map (grille de t_coord)
│
▼
Transformation ──► sphère / tore (optionnel)
│
▼
Matrice caméra ──► repère monde ──► repère caméra
│
▼
Projection ──► orthographique | perspective (+ clipping)
│
▼
Rasterisation ──► Bresenham + dégradé RGB
│
▼
Buffer image ──► MiniLibX
- Bresenham : tracé de lignes incrémental, sans division flottante.
- Z-order / clipping : rejet des arêtes hors écran et hors plans de coupe.
- Dégradé : interpolation linéaire des canaux RGB le long de chaque arête.
Chaque preset associe une couleur à cinq paliers d'altitude (très bas → très haut)
et interpole le dégradé le long de chaque arête. Appuie sur C pour les faire défiler.
Base (défaut)
|
Earth
|
Volcanic
|
Arctic
|
Martian
|
| Preset | Dégradé d'altitude |
|---|---|
| Earth | |
| Volcanic | |
| Arctic | |
| Martian |
madelvin — 42 Lyon · madelvin@student.42lyon.fr










