28-08-2009 17:25:11
- Kit-fisto24
- Membres
- Date d'inscription:
- Messages: 60
- IP: 81.251.140.53
- Courriel
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
28-08-2009 18:06:32
- Magun
- Administrateurs

- Date d'inscription:
- Messages: 910
- IP: 188.93.45.30
- Courriel Site web
si mais souvenir sont bon c'est :
Code c++ :
ITexture *tmp = driver->getTexture("plop.bidul");
driver->makeColorKeyTexture(tmp,SColor(255,255,255,255));// et tu change 255,255,255,255 par la couleur que tu veut rendre invisible
// et tu ajoute ton billboard avec cette texture
Hors ligne
29-08-2009 15:37:55
- Kit-fisto24
- Membres
- Date d'inscription:
- Messages: 60
- IP: 81.251.140.53
- Courriel
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
30-08-2009 09:08:12
- tmyke
- Administrateurs

- Date d'inscription:
- Messages: 1025
- IP: 81.51.29.59
- Courriel
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.
Force et sagesse...
Hors ligne
30-08-2009 10:36:40
- Kit-fisto24
- Membres
- Date d'inscription:
- Messages: 60
- IP: 81.251.140.53
- Courriel
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
30-08-2009 10:53:20
- tmyke
- Administrateurs

- Date d'inscription:
- Messages: 1025
- IP: 81.51.29.59
- Courriel
étrange, 2D ou 3D le principe reste le même, donc je ne pense pas que cela vienne de la.
Force et sagesse...
Hors ligne
30-08-2009 12:00:54
- Magun
- Administrateurs

- Date d'inscription:
- Messages: 910
- IP: 188.93.45.30
- Courriel Site web
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)
Hors ligne
30-08-2009 14:21:18
- Kit-fisto24
- Membres
- Date d'inscription:
- Messages: 60
- IP: 81.251.140.53
- Courriel
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.
Hors ligne
30-08-2009 14:33:02
- tmyke
- Administrateurs

- Date d'inscription:
- Messages: 1025
- IP: 81.51.29.59
- Courriel
Vite fait comme cela, je viens de percuter, il ne manque pas un truc dans le genre setMaterialType(video::EMT_TRANSPARENT_ALPHA_CHANNEL_REF) dans ton code ?
Force et sagesse...
Hors ligne
30-08-2009 15:40:55
- Kit-fisto24
- Membres
- Date d'inscription:
- Messages: 60
- IP: 81.251.140.53
- Courriel
Je l'ai rajouter mais ça n'a rien changé.
Hors ligne
11-09-2009 13:36:35
- TUpac
- Membres

- Date d'inscription:
- Messages: 387
- IP: 80.13.52.19
- Courriel
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 ...
"Si vous ne partagez pas votre stabilité avec les pauvres, les pauvres partageront leur instabilité avec vous."
Hors ligne
12-09-2009 16:13:53
- johnplayer
- Membres

- Date d'inscription:
- Messages: 431
- IP: 86.207.127.189
- Courriel
sinon c'est peut etre ça : setMaterialType(video::EMT_TRANSPARENT_ADD_COLOR) en tout cas c'est ce qui est utilisé pour les billboards.
core i7 4970K @ 4GHz - 32GB ddr3 19200(2400MHz) - ssd samsung 840 evo 250GB - GTX1080Ti (4K) - Cooler master storm stryker blanc.
"L'alcool, c'est comme Activia, c'est actif à l'intérieur et ça se voit à l'extérieur."
Hors ligne
16-09-2009 13:38:47
- Kit-fisto24
- Membres
- Date d'inscription:
- Messages: 60
- IP: 81.251.1.169
- Courriel
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



