#0 

18-12-2006 20:46:34

hydropix
Membre
Date d'inscription: 06-12-2006
Messages: 17
Site web

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 ! smile

Merci !

Hors ligne


#1 

18-12-2006 21:33:26

DeusXL
Abonné
Lieu: Paris
Date d'inscription: 27-09-2006
Messages: 174

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.


Fanatique d'Irrlicht + Fanatique de Mono + Fanatique de Linux => Créateur d'Irrlicht .NET CP bien sûr !
Version actuelle d'Irrlicht .NET CP : 0.8, Version en test : 0.9.

Hors ligne


#2 

18-12-2006 22:13:13

Copland
Modérateur
Lieu: ZarbiLand
Date d'inscription: 22-09-2006
Messages: 657
Site web

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....


Config : I5 2400, ATI HD6870 1Go DDR5, 4Go DDR3.
Single Boot : Windows Seven.

Hors ligne


#3 

18-12-2006 22:54:47

hydropix
Membre
Date d'inscription: 06-12-2006
Messages: 17
Site web

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


#4 

19-12-2006 00:03:43

kedu
Modérateur
Date d'inscription: 23-09-2006
Messages: 155

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


#5 

19-12-2006 03:12:34

hydropix
Membre
Date d'inscription: 06-12-2006
Messages: 17
Site web

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


#6 

19-12-2006 07:08:13

DeusXL
Abonné
Lieu: Paris
Date d'inscription: 27-09-2006
Messages: 174

Juste que si vous relisez mon post, vous verrez que je fais mention de ce bug dans le shader de ma WaterSceneNode sad
Le bug apparaît aussi dans les shaders (mais peut-être l'effet est-il moindre).


Fanatique d'Irrlicht + Fanatique de Mono + Fanatique de Linux => Créateur d'Irrlicht .NET CP bien sûr !
Version actuelle d'Irrlicht .NET CP : 0.8, Version en test : 0.9.

Hors ligne


#7 

27-12-2006 10:27:13

adiems
Petit nouveau
Date d'inscription: 27-12-2006
Messages: 4

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! wink

Dernière modification par adiems (27-12-2006 10:33:20)

Hors ligne


#8 

27-12-2006 18:28:27

kedu
Modérateur
Date d'inscription: 23-09-2006
Messages: 155

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 smile)

Hors ligne


#9 

27-12-2006 20:51:34

adiems
Petit nouveau
Date d'inscription: 27-12-2006
Messages: 4

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 wink 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)
big_smile

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
70 invités en ligne
Aucun membre connecté
RSS Feed