400 likes | 472 Views
Présentation du projet NanoVoxel. Pierre Planeau Anatole 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.
E N D
Présentation du projet NanoVoxel Pierre Planeau Anatole 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. 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
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. Voxel Chunk Map
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 • Affichagedes faces • Ambient Occlusion Premier « vrai » rendu
Algorithmes Terrain D = y
Algorithmes Terrain D = y + cos(x)
Algorithmes Terrain D = y + cos( longueur( x, y, z ) )
Algorithmes Terrain D = 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 Sinon Pas de face à afficher Fin Si Fin Répéter pour Sens de parcours Affiche
La lumière Produit scalaire -1 1 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 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
IV. NanoVoxel Début Actuellement Prochainement
Début • Tout à commencé avec un voxel
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