Aller au menu - Aller au contenu

Icône Créer ses modèles avec Blender

Avatar
Mise à jour : 23/03/2011
1 621 visites depuis 7 jours, dont 60 sur ce chapitre classé 80/786
Cette annexe à pour but de vous expliquer comment créer et texturer vous-même vos modèles 3D pour les importer ensuite dans des applications utilisant Irrlicht.

Pour ce faire, nous allons utiliser le logiciel Blender. Il est gratuit, libre, portable, léger et efficace. (Que demande le peuple ?)

Voici un exemple de ce qu'il sera possible d'obtenir avec cette méthode :

Image utilisateurImage utilisateurImage utilisateurImage utilisateurImage utilisateur

J'ai jamais dit que ça serait beau. ^^
Je vous rassure, il est possible de faire bien mieux. C'est juste que j'ai un peu de mal avec l'UV-Mapping...
Sommaire du chapitre :
Icône du chapitre
Chapitre précédent Sommaire

Modelisation

La première étape est donc de modéliser votre... modèle !

Si vous ne vous êtes jamais servi de Blender, je vous conseil ce très bon tuto d'aerodark : Débutez dans la 3D avec Blender.

Image utilisateurImage utilisateur

Je vous fais confiance pour réaliser des choses intéressantes, en ce qui me concerne j'ai fait une place :


Si vous ne vous sentez pas très à l'aise avec le logiciel ou que vous n'avez pas envie de vous prendre la tête, commencez par quelque chose de (très) simple.
Un simple cube suffit à comprendre le principe, c'est le plus important.

Si vous êtes vraiment mauvais en modélisation mais que vous voulez tout de même voir comment texturer un modèle 3D sous Blender, vous pouvez télécharger le fichier .blend de ma... superbe place (en même temps c'est un tutoriel de programmation hein, pas d'infographie ;) ).

Un conseil : essayez de modéliser "à la main" le plus possible. A savoir, créer vous même les points et les faces au lieu de faire des "loop cut" par exemple.
Il faut bien garder à l'esprit que plus le modèle est complexe, et plus il sera complexe de le texturer. Le low poly est à préférer. ;)

Texturing

L'étape suivante est de mettre en place une UV-Map, si vous ne savez pas comment faire, jetez un oeil à ce tuto rédigé par Filzonfire : UV-Mapping avec Blender.
Ou à ce tutoriel vidéo d'aerodark : UVmapping.

Le but de la manoeuvre étant de créer une texture unique pour tout le modèle.

Si vous avez plusieurs faces qui ont la même texture, plutôt que de les superposer à la main sur l'UV-Map, sélectionnez-les sur votre modèle et cliquez sur Face->Copy UVs & Textures

En ce qui concerne ma place, j'obtiens la texture suivante : Image utilisateur
(Cliquez pour agrandir l'image, elle est aux 3/4 blanche donc peu visible...)


Et c'est là qu'on voit tout l'intérêt du logiciel de modélisation. Blender va associer automatiquement une coordonnée de texture à chaque sommet, de sorte que la carte UV corresponde parfaitement au modèle.


Après un coup de logiciel de retouche d'image, on obtient la texture finale : Image utilisateur

Vous noterez que je n'ai pas eu le courage d'aller jusqu'au bout (si vous saviez le temps que ça m'a pris Image utilisateur).

Import

Une fois qu'on a notre fichier contenant la texture, il ne nous manque plus que le fichier contenant le modèle 3D proprement dit.
Pour l'obtenir nous allons utiliser la fonction exporter de blender.

Si vous cliquez sur File->Export->... vous pouvez voir tous les formats de fichier possibles pour l'export.
J'ai une préférence pour le format OBJ dans la mesure où il est simple à comprendre et suffit amplement à nos besoins actuels.

La démarche est donc la suivante : File->Export->Wavefront (.obj)...->(choisir un emplacement)->Export Wavefront OBJ->(décocher Materials)->OK.
Si tout se passe bien vous récupérez un fichier .obj contenant le modèle.


Reste à charger tout ça dans une scène et à mélanger bien fort pour obtenir un beau rendu :

