#0 

28-08-2009 19:25:11

Kit-fisto24
Membre
Date d'inscription: 03-08-2009
Messages: 60

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


#1 

28-08-2009 20:06:32

Magun
SleekThink Producer
Lieu: Punakha
Date d'inscription: 18-11-2007
Messages: 910
Corrections: 2
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


#2 

29-08-2009 17:37:55

Kit-fisto24
Membre
Date d'inscription: 03-08-2009
Messages: 60

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


#3 

30-08-2009 11:08:12

tmyke
Administrateur
Date d'inscription: 24-03-2008
Messages: 1025

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


#4 

30-08-2009 12:36:40

Kit-fisto24
Membre
Date d'inscription: 03-08-2009
Messages: 60

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


#5 

30-08-2009 12:53:20

tmyke
Administrateur
Date d'inscription: 24-03-2008
Messages: 1025

é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


#6 

30-08-2009 14:00:54

Magun
SleekThink Producer
Lieu: Punakha
Date d'inscription: 18-11-2007
Messages: 910
Corrections: 2
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 wink

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


#7 

30-08-2009 16:21:18

Kit-fisto24
Membre
Date d'inscription: 03-08-2009
Messages: 60

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


#8 

30-08-2009 16:33:02

tmyke
Administrateur
Date d'inscription: 24-03-2008
Messages: 1025

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


#9 

30-08-2009 17:40:55

Kit-fisto24
Membre
Date d'inscription: 03-08-2009
Messages: 60

Je l'ai rajouter mais ça n'a rien changé.

Hors ligne


#10 

11-09-2009 15:36:35

TUpac
Habitué
Date d'inscription: 08-09-2009
Messages: 387
Corrections: 1

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)


"Si vous ne partagez pas votre stabilité avec les pauvres, les pauvres partageront leur instabilité avec vous."

Hors ligne


#11 

12-09-2009 18:13:53

johnplayer
Habitué
Date d'inscription: 30-09-2007
Messages: 431

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


#12 

16-09-2009 15:38:47

Kit-fisto24
Membre
Date d'inscription: 03-08-2009
Messages: 60

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
irrlicht
irrklang
irredit
irrxml
xhtml 1.0
css 2.1
Propulsé par FluxBB
Traduit par FluxBB.fr
883 membres
1429 sujets
11121 messages
Dernier membre inscrit: Saidov17
45 invités en ligne
Aucun membre connecté
RSS Feed