Quelle méthode employez-vous pour utiliser l'alpha d'une texture, afin que la transparence puisse être progressive ? Sur les tests que j'ai effectués, la texture passe de opaque à transparent, sans aucune nuances intermédiaires, alors que l'alpha comporte de nombreuses valeurs de gris. D'ailleurs je retrouve ces modulations de translucidité avec Draw2DImage() mais pas sur un objet texturé... misère !
Merci !
Hors ligne
Personellement j'ai plutôt vu ça de la sorte (avec OpenGL ET DirectX) sur ma WaterSceneNode :
entre 0 et 0.5, l'alpha est nul. Entre 0.5 et 1.0, l'alpha est progressif.
Je n'ai aucune idée de pourquoi ce bug est apparu entre 0 et 0.5, ça m'a bien dérangé car ça m'a bloqué la moitié des nuances de l'alpha dans l'eau.
Hors ligne
J'ai effacé mon premier post car j'avais répondu à côté de la plaque je pense.
Si j'ai bien compris, tu voudrais par exemple simuler un effet de lumière sur un cône grace a une texture dégradé ou un effet du même style c'est ça ?
Moi j'essairai avec une texture à base de blanc et noir avec un Blend dessus juste pour voir se que ça peut donner.
Autrement je vois pas trop d'autre solution....
Hors ligne
Mince ça me rassure pas ce que tu dis DeusXL, pour solutionner le problème, peut-on envisager les Shader ?
Copland : J'essaye d'utiliser la couche Alpha d'une image RGB. Cette couche Alpha comporte toutes les nuances de gris possible du noir au blanc, donc théoriquement, la translucidité de la texture devrait varier avec la même richesse de nuance que sa couche Alpha, hors ce n'est pas le cas. Et on obtient des états : transparent/opaque, sans intermédiaire, séparés par la valeur médiane de gris neutre de la couche Alpha. Quoique DeusXL ait observé des nuances dans une certaines proportions, mais pas d'une manière homogène, comme la logique l'exigerait.
Hors ligne
Copland et moi avons cherché et effectivement il faut regarder du côté des shaders
Cela permet d'obtenir ce genre de chose :
Le lien vers le tuto officiel sur les shaders
Le lien de la traduction en c# - Irrlicht .net CP par zitzu
Et c'est là qu'on pleure car avec ma Ti4200 de Nvidia, et bien pas de shaders ! Donc si quelqu'un possède une astuce pour produire le même effet sans ça m'intéresse également !!!
Hors ligne
J'ai l'impression que les dev d'Irrlicht se sont pas mal appuyés sur l'utilisation des Shaders pour compenser certains manquent. Car, il manque d'autres trucs de bases, comme l'inverse de : TransparentAddColor, la synthèse soustractive ; très pratique pour faire des ombrages.
Hors ligne
Juste que si vous relisez mon post, vous verrez que je fais mention de ce bug dans le shader de ma WaterSceneNode
Le bug apparaît aussi dans les shaders (mais peut-être l'effet est-il moindre).
Hors ligne
Salut, alors pour gérer correctement l'alpha d'une texture, il faut modifier un parametre du materiel de ton objet 3D auquel tu appliques ta texture...
En fait il faut modifier le parametre associé a EMT_TRANSPARENT_ALPHA_CHANNEL (qui a pour defaut 0.5, d'où les remarques précédentes: 0->49% alpha, pas géré, 50->100% alpha géré).
une bonne valeur est 0.1, pourquoi bonne? parce que la valeur 0.5 par defaut n'est pas la pour nous embetre mais pour éconnomiser du temps de calcul pour les rendu, en effet la doc irrlicht dit que cette opération est assez lourde et appliquée a de nombreux objets, bah ca bouffe des perfs tout simplement (c'est aussi pour ca qu'il y a un EMT_TRANSPARENT_ALPHA_CHANNEL_REF qui n'utilise pas d'alpha blending(bcp plus rapide) mais qui ne peut etre parametré: en gros ca fait comme un booleen: texture.pixel.alphaValue>127, c'est transparent, et <=127 c'est opaque).
voila donc pour régler ton problème, creé ou récupère le materiau de ton objet, puis modifie le selon ta convenance en matiere de précision d'alpha:
Material.MaterialType = video::EMT_TRANSPARENT_ALPHA_CHANNEL;
Material.MaterialTypeParam = 0.1;
[EDIT] en tout cas c'est comme ca dans la version c++ du framework, que j'utilise, mais mais comme le wrapper à pas l'air mal foutu du tout, ca doit fonctionner pareil!
Dernière modification par adiems (27-12-2006 10:33:20)
Hors ligne
J'ai peur de mal comprendre...
En fait, il me semblait que la demande d'hypodrix portait sur le fait de pouvoir rendre un objet progressivement transparent, en utilisant une texture qui régirait cette transparence progressive.
Voir le cube en bas à gauche de la précédente image de mon précédent post pour comprendre ce que je viens de baragouiner...
Ou alors j'ai tout compris de travers lol (Ce qui ne m'étonnerait pas )
Hors ligne
bah j'ai relu la demande de hypodrix, et il ne parle pas de faire un objet transparent...bon alors apres peut être qu'il n'a pas exprimé son problème assez claireùent pour moi mais bon c'est pas grave, il verra bien si ca l'aide ou pas.
sinon si le probleme c'est effectivement de faire un ojet partielement transparent c'est un peu pareil...en faisant des faces simple et pas des 'bifaces', les facs dont la normal n'est pas tounée 'vers' la camera ne sont pas rendu, et pour les autres, bah le EMT_TRANSPARENT_ALPHA_CHANNEL bien reglé fait apparaitre les faces 'visibles' avec les nuances d'alpha...
il me semble...
voila sinon sans parler de ca il a peut être moyen de gérer avec l'alpha des vertices et le materiau EMT_VERTEX_ALPHA (qui est un shader intégré certes, et donc qui rejoindait en quelque sorte ce que vous proposiez)
Hors ligne