27-02-2010 20:58:20
- narugohan
- Membres

- Date d'inscription:
- Messages: 113
- IP: 86.203.23.169
- Courriel
Bonjour à tous,
J'ai une question. J'aimerais savoir si il existe une fonction dans irrlicht pour rendre un texture transparente, enfin quand je dis transparente, c'est de la transparence, mais en partie. Je m'explique :
J'ai un mur ou j'aimerai appliquer une texture grillage dessus, et rendre transparent se qui est entre les mailles de mon grillage, pour que mon mur devienne transparent mais que l'on voie alors que le grillage.
Je c pas si je me suis bien expliqué^^, mais je vous remercie d'avence pour votre réponse
Hors ligne
27-02-2010 21:02:22
- Magun
- Administrateurs

- Date d'inscription:
- Messages: 910
- IP: 188.93.45.30
- Courriel Site web
tu a juste a utiliser une texture d'extension tga ou png ... la transparence s'applique tout seul ...
Hors ligne
27-02-2010 21:15:24
- narugohan
- Membres

- Date d'inscription:
- Messages: 113
- IP: 86.203.23.169
- Courriel
sa marche pas. Si c'est une image 2d sur l'écran, oui sa marche mais comme texture sur mon mur, sa marche pas, enfin si a moitié. Se qui devrait etre transparent est remplacé par du blanc, et moi se que je voudrait, sa serai pouvoir voir a travers le mur, se qui évite d'utilisé des vector pour faire un grillage, j'ai vu quelque jeu qui utilse cette technique, donc j'aimerai l'appliqué dans irrlicht
Hors ligne
27-02-2010 23:15:45
- nabouill
- Membres

- Date d'inscription:
- Messages: 242
- IP: 77.195.185.153
- Courriel
Il faut changer le type de materiel aussi:
exemple pour un nœud appelé cube, essaye celui là je crois:
Code c++ :
cube->setMaterialType( EMT_TRANSPARENT_ALPHA_CHANNEL);Mais il faut aussi utilisé une texture en png ou tga, mais il ne faut pas seulement laisser en blanc les partie que tu ne veut pas afficher, il faut carrément les supprimées.
Hors ligne
28-02-2010 13:10:05
- narugohan
- Membres

- Date d'inscription:
- Messages: 113
- IP: 86.203.23.169
- Courriel
je te remerci car en rajoutant cette ligne, c'est bon, sa fonctionne, je voie a travers^^. Par contre j'ai comme meme une petite quesiton, car bien sur mon mur ne peux se voir que d'un coté, mais il n'y aurai pas une maniere pour que la texture puisse se voir devant et derière, si non, bah c'est pas grave, je ferai une éppaiseur très fine^^
Encore merci et bonne journée
Hors ligne
28-02-2010 18:31:20
- Darktib
- Membres
- Date d'inscription:
- Messages: 11
- IP: 86.217.83.233
- Courriel
Pour que tu puisse voir la texture des 2 cotés, il faut que tu désactive le backface culling, dans le matériaux du mur.
(ie, cette technique empêche le rendu de tous les polygones qui tourne le dos à la caméra, c'est une technique d'optimisation)
Hors ligne
28-02-2010 20:59:10
- narugohan
- Membres

- Date d'inscription:
- Messages: 113
- IP: 86.203.23.169
- Courriel
ok, mais comment est-ce que je fais sa ??? ^^
Hors ligne
28-02-2010 21:10:39
- nabouill
- Membres

- Date d'inscription:
- Messages: 242
- IP: 77.195.185.153
- Courriel
Hummm... il y a une doc pour çà. bon....
Code c++ :
irr::video::SMaterial monMaterial;
monMaterial.BackfaceCulling = false;Hors ligne
01-03-2010 18:27:02
- narugohan
- Membres

- Date d'inscription:
- Messages: 113
- IP: 86.203.23.169
- Courriel
ok mais quand je rajoute sa..... sa fais rien ><, donc faut t'il rajouté quelque chose de plus ?
Hors ligne
03-03-2010 12:33:42
03-03-2010 12:52:35
- nabouill
- Membres

- Date d'inscription:
- Messages: 242
- IP: 82.127.58.127
- Courriel
Il faudrait savoir si ton mur est une simple surface plane ou un cube ou ...
Et aussi un petit bout de code, car ça me parait bizarre que rien ne marche chez toi
A+
Hors ligne
03-03-2010 13:19:23
- narugohan
- Membres

- Date d'inscription:
- Messages: 113
- IP: 86.203.23.169
- Courriel
alors mon mur est juste une surface plane, et voiçi le code
#include <cstdlib>
#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)
{
irr::IrrlichtDevice* device = irr::createDevice( irr::video::EDT_OPENGL, irr::core::dimension2d<irr::u32>(640,480), 32);
irr::video::IVideoDriver* driver = device->getVideoDriver ();
irr::scene::ISceneManager *sceneManager = device->getSceneManager ();
irr::scene::IAnimatedMeshSceneNode* Nmodele = sceneManager->addAnimatedMeshSceneNode(sceneManager->getMesh("mur.3ds"));
Nmodele->setMaterialFlag(EMF_LIGHTING, false);
irr::video::ITexture *grillage = driver->getTexture("grillage.png"); // chargement image
Nmodele->setMaterialTexture( 0, grillage);
Nmodele->setMaterialType( EMT_TRANSPARENT_ALPHA_CHANNEL);
irr::video::SMaterial mat;
mat.BackfaceCulling = false;
irr::scene::ICameraSceneNode *camera = sceneManager->addCameraSceneNodeFPS(0,100.0f,1.0f);
while(device->run ())
{
driver->beginScene(true, true, irr::video::SColor (0,120,120,120));
sceneManager->drawAll ();
driver->endScene ();
}
device->drop ();
return 0;
}Hors ligne
04-03-2010 08:43:38
- nabouill
- Membres

- Date d'inscription:
- Messages: 242
- IP: 82.127.58.127
- Courriel
Salut, tu crée un materiel "mat", mais tu ne tant sert pas, il faut que tu attribue ton materiel a ton noeud de scene sinon ça ne sert a rien.
Hors ligne
04-03-2010 15:23:20
- narugohan
- Membres

- Date d'inscription:
- Messages: 113
- IP: 90.25.90.169
- Courriel
c bien sa, comment je fais pour l'attribuer lol
Hors ligne
04-03-2010 19:11:35
- nabouill
- Membres

- Date d'inscription:
- Messages: 242
- IP: 77.195.185.153
- Courriel
jette dont un coup d'oeil par la: http://irrlicht-fr.org/viewtopic.php?pid=8050#p8050
Hors ligne
04-03-2010 19:25:43
- narugohan
- Membres

- Date d'inscription:
- Messages: 113
- IP: 90.25.90.169
- Courriel
merci sa marche, encore merci ;p
Hors ligne



