40
Présentation du projet NanoVoxel Pierre Planeau Anatole Duprat

Présentation du projet NanoVoxel Pierre Planeau Anatole Duprat

Embed Size (px)

Citation preview

Page 1: Présentation du projet NanoVoxel Pierre Planeau Anatole Duprat

Présentation du projet NanoVoxelPierre PlaneauAnatole Duprat

Page 2: 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

Page 3: Présentation du projet NanoVoxel Pierre Planeau Anatole Duprat

I. Introduction1. Le projet2. Pourquoi ?

Page 4: Présentation du projet NanoVoxel Pierre Planeau Anatole Duprat

Le projet•Jeu 3D basé sur les voxels

Page 5: Présentation du projet NanoVoxel Pierre Planeau Anatole Duprat

Le projet•Inspiré par Minecraft et Cube World

Minecraft

Cube World

Page 6: Présentation du projet NanoVoxel Pierre Planeau Anatole Duprat

Pourquoi ?

•Entrainement et plaisir personnel•Créer une alternative à Minecraft•Dépasser Minecraft et Cube World

Page 7: Présentation du projet NanoVoxel Pierre Planeau Anatole Duprat

II. Démonstration

Page 8: Présentation du projet NanoVoxel Pierre Planeau Anatole Duprat

III. Comment ?1. Les Voxels2. Spécifications3. Algorithmes4. La lumière5. Le ciel6. L’eau

Page 9: Présentation du projet NanoVoxel Pierre Planeau Anatole Duprat

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

Page 10: Présentation du projet NanoVoxel Pierre Planeau Anatole Duprat

Structure

Un Chunk contient des Voxels.

Une Map contient des Chunks.

Map

Chunk

Voxel

Page 11: Présentation du projet NanoVoxel Pierre Planeau Anatole Duprat

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é

Page 12: Présentation du projet NanoVoxel Pierre Planeau Anatole Duprat

Algorithmes•Bruit de Perlin•Terrain•Affichage des faces•Ambient Occlusion

Premier « vrai » rendu

Page 13: Présentation du projet NanoVoxel Pierre Planeau Anatole Duprat

AlgorithmesLe bruit de Perlin

2 4

168

Page 14: Présentation du projet NanoVoxel Pierre Planeau Anatole Duprat

AlgorithmesLe bruit de Perlin

+ + +

=

Page 15: Présentation du projet NanoVoxel Pierre Planeau Anatole Duprat

AlgorithmesLe bruit de Perlin

Page 16: Présentation du projet NanoVoxel Pierre Planeau Anatole Duprat

AlgorithmesTerrain

D = y

Page 17: Présentation du projet NanoVoxel Pierre Planeau Anatole Duprat

AlgorithmesTerrain

D = y + cos(x)

Page 18: Présentation du projet NanoVoxel Pierre Planeau Anatole Duprat

AlgorithmesTerrain

D = y + cos( longueur( x, y, z ) )

Page 19: Présentation du projet NanoVoxel Pierre Planeau Anatole Duprat

AlgorithmesTerrain

D = bruitPerlin(x, y, z)

Page 20: Présentation du projet NanoVoxel Pierre Planeau Anatole Duprat

AlgorithmesTerrain

D = y + bruitPerlin(x, y, z)

Page 21: Présentation du projet NanoVoxel Pierre Planeau Anatole Duprat

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

Page 22: Présentation du projet NanoVoxel Pierre Planeau Anatole Duprat

AlgorithmesAmbient Occlusion

Page 23: Présentation du projet NanoVoxel Pierre Planeau Anatole Duprat

AlgorithmesAmbient Occlusion

Page 24: Présentation du projet NanoVoxel Pierre Planeau Anatole Duprat

AlgorithmesAmbient Occlusion

Page 25: Présentation du projet NanoVoxel Pierre Planeau Anatole Duprat

AlgorithmesAmbient Occlusion

× =

Page 26: Présentation du projet NanoVoxel Pierre Planeau Anatole Duprat

La lumièreProduit scalaire

-11

0

0.5

Page 27: Présentation du projet NanoVoxel Pierre Planeau Anatole Duprat

La lumière

×

=

×

Page 28: Présentation du projet NanoVoxel Pierre Planeau Anatole Duprat

Le ciel

Ciel = couleur( 0.5, 0.7, 1.0 )

Page 29: Présentation du projet NanoVoxel Pierre Planeau Anatole Duprat

Le ciel

Ciel = mix( couleur( 0.5, 0.7, 1.0 ), couleur( 1.0, 1.0, 1.0 ), y²)

Page 30: Présentation du projet NanoVoxel Pierre Planeau Anatole Duprat

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

Page 31: Présentation du projet NanoVoxel Pierre Planeau Anatole Duprat

L’eau

Page 32: Présentation du projet NanoVoxel Pierre Planeau Anatole Duprat

L’eau

Page 33: Présentation du projet NanoVoxel Pierre Planeau Anatole Duprat

L’eau

Page 34: Présentation du projet NanoVoxel Pierre Planeau Anatole Duprat

IV. NanoVoxel1. Début2. Actuellement3. Prochainement

Page 35: Présentation du projet NanoVoxel Pierre Planeau Anatole Duprat

Début

•Tout à commencé avec un voxel

Page 36: Présentation du projet NanoVoxel Pierre Planeau Anatole Duprat

Des bugs… épileptiques !

Page 37: Présentation du projet NanoVoxel Pierre Planeau Anatole Duprat

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

Page 38: Présentation du projet NanoVoxel Pierre Planeau Anatole Duprat

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

Page 39: Présentation du projet NanoVoxel Pierre Planeau Anatole Duprat

V. Questions

Page 40: Présentation du projet NanoVoxel Pierre Planeau Anatole Duprat

Merci de votre attention !