Cours 2

Les bases de notre jeu 3D

Le projet minimal

Notre project utilise plusieurs Frameworks, ou SDK ou Libs pour gérer les bases de notre jeu 3D. Pour l'affichage nous utiliserons OpenGL qui est une Lib graphique qui va se charger d'envoyer les opérations de dessins et d'affichage graphique à la carte graphique de l'ordinateur pour avoir des rendus 3D super rapides.
Nous utiliserons la lib GLUT pour simplifier la création de la Fenêtre du jeu ainsi que des opératons simples de rafraichissement de l'écran.

Consulter la fiche Wikipedia de OpenGL ici
Consulter la fiche Wikipedia de GLUT ici

Les fonctions clés

On retrouve l'affichage d'un logiciel 3D comme Blender ou 3DS Max. Le projet de base de notre jeu 3D affiche simplement une grille qui est une suite de lignes en 3D ainsi qu'un objet lumière lui aussi dessiné en fil de fer à l'écran.
Les fonctions clés sont assuré par une classe qui s'occupe de gérer l'objet lumière, caméra et la scene principale du jeu.

Le Rendu "RENDERER"


	// RENDERER
	Renderer->InitGL();
	Renderer->clearColor(0.45f,0.45f,0.45f,1);
	Renderer->setRendererState(RENDER_TEXTURE, false);
	Renderer->setRendererState(RENDER_GRID, true);
	Renderer->setRendererState(RENDER_NORMAL, false);
	Renderer->setRendererState(RENDER_LIGHTNING, true);
	Renderer->setRendererState(RENDER_MATERIAL, false);
	Renderer->ReSizeGLScene(SCREEN_X, SCREEN_Y);
									

Notre Renderer s'occupe du contexte graphique, la couleur du fond de l'écran sera un gris clair (RGB) de 0.0 à 1.0 ou 1 = 255 pour chaque composante RGB.
On souhaite afficher une GRID ainsi que de l'éclairage.

La caméra "CAMERA"


	// CAMERA
	camera = new Camera();
	camera->setCameraPos(1.0f, 4.0f, 10.0f);
	camera->setCameraRot(-20, 10, 0);	
									

La caméra sera notre oeil et se positionne sur la coordonnée X,Y,Z = 1.0, 4.0, 10.0
On applique une rotation X,Y,Y de -20 sur l'axe X et 10 sur l'axe Y.

La lumière "LIGHT"


	// LIGHT
	Light_t	light1;
	vec4_t la = { 0.0f, 0.0f, 0.0f, 1.0f };
	vec4_t ld = { 1.0f, 1.0f, 1.0f, 1.0f };
	vec4_t ls = {0.0f, 0.0f, 0.0f, 0};
	vec4_t lp = {-3.0f, 4.0f, 2.0f, 0};	
	VectorCopy4(la, light1.ambient);
	VectorCopy4(ld, light1.diffuse);
	VectorCopy4(ls, light1.specular);
	VectorCopy4(lp, light1.position);	
									

La lumière sera l'objet qui va éclairer notre scene 3D. Elle se positionne sur la coordonnée lp X,Y,Z = -3.0, 4.0, 2.0
On applique un effet la (Ambient) = 0,0,0,1 + ld (Diffuse) = 1,1,1,1 + ls (Specular) 0,0,0,0

La scène "SCENE"


	// SCENE
	scene = new Scene(Renderer);
	scene->addCamera(camera);
	scene->addLight(light1);
									

La scene est l'objet qui regroupe la caméra et la lumière.

La touche Echap du clavier permet de quitter le programme. Le contexte graphique et de la fenêtre d'application est traité dans ce project de base.
La camera se déplace suivant une simple rotation sur l'axe Y pour avoir un effet de caméra qui tourne son champs de vision sur la scène.
Un compteur du nombre d'images affichées par secondes (FPS) est présent en haut à gauche de l'écran du jeu.

moteur de jeu 3D - Les bases du jeu


Télécharger le projet jeu3D_bases.zip

Consulter le forum pour poser des questions

Retour au sommaire