Introduction au moteur 3D Irrlicht – partie 1

I073

 

Intro :

Irrlicht 3D est un moteur 3D gratuit et open-source écrit en C++.
Son utilisation est facilité par le petit nombre de méthodes (fonctions) qu’il possède par rapport à Ogre3D qui quant à lui comporte beaucoup plus de fonctions. Irrlicht 3D est donc plutôt simple à utiliser.

Il gère aussi bien les APIs DirectX que OpenGL. Il peut être aussi utilisé sur Linux, Windows et OS X.

Version d’Irrlicht 3D utilisée : 1.8.1

Prérequis :

– Savoir lire les rudiments d’un programme C++ (pointeur, classe, etc…)
– Savoir configurer Visual Studio C++ Express (voir cet article)

Explications :

Il vous faut comprendre comment configurer les répertoires de dépendance dans Visual C++.

Télécharger Irrlicht :

http://irrlicht.sourceforge.net/downloads.html

Ce qu’il y a dans le repertoire extrait :

bin : les bibliothèques dynamiques et les binaires des exemples du SDK

include : les principaux headers du code source

lib : les bibliothèques statiques

Ce qu’il faut faire :

Dans le répertoire bin extrait : il vous suffit de choisir le dossier correspondant à votre configuration et de copier le fichier .dll quelque part.
Vous devrez le mettre dans le même dossier que vos fichiers exécutables (.exe) pour que ceux-ci fonctionnent.

Il faut configurer votre IDE (en l’occurence Visual Studio C++)
en paramétrant les dossiers include / et lib (suivre ce tutoriel pour le configurer [config_vc++]

Mettre dans votre fichier .cpp principal :

 


 

Exemple complet :

 // Définition de la bibliothèque 
Irrlicht.lib#pragma comment(lib, "Irrlicht.lib")

 // Déclaration du fichier d'en-tête d'Irrlicht
#include <irrlicht.h>

// Déclaration du namespace (espace de nom) d'Irrlicht
using namespace irr; 

int main()
{
    // Créée le device qui va gérer le moteur 3D
    IrrlichtDevice* device = createDevice(video::EDT_DIRECT3D8,
        core::dimension2d<u32>(640,480));

    // Système qui permet d'afficher du rendu à l'écran
    video::IVideoDriver* driver = device->getVideoDriver();
    scene::ISceneManager* scenemgr = device->getSceneManager();

    // On spécifie le titre de la fenêtre
    device->setWindowCaption(L"Hello World!");

    // On charge un fichier modèle .md2
    scene::ISceneNode* node = scenemgr->addAnimatedMeshSceneNode(
        scenemgr->getMesh("quake2model.md2"));

    // On ajoute à ce modèle, une texture et on désactive les lumières
    if (node)
    {
        node->setMaterialTexture(0, driver->getTexture("texture.bmp"));
        node->setMaterialFlag(video::EMF_LIGHTING, false);
    }

    // On ajoute une caméra de type FPS (Vue à la première personne)
    scenemgr->addCameraSceneNodeFPS();

    // On affiche le rendu !
    while (device->run() && driver)
    {
        driver->beginScene(true, true, video::SColor(255,0,0,255));
        scenemgr->drawAll();
        driver->endScene();
    }

    // On efface le device
    device->drop();
    return 0;
}

 


Fonction createDevice (…) :


irr::IrrlichtDevice* device =
             irr::createDevice(irr::video::EDT_OPENGL,
             irr::core::dimension2d<irr::u32>(800,600),
             32, false, true, false, 0);

 

Explication du bout de code :

Les arguments passés en paramètre sont dans l’ordre :

device  : c’est un pointeur sur l’objet returné par irr:createDevice(…)

deviceType : désigne l’API graphique avec laquelle va s’interfacer Irrlicht. Nous utiliserons OpenGL tout au long du tutoriel, mais on peut aussi choisir Direct3D par exemple en mettant la valeur EDT_DIRECT3D9.

windowSize : la taille de la fenêtre. Tout est dit ! Avec le code indiqué plus haut, on crée une
fenêtre de 800 par 600 pixels.

bits : détermine le nombre de bits par pixels.

fullscreen : un booléen qui indique si on veut faire du plein écran ou pas. Pour la valeur true l’application
sera en plein écran, et pour false la fenêtre sera de la taille définie plus haut.

stencilbuffer : un autre booléen qui indique lui si on active le stencil buffer ou pas. Il est actif pour true.

vsync : toujours un booléen. Celui-ci sert à activer la synchronisation verticale. Pas de mystère, elle est active pour true.

receiver : permet d’associer un capteur d’événements au device (0 signifie qu’on n’associe rien). Nous verrons de quoi il s’agit dans un prochain chapitre.

Résumé :

Dans cette première partie nous avons appris comment se servir de Irrlicht 3D.

Références :

– http://irrlicht.sourceforge.net/features/
– http://openclassrooms.com/courses/3d-temps-reel-avec-irrlicht
– http://irrlicht.sourceforge.net/docu/example001.html

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *