IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Irrlicht Discussion :

[Irrlicht] Utiliser un mesh avec plusieurs textures


Sujet :

Irrlicht

  1. #1
    Membre habitué Avatar de demonixis
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    80
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juin 2008
    Messages : 80
    Points : 150
    Points
    150
    Par défaut [Irrlicht] Utiliser un mesh avec plusieurs textures
    Bonjour à tous,

    Je me suis mis sur Irrlicht (et la programmation 3D) il y a peu, et j'avance pas trop mal (doc officiel + divers tutos sur le net). Je suis pourtant bloqué aujourd'hui d'ou mon message ici. Mon frère m'a fait un niveau en 3D au format 3ds tout texturé, ce niveau comporte 4 fichiers bitmap, et lorsque je charge mon niveau et les quatre fichiers avec irrlicht, uniquement un aparais sur le niveau. Ce qui est étonnant, c'est qu'avec l'éditeur Irredit, je peux importé ce niveau et je vois toutes les textures sans soucis... c'est donc une erreur de code, que voici :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    scene::IAnimatedMesh *level = smg->getMesh("lvl/niveauaitd_4t.3ds");
    scene::IMeshSceneNode *node = smg->addMeshSceneNode(level->getMesh(0));
    node->setMaterialFlag(video::EMF_LIGHTING, false);
    node->setMaterialTexture(0, driver->getTexture("lvl/cube1_e2.bmp"));
    node->setMaterialTexture(1, driver->getTexture("lvl/cube1_e9.bmp"));
    node->setMaterialTexture(2, driver->getTexture("lvl/cube71_a.bmp"));
    node->setMaterialTexture(3, driver->getTexture("lvl/cube74_a.bmp"));
    il y a juste une texture d'affichée, y'a t'il un flag spécial ou autre chose à rajouter pour pouvoir utiliser mes quatres images ? Je me suis aussi penché sur l'export vers le format .irr mais ce dernier est impossible à ouvrir.

    Une dernière info, la console qui s'ouvre quand je lance mon programme, m'indique bien que mes images ont été chargées, il doit je pense juste manqué LE truc (mais LE quel ?)

    Merci pour vos réponses.


    EDIT :

    J'ai trouvé où été mon erreur, voici le code qui fonctionne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    scene::IAnimatedMesh *level = smg->getMesh("lvl/niveauaitd_4t.3ds");
    scene::IMeshSceneNode *node = smg->addMeshSceneNode(level->getMesh(0));
    node->setMaterialFlag(video::EMF_LIGHTING, false);
    node->setMaterialTexture(3, driver->getTexture("lvl/cube1_e2.bmp"));
    node->setMaterialTexture(3, driver->getTexture("lvl/cube1_e9.bmp"));
    node->setMaterialTexture(3, driver->getTexture("lvl/cube71_a.bmp"));
    node->setMaterialTexture(3, driver->getTexture("lvl/cube74_a.bmp"));

  2. #2
    Candidat au Club
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 3
    Points : 3
    Points
    3
    Par défaut Multi Textures Irrlicht
    Bonjour,

    J'essaye depuis maintenant 2jours de mettre plusieurs textures sur un model créé à partir de 3ds max (En exportant un .3ds) mais je ne vois pas comment appliquer plusieurs textures à partir de Irrlicht.

    Pouvez-vous m'expliquer votre démarche ?

    Avez-vous fait quelque chose dans 3ds max avant de pouvoir appliqué des textures (Comme mettre des ID sur certains objet) ?

    Je suis dans le noir :-(

    Merci.

  3. #3
    Membre habitué Avatar de demonixis
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    80
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juin 2008
    Messages : 80
    Points : 150
    Points
    150
    Par défaut
    Je n'ai pas 3DSmax mais j'ai exporté mon mesh depuis blender. L'exemple est assez parlant, j'ai 4 textures et je les appliquent sur le mesh via la méthode qui va bien. En fait les textures commencent de 0 à n donc vue que j'en ai 4 (0, 1, 2, 3) je passe 3 en paramètre. Je ne sais pas si c'est la bonne méthode, en tout cas, cette méthode à fonctionné pour moi.

    Peut être qu'en postant un peu de code on pourrais voir si il y a quelque chose qui cloche ?

  4. #4
    Candidat au Club
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 3
    Points : 3
    Points
    3
    Par défaut Re
    Mon probleme vien surtout de 3ds max je pense.

    C'est bien a partir de blender que tu as dit "tel objet aura une texture, tel objet une autre" ?

    Si oui alors c'est la mon probleme.

    Voila le bout de mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    IAnimatedMesh* plaine = sceneManager->getMesh("test.3ds");
    IMeshSceneNode *q3node = sceneManager->addMeshSceneNode(plaine->getMesh(0)) ;
    sceneManager->getMeshManipulator()->makePlanarTextureMapping(plaine->getMesh(0), 0.005f);
    q3node->setMaterialTexture(0, driver->getTexture("herbe.bmp")) ;
    Dans cette plaine, il y a quelques arbres mais qui sont en texture d'herbe ...
    Et, en mettan :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    q3node->setMaterialTexture(0, driver->getTexture("arbre.bmp")) ;
    arbre.bmp serai simplement du marron (pour tester)
    je ne voi pas pourquoi Irrlicht ne metterai que les arbres en marron.

    c'est pourquoi, je pense que les différentiations d "objet" doit se faire dans le .3ds.
    Mais comment ...

  5. #5
    Candidat au Club
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 3
    Points : 3
    Points
    3
    Par défaut Résolu
    J'ai finalement trouvé, c'est bien dans 3DS MAX qu'il fallait appliqué les textures (pas besoin de les chargées dans Irrlicht après, si les images sont dans le bon dossier, elle s'appliquent automatiquement) .

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 6
    Dernier message: 19/03/2014, 15h49
  2. Utilisation de pthread_create avec plusieurs arguments
    Par Red Sno dans le forum Bibliothèques, systèmes et outils
    Réponses: 5
    Dernier message: 11/12/2012, 18h01
  3. Réponses: 4
    Dernier message: 30/12/2010, 16h08
  4. Utiliser OLE Objet avec plusieurs images?
    Par solaar dans le forum VBA Access
    Réponses: 2
    Dernier message: 11/11/2008, 00h43
  5. Réponses: 5
    Dernier message: 14/10/2008, 11h54

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo