Présentation du projet NanoVoxel
Post on 26-Feb-2016
35 Views
Preview:
DESCRIPTION
Transcript
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
-110
0.5
La lumière
×
=×
Le cielCiel = couleur( 0.5, 0.7, 1.0 )
Le cielCiel = 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 !
top related