#0 

05-08-2010 17:48:46

darktux72
Petit nouveau
Date d'inscription: 02-08-2010
Messages: 5

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


#1 

05-08-2010 21:32:46

darktux72
Petit nouveau
Date d'inscription: 02-08-2010
Messages: 5

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/na … bfd0b1414a

Hors ligne


Options Liens officiels Caractéristiques Statistiques Communauté
Corrections
irrlicht
irrklang
irredit
irrxml
xhtml 1.0
css 2.1
Propulsé par FluxBB
Traduit par FluxBB.fr
Analysé par
880 membres
1424 sujets
11113 messages
Dernier membre inscrit: mandrifidy
24 invités en ligne
Aucun membre connecté
RSS Feed