Upload
anais-colin
View
110
Download
2
Embed Size (px)
Citation preview
Présentation du projet NanoVoxelPierre PlaneauAnatole Duprat
Sommaire• I. Introduction
▫ Le projet▫ Pourquoi ?
• II. Démonstration• III. Comment ?
▫ Les Voxels▫ Spécifications▫ Algorithmes▫ La lumière▫ Le ciel▫ L’eau
• IV. NanoVoxel▫ Début▫ Actuellement▫ Prochainement
• V. Questions
I. Introduction1. Le projet2. Pourquoi ?
Le projet•Jeu 3D basé sur les voxels
Le projet•Inspiré par Minecraft et Cube World
Minecraft
Cube World
Pourquoi ?
•Entrainement et plaisir personnel•Créer une alternative à Minecraft•Dépasser Minecraft et Cube World
II. Démonstration
III. Comment ?1. Les Voxels2. Spécifications3. Algorithmes4. La lumière5. Le ciel6. L’eau
Les Voxels
•Un voxel est un pixel dans l’espace•Les voxels sont simples à manipuler et
contiennent de l’information utile en une simple valeur
Un voxelPlusieurs voxels
Structure
Un Chunk contient des Voxels.
Une Map contient des Chunks.
Map
Chunk
Voxel
Spécifications
•Le C++ pour sa rapidité, sa portabilité, sa stabilité et sa large communauté
•Le contexte SFML pour sa simplicité et sa compatibilité native avec l’OpenGL
•L’OpenGL pour sa portabilité et sa simplicité
Algorithmes•Bruit de Perlin•Terrain•Affichage des faces•Ambient Occlusion
Premier « vrai » rendu
AlgorithmesLe bruit de Perlin
2 4
168
AlgorithmesLe bruit de Perlin
+ + +
=
AlgorithmesLe bruit de Perlin
AlgorithmesTerrain
D = y
AlgorithmesTerrain
D = y + cos(x)
AlgorithmesTerrain
D = y + cos( longueur( x, y, z ) )
AlgorithmesTerrain
D = bruitPerlin(x, y, z)
AlgorithmesTerrain
D = y + bruitPerlin(x, y, z)
AlgorithmesAffichage des faces
Répéter pour tous les voxels Si ( voxel actuel = non vide ) alors Si ( voxel suivant = vide ) alors Il faut afficher une face Sinon Pas de face à afficher Fin Si Sinon Pas de face à afficher Fin SiFin Répéter pour
Sens de parcours
Affiche
AlgorithmesAmbient Occlusion
AlgorithmesAmbient Occlusion
AlgorithmesAmbient Occlusion
AlgorithmesAmbient Occlusion
× =
La lumièreProduit scalaire
-11
0
0.5
La lumière
×
=
×
Le ciel
Ciel = couleur( 0.5, 0.7, 1.0 )
Le ciel
Ciel = mix( couleur( 0.5, 0.7, 1.0 ), couleur( 1.0, 1.0, 1.0 ), y²)
Le cielCiel = mix( couleur( 0.5, 0.7, 1.0 ), couleur( 1.0, 1.0, 1.0 ), y²)
Soleil = couleur( 1.0, 0.5, 0.1 ) / ( 1.0 + distance( point actuel, position soleil ) )10
Soleil + Ciel
y
x
L’eau
L’eau
L’eau
IV. NanoVoxel1. Début2. Actuellement3. Prochainement
Début
•Tout à commencé avec un voxel
Des bugs… épileptiques !
Actuellement
•Le jeu charge 1 404 928 voxels et est très fluide
•Le projet tient sur 6010 lignes de code•Cela représente environ 3 mois de travail
Prochainement
•Restructuration du code•Physique•Génération de villes•Différents types de paysages•Un univers (monstres, PNJ, quêtes, etc.)•Ombres dynamiques•Un mode multi-joueurs•etc
V. Questions
Merci de votre attention !