Code : C++
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
#include <IRR/irrlicht.h>
 
int main(void)
{
    //Device, driver et graphe de scene.
    irr::IrrlichtDevice* device = irr::createDevice(irr::video::EDT_OPENGL,
        irr::core::dimension2d<irr::u32>(800,800),32,false,false,false);
    irr::video::IVideoDriver* driver = device->getVideoDriver ();
    irr::scene::ISceneManager *sceneManager = device->getSceneManager ();
 
    //On rend invisible le curseur.
    device->getCursorControl ()-> setVisible (false);
 
    //La camera
    irr::SKeyMap keyMap[5];
    keyMap[0].Action = irr::EKA_MOVE_FORWARD;
    keyMap[0].KeyCode = irr::KEY_KEY_Z;
    keyMap[1].Action = irr::EKA_MOVE_BACKWARD;
    keyMap[1].KeyCode = irr::KEY_KEY_S;
    keyMap[2].Action = irr::EKA_STRAFE_LEFT;
    keyMap[2].KeyCode = irr::KEY_KEY_Q;
    keyMap[3].Action = irr::EKA_STRAFE_RIGHT;
    keyMap[3].KeyCode = irr::KEY_KEY_D;
    keyMap[4].Action = irr::EKA_JUMP_UP;
    keyMap[4].KeyCode = irr::KEY_SPACE;
    irr::scene::ICameraSceneNode *camera;
    camera = sceneManager->addCameraSceneNodeFPS (0,100.0f,20.0f, -1, keyMap, 5, false, 0.4);
 
    //On charge le mesh
    irr::scene::IAnimatedMesh *mesh = sceneManager->getMesh("nom_du_fichier.obj");
    //On l'associe a un noeud de la scene
    irr::scene::IAnimatedMeshSceneNode *meshNode =
     sceneManager->addAnimatedMeshSceneNode(mesh);
    //On specifie sa texture
    meshNode->setMaterialTexture(0, driver->getTexture("texture_du_modele.png"));
    //On rend le mesh insensible a la lumiere
    meshNode->setMaterialFlag(irr::video::EMF_LIGHTING, false);
 
    //La boucle de rendu
    while (device->run())
    {
        driver->beginScene(true, true, irr::video::SColor(0,200,200,200));
        sceneManager->drawAll ();
        driver->endScene ();
    }
 
    device->drop();
    return 0;
}


Et ça rend plutôt pas mal du moment qu'on se goure pas dans la texture. Personnellement j'ai quand même quelques ratés... ^^

Image utilisateurImage utilisateurImage utilisateurImage utilisateur


Au cas où vous auriez des problèmes pour charger votre modèle sous Irrlicht, il y a plusieurs possibilités :
  • Soit le format de votre modèle n'est tout simplement pas pris en charge. (Voyez la liste des formats supportés par Irrlicht).
  • Soit votre fichier est "corrompu". Par exemple pour le modèle de ma place, je ne sais pas pourquoi mais Blender ajoute à la fin du fichier des faces à 2 sommets... Chose qui n'est bien sur pas supportée par Irrlicht et provoque un beau plantage.
    Vous pouvez supprimer manuellement ce(s) défaut(s) ou encore tenter d'exporter sous un autre format.



Si vous n'avez pas envie de faire tout ce qui a été dit depuis le début du chapitre ou si vous êtes juste curieux de voir le résultat, vous pouvez



J'ai ajouté quelques fonctionnalités au programme pour le rendre plus intéressant : détection des collisions et possibilité de modifier dynamiquement les propriétés du material de la place.

De cette manière vous pourrez par exemple constater les différences de rendu selon les types de filtrage. :)
Bon, je vous laisse refaire la map de GTA SA, moi je vais écrire le prochain chapitre. ^^

Au passage, si vous connaissez des astuces sur Blender qui permettraient de réduire le temps de mapping ou quoi que ce soit d'intéressant, n'hésitez pas à le mettre dans les commentaires du chapitre. :)
Chapitre précédent Sommaire

Partager

