Présentation du projet NanoVoxel Pierre Planeau Anatole Duprat
Sommaire I. Introduction II. Démonstration III. Comment ? 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. Introduction Le projet 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 ? Les Voxels Spécifications Algorithmes La lumière Le ciel 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 voxel Plusieurs voxels
Structure Un Chunk contient des Voxels. Une Map contient des Chunks.
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
Algorithmes Le bruit de Perlin
Algorithmes Le bruit de Perlin
Algorithmes Le bruit de Perlin
Algorithmes Terrain D = y
Algorithmes Terrain D = y + cos(x)
D = y + cos( longueur( x, y, z ) ) Algorithmes Terrain D = y + cos( longueur( x, y, z ) )
Algorithmes Terrain D = bruitPerlin(x, y, z)
D = y + bruitPerlin(x, y, z) Algorithmes Terrain D = y + bruitPerlin(x, y, z)
Algorithmes Affichage 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 Fin Répéter pour Sens de parcours Affiche
Algorithmes Ambient Occlusion
Algorithmes Ambient Occlusion
Algorithmes Ambient Occlusion
Algorithmes Ambient Occlusion × =
La lumière Produit scalaire -1 1 0.5
La lumière × = ×
Le ciel Ciel = couleur( 0.5, 0.7, 1.0 )
Ciel = mix( couleur( 0.5, 0.7, 1.0 ), couleur( 1.0, 1.0, 1.0 ), y²) Le ciel Ciel = mix( couleur( 0.5, 0.7, 1.0 ), couleur( 1.0, 1.0, 1.0 ), y²)
Ciel = mix( couleur( 0.5, 0.7, 1.0 ), couleur( 1.0, 1.0, 1.0 ), y²) Le ciel Ciel = 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. NanoVoxel Début Actuellement 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 !