#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 aidesmile


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


OptionsLiens officielsCaractéristiquesStatistiquesCommunauté
Préférences cookies
Corrections
irrlicht
irrklang
irredit
irrxml
Propulsé par Django
xhtml 1.0
css 2.1
884 membres
1441 sujets
11339 messages
Dernier membre inscrit: Saidov17
80 invités en ligne
membre en ligne: -
RSS Feed