10 commentaires pour "Créer ses modèles avec Blender"
Note moyenne : 3.60 / 4 (122 votes)
Pseudo Commentaire
Hors ligne Jagang # Posté le 20/04/2010 à 19:48:14
Oui mais non
Avatar

Avis : Bon

Ville : Les echelles
Pays : France métropolitaine

Il y a aussi le format de DirectX, le .x
C'est celui que je trouve le moins ch... problématique.
En effet, il permet de gérer plusieurs mesh dans le même fichier, il supporte aussi les animations ainsi que l'UV mapping et charge même lui tout seul les textures appropriées. C'est-à-dire que :
Code : C++
1
2
3
4
irr::scene::IAnimatedMesh *mesh =                        // ajout
	sceneManager->getMesh("essaiMesh.x");
irr::scene::IAnimatedMeshSceneNode *Nmesh =                      // creation du node
	sceneManager->addAnimatedMeshSceneNode(mesh);

suffit à charger le mesh et les textures qui vont avec.
Le seul souci c'est qu'il ne permet pas d'utiliser les shapes keys pour l'animation en mode Edit

Cordialement
Jagang

"C'est parce que la vitesse de la lumière est plus rapide que celle du son que certains peuvent paraîtrent brillants jusqu'à ce qu'ils ouvrent la bouche." Coluche
Image utilisateur

 
Hors ligne tome_x # Posté le 14/08/2010 à 10:40:16
Dieu c'est moi :)
Avatar

Avis : Très bon

Ville : La ciotat
Pays : France métropolitaine

Ben pour passer moins de temps pour modéliser sa map sur blender, on peut utiliser hammer, on peut exporter sa map en .dxf pour que blender puisse l'ouvrir et l'utiliser pour faire des modèles complexes.

#LGDF: Je vaincra !
On connaît tout quelqu’un de spécial dans notre vie, et bien je suis ce quelqu'un de spécial !
 
Hors ligne thibaud.sertier # Posté le 02/11/2010 à 14:16:50

Citation
si vous connaissez des astuces sur Blender qui permettraient de réduire le temps de mapping ou quoi que ce soit d'intéressant, n'hésitez pas...


Ce seraient plutôt des astuces sur le logiciel de retouche d'image... En vrac :

- placer l'image contenant le dépliage sur un calque, tout en haut de la pile, en mode "obscurcir". Ça permet de peindre sur les calques inférieurs en gardant le modèle sous les yeux, affiché en surimpression. Ne pas oublier de masquer ce calque lors de l'exportation de l'image.

- pas besoin de s'embêter à bien coller au dépliage : tout ce qui est en dehors des faces ne sera simplement pas affiché. Donc on peut déborder sans problème.

- se faire une banque d'images qu'on utilisera comme textures. Privilégier les textures "seamless", qu'on peut utiliser pour peindre directement avec l'outil "tampon de duplication" (ou son équivalent dans votre soft).

Et une astuce qui ne permet pas d'aller plus vite, mais d'obtenir un résultat bien plus joli : utiliser le "baking" de Blender. Ça permet de précalculer certaines choses, en particulier l'Occlusion Ambiante (AO) : ça assombrit les "creux", et les "coins", pour un résultat plus réaliste.

Et un petit timelapse pour ceux que ça intéresse ;-)
Hors ligne Jagang # Posté le 01/03/2011 à 11:28:12
Oui mais non
Avatar

Avis : Bon

Ville : Les echelles
Pays : France métropolitaine

Autrement, il y a un exporteur spéciale pour convertir une scène de Blender que Irrlicht peut lire :
IrrBlend
Hébergé sur Google Code.
Je l'utilise et il fonctionne très bien.
Mais attention, ne gère pas les mesh animés.

Cordialement
Jagang

"C'est parce que la vitesse de la lumière est plus rapide que celle du son que certains peuvent paraîtrent brillants jusqu'à ce qu'ils ouvrent la bouche." Coluche
Image utilisateur

 
Hors ligne GameDesigner # Posté le 29/10/2011 à 20:10:47
Avatar

Quelqu'un sait si on peut faire une animation squelette avec blender?

Voir tous les commentaires