Présentation du projet NanoVoxel Pierre Planeau Anatole Duprat

Preview:

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 !

Recommended