Présentation du projet NanoVoxel Pierre Planeau Anatole Duprat.

40
Présentation du projet NanoVoxel Pierre Planeau Anatole Duprat

Transcript of Présentation du projet NanoVoxel Pierre Planeau Anatole Duprat.

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 !