#1 

05-08-2010 15:48:46

darktux72
Membres
Date d'inscription:
Messages: 5
IP: 86.71.190.73
Courriel

Bonjour,

J'ai un problème avec la transparence avec une texture, voici un screen dans Irrlicht :


Voici le screen dans blender, seul le noir doit être transparent dans Irrlicht normalement...


Voici la texture

Le carré en bas à droite est du gris transparent.

Je pense que c'est dans Irrlicht que j'ai zappé quelque chose, j'ai utilisé "setMaterialType(EMT_TRANSPARENT_ALPHA_CHANNEL);" pour mettre la transparence, il doit y avoir autre chose à faire.
Voici le code :

Code c++ :

#include <iostream>
#include <IRR/irrlicht.h>

using namespace std;

using namespace irr;

using namespace core;
using namespace scene;
using namespace video;
using namespace io;
using namespace gui;

int main(void)
{
    // init
    IrrlichtDevice* device = createDevice(EDT_OPENGL,
        dimension2d<u32>(800,600),32,false,false,false);
    IVideoDriver* driver = device->getVideoDriver ();
    ISceneManager *sceneManager = device->getSceneManager ();

    device->getCursorControl ()-> setVisible (false);    // curseur invisible

    // ajout du modele
    IMesh* modele =
        sceneManager->getMesh("maps/Test/objects/abribus.obj");
    IMeshSceneNode* Nmodele =
        sceneManager->addMeshSceneNode(modele);

    // le modèle ne recoit pas la lumiere
    Nmodele->setMaterialFlag(
        EMF_LIGHTING, false);
    // ajout de la transparence
    Nmodele->setMaterialType(EMT_TRANSPARENT_ALPHA_CHANNEL);

    // ajout du SkyDome
    ISceneNode* skydome=sceneManager->addSkyDomeSceneNode(driver->getTexture("data/skydome.jpg"),16,8,0.95f,2.0f);

    // ajout de la camera
    ICameraSceneNode *camera =               // creation de la camera
        sceneManager->addCameraSceneNodeFPS (0, 100.0f, 0.01f, 0, 0, 0, false);

    // boucle de rendu
    while (device->run())
    {
        driver->beginScene(true,true,
            SColor(0,141,182,205));
        sceneManager->drawAll ();
        driver->endScene ();
    }

    device->drop ();
    return 0;
}

Merci pour votre aide smile


Hors ligne


#2 

05-08-2010 19:32:46

darktux72
Membres
Date d'inscription:
Messages: 5
IP: 86.71.190.73
Courriel

Après de longues heures de recherche, j'ai finit par trouver, pour ceux que ça intéresse, il faut juste rajouter cette ligne :

SceneManager->getParameters()->setAttribute(scene::ALLOW_ZWRITE_ON_TRANSPARENT, true);

Doc : http://irrlicht.sourceforge.net/docu/namespaceirr_1_1scene.html#ab585d23bc2a3d02cd368d8bfd0b1414a


Hors ligne


Options Liens officiels Caractéristiques Statistiques Communauté
Préférences cookies
Corrections
irrlicht
irrklang
irredit
irrxml
Propulsé par Django
xhtml 1.0
css 2.1
884 membres
1440 sujets
11337 messages
Dernier membre inscrit: Saidov17
174 invités en ligne
membre en ligne: -
RSS Feed