Bonjours,
Je cherche a rendre transparent (invisible) une certaine couleur d'une image ( scene::IBillboardSceneNode) qui se nomme viseur. Le problème c'est que je ne trouve pas de fonction qui sert a la rendre transparent (en tout cas aucune pour une image de type scene::IBillboardSceneNode). En existe-t-il une?
Hors ligne
si mais souvenir sont bon c'est :
Hors ligne
Si je met ceci:
video::ITexture *tmp = driver->getTexture("viseur.bmp");
driver->makeColorKeyTexture(tmp,video::SColor(0,255,255,255));// et tu change 255,255,255,255 par la couleur que tu veut rendre invisible
scene::IBillboardSceneNode* viseur = 0;
viseur = smgr->addBillboardSceneNode(0, core::dimension2d<f32>(10,10));
viseur->setMaterialFlag(video::EMF_LIGHTING, false);
viseur->setMaterialFlag(video::EMF_ZBUFFER, false);
viseur->setMaterialTexture(0, tmp);
Le blanc de l'image n'est pas transparent. :'(
Hors ligne
As-tu regardé l'exemple du package '06.2DGraphics', qui utilise ce genre de technique, la couleur de fond est rose, et sert de masque.
Hors ligne
Même avec la méthode du package '06.2DGraphics' le blanc de mon image n'est pas transparent. Cela vien peut être du fête que j'utilise l'image dans de la 3D, non? Car l'image (dont je veux rendre une de ses couleurs transparent) est un viseur, on peut donc le déplacer dans la 3D.
Hors ligne
étrange, 2D ou 3D le principe reste le même, donc je ne pense pas que cela vienne de la.
Hors ligne
regarde cela déjà -> video::SColor(0,255,255,255) en gros tu veut suprimmer la couleur blanche avec l'apha a 100% donc du transparent !
essaye déjà avec 255,255,255,255, après il se peut que se ne soient pas cette fonction, je ne l'ai jamais tester
edit : oui la couleur violet/rose est souvent utiliser pour la transparence car très rare sur les photos/vidéos/ou autre média :} (0,255,0,255)
Dernière modification par Magun (30-08-2009 14:28:09)
Hors ligne
J'ai essayer avec n'importe plusieurs alpha et ça ne change rien. Voici tout ce qui concerne cette image dans mon code :
video::ITexture *tmp = driver->getTexture("viseur.bmp");
driver->makeColorKeyTexture(tmp, video::SColor(0,255,0,255));
scene::IBillboardSceneNode* viseur = 0;
viseur = smgr->addBillboardSceneNode(0, core::dimension2d<f32>(10,10));
viseur->setMaterialFlag(video::EMF_LIGHTING, false);
viseur->setMaterialFlag(video::EMF_ZBUFFER, false);
viseur->setMaterialTexture(0, tmp);
camera->addChild(viseur);
Il y a peut être quelque chose qui empêche la transparence là-dedans.
Dernière modification par Kit-fisto24 (30-08-2009 16:21:36)
Hors ligne
Je l'ai rajouter mais ça n'a rien changé.
Hors ligne
un truc tout bête, mais ça vaut le coup de demander : ton blanc est-il vraiement blanc ? t'a vérifié avec ton logiciel d'image favoris ? (gimp :p)
toutes les valeurs RGB doivent être à 255 ...
Dernière modification par TUpac (11-09-2009 15:37:08)
Hors ligne
sinon c'est peut etre ça : setMaterialType(video::EMT_TRANSPARENT_ADD_COLOR) en tout cas c'est ce qui est utilisé pour les billboards.
Hors ligne
J'ai trouvé comment faire depuis pas mal de temps mais j'ai eu des problèmes de connexion, je n'ai donc pas pu vous prévenir. Il fallait mettre viseur->setMaterialType(video::EMT_TRANSPARENT_ALPHA_CHANNEL); et mettre de la transparence directement sur l'image avec un logiciel de dessin.
Hors ligne
Options | Liens officiels | Caractéristiques | Statistiques | Communauté |
---|---|---|---|---|
Corrections |
|
xhtml 1.0 css 2.1 Propulsé par FluxBB Traduit par FluxBB.fr |
882 membres 1429 sujets 11119 messages |
Dernier membre inscrit: LiseBuisson96 10 invités en ligne Aucun membre connecté RSS Feed |