19-10-2008 16:44:23
- johnplayer
- Membres

- Date d'inscription:
- Messages: 431
- IP: 83.192.90.174
- Courriel
Bonjour,
J'aimerais savoir s'il était possible de "bouger" une texture sur un mesh afin de donner un effet dynamique.
Ma première application serait de réaliser un champ de force (transparence + mouvement de texture + non réactif à la lumière).
Le seul point sur lequel je bloque est le mouvement de la texture. Y a t'il une fonction dans irrlicht qui permette de le faire ou doit-on faire la fonction soit même ? Dans ce dernier cas, avec quelles fonctions ?
Merci d'avance pour vos réponses ! (des bouts de codes seraient les bienvenus... si posssible
)
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
19-10-2008 17:09:52
- tmyke
- Administrateurs

- Date d'inscription:
- Messages: 1025
- IP: 90.33.191.157
- Courriel
Je ne suis pas un pro du domaine, mais il existe des fonctions tel que
SMaterial->setTextureMatrix() par exemple, une fonction aussi comme buildTextureTransform() devrait
aussi t'aider, dans le descriptif est dans la doc. J'avoue ne pas avoir d'exemple sous la main par contre, si tu galères
vraiment, je verais pour voir si j'ai le temps de pondre un truc...
Force et sagesse...
Hors ligne
19-10-2008 17:50:43
- johnplayer
- Membres

- Date d'inscription:
- Messages: 431
- IP: 83.192.90.174
- Courriel
J'avais vu setTextureMatrix() mais je ne vois pas comment l'utiliser.
Je sait récupérer le material d'un node et buildTextureTransforme() pourrait être la solution pour gérer la matrice de la texture plus facilement.
Je vais plancher dessus et on verra. Sinon si quelqu'un d'autres à une idée je suis preneur!
Merci tmyke.
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
19-10-2008 17:55:50
- Aranoth
- Membres

- Date d'inscription:
- Messages: 242
- IP: 90.60.178.238
- Courriel Site web
Sinon il est toujours possible de jouer sur les coordonnées de texture grâce à un vertex shader
Hors ligne
19-10-2008 18:14:37
- johnplayer
- Membres

- Date d'inscription:
- Messages: 431
- IP: 83.192.90.174
- Courriel
J'ai essayé ca mais ca n'a pas l'air de fonctionner. map01 est le mesh dont je veux translater la texture. J'ai placer le code dans la boucle de rendu pour voir mais ca ne fait rien.
matrix4 mat01 = map01->getMaterial(0).getTextureMatrix(0);
mat01.setTranslation(vector3df(1.0f,1.0f,1.0f));
map01->getMaterial(0).setTextureMatrix(0, mat01);Je ne vois pas ce qui bloque! Si quelqu'un voit une erreur, je suis preneur de remarque (j'entends par là des remarques constructives bien sûr).
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
19-10-2008 18:28:17
- johnplayer
- Membres

- Date d'inscription:
- Messages: 431
- IP: 83.192.90.174
- Courriel
J'ai aussi essayé ca mais rien non plus.
matrix4 mat01 = map01->getMaterial(0).getTextureMatrix(0);
mat01.buildTextureTransform(0.0f, vector2df(0,0),vector2df(10,0),vector2df(1,1));
map01->getMaterial(0).setTextureMatrix(0, mat01);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
19-10-2008 18:42:42
- tmyke
- Administrateurs

- Date d'inscription:
- Messages: 1025
- IP: 90.33.191.157
- Courriel
en fait il faut écrire plutôt un truc du genre:
float transx=0.0f
...
(puis dans ta boucle)
matrix4 mat01 = map01->getMaterial(0).getTextureMatrix(0);
mat01.setTextureTranslate(transx, 0);
map01->getMaterial(0).setTextureMatrix(0, mat01);
transx += 0.01f;et là cela fonctionne.
Force et sagesse...
Hors ligne
19-10-2008 18:59:02
- johnplayer
- Membres

- Date d'inscription:
- Messages: 431
- IP: 83.192.90.174
- Courriel
Merci beaucoup tmyke, ca fonctionne à merveille.
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
20-10-2008 11:23:24
- johnplayer
- Membres

- Date d'inscription:
- Messages: 431
- IP: 83.192.86.152
- Courriel
Sinon pour l'animation image par image il y a ca (dans la doc irrlicht ISceneManager) :
ISceneNodeAnimator * createTextureAnimator (const core::array< video::ITexture * > &textures, s32 timePerFrame, bool loop=true)=0
Creates a texture animator, which switches the textures of the target scene node based on a list of textures.
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
20-10-2008 11:50:21
- tmyke
- Administrateurs

- Date d'inscription:
- Messages: 1025
- IP: 81.51.25.131
- Courriel
En effet c'est une autre méthode pour animer les texture, mais cette fois façon 'dessin animé', toujours très intéressant pour réaliser
certains type d'effets sur les mesh.![]()
Force et sagesse...
Hors ligne



