Pages: 1 2
- Accueil forums
- » Textures/Images
- » texture qui se deforme lors d'un scale du mesh.
07-08-2009 00:54:10
- nico
- Administrateurs

- Date d'inscription:
- Messages: 563
- IP: 82.232.128.163
- Courriel
Salut à tous, cela fait quelque jours que je m'exerce sur irrlicht, je decouvre le monde de la 3d par la meme occasion,
et pour debuter, je fait un editeur de niveau.
J'ai crée une structure qui s'apelle "objet" ou je stocke les info de postion, texture, taille....
Pour rajouter un objet a la scene, je charge un fichier qui contient un cube.
modele = directeurDeScene->getMesh("objets/cube.3ds");
objet[id].maille = directeurDeScene->addMeshSceneNode(modele->getMesh(0));Ensuite je rajoute la texture
directeurDeScene->getMeshManipulator()->makePlanarTextureMapping(objet[id].maille->getMesh(),2.5f);
objet[id].maille->setMaterialTexture( 0, driver->getTexture(objet[id].texture) );Et pour finir, je fait appel à une fonction pour modifier les propriété de l'objet avec le pavé numérique.
je lance le programme, puis je deforme mon cube pour en faire un mur, et là c'est le drame
Je me dit alors que je dois mettre a jour la texture donc je repete le code de texturage dans la boucle de rendu mais sans succé.
je vais ensuite rendre visite a la doc pour lui dire 2 mots, (presqu'on se fight et tout) et du coup on se parle plus.
Plus serieusement, comment faire en sorte que la texture se répète au lieu de s'étirer ?
je voulais aussi vous demander si vous connaissiez une autre fonction que scale pour modifier la taille, car ce dernier agit par multiplication( si je ne me trompe pas) hors je voudrai agir par addition.
merci pour votre aide.
Hors ligne
07-08-2009 10:58:01
- tmyke
- Administrateurs

- Date d'inscription:
- Messages: 1025
- IP: 86.218.183.155
- Courriel
En effet, ce n'est pas parce que tu fait évoluer la géométrie d'un modèle, que tu change la façon dont la texture est appliquée dessus.
Si tu veux arriver à une répétition de la texture plutôt qu'à son étirement, alors il faut aussi interagir sur les coordonnées de textures.
C'est déjà moins facile ceci dit.
As-tu regardé ce tuto, cela pourra éclairer ta lanterne je pense. Après, la mise en pratique, cela sera à toi de voir ![]()
http://www.siteduzero.com/tutoriel-3-5667-on-refait-la-deco.html#ss_part_1
Force et sagesse...
Hors ligne
07-08-2009 12:46:32
- nico
- Administrateurs

- Date d'inscription:
- Messages: 563
- IP: 82.232.128.163
- Courriel
Salut tmyke, oui j'ai lu ce tuto,c'est avec lui que j'ai fait mes premiers pas.
Je pensais qu'il fallait juste regler un parametre pour faire répéter la texture, mais bon tampis, je vais essayer de le faire manuellement.
Merci pour ton aide.
Au sinon pour le forum, pourriez vous ajouter la coloration syntaxique du code c++ ? Je sais pas si ce forum est facilement modifiable, mais ça serait cool,
Enfin je veux pas vous embetter non plus. Dites moi si ça vous interresse.
Encore merci.
Hors ligne
07-08-2009 15:15:48
- tmyke
- Administrateurs

- Date d'inscription:
- Messages: 1025
- IP: 90.56.17.55
- Courriel
Pas de soucis, j'espère que tu arriveras à tes fins pour ton histoire de texture. Si tu galère trop, n'hésite pas, pour demander un coup
de main ![]()
Pour ce qui est de la coloration syntaxique, cela serait très certainement très sympa, mais pour ma part je ne suis pas un spécialiste
WED, et je n'ai pas plus le temps que cela de me former sérieusement (même si je me dis toujour que cela serait une bonne chose)
Je ne serais te dire si c'est possible avec un forum FluxBB, même si à mon avis il n'y a pas de raison.
Si quelqu'un connais et à déjà fait, alors oui, pourquoi pas ![]()
Force et sagesse...
Hors ligne
07-08-2009 16:15:58
- nico
- Administrateurs

- Date d'inscription:
- Messages: 563
- IP: 82.232.128.163
- Courriel
Pour les textures, en cherchant comment les positioner dans la doc, je me suis rendu compte par hasard , qu'on pouvait scalé un IAnimatedMesh,
et du coup faire un makePlanarTextureMapping avec comme parametre l' IAnimatedMesh scalé.
Alors ça marche, mais j'ai des probleme de proportionalité entre mon IAnimatedMesh et mon IMeshSceneNode. j'essaye de voir si je peu en tirer quelque chose, autrement je fait comme t'a dit.
Bon en attendant je vais voir punbb et je repasse ce soir pour vous tenir au courant. A plus.
Hors ligne
07-08-2009 20:44:20
- nico
- Administrateurs

- Date d'inscription:
- Messages: 563
- IP: 82.232.128.163
- Courriel
Salut à tous, j'ai donc installé punbb en local sous wamp, et j'ai modifier le fichier include/parser.php.
C'est lui qui s'occupe du bbcode, et j'ai rajouté du code dans la fonction do_bbcode($text) vers la ligne 300.
J'ai fait un petit exemple qu'on pourra compléter par la suite.
function cpp($matches)
{
$matches[1]=preg_replace('#(void|int|char|long|double|float|bool|unsigned|true|false)( |;|:)#isU', '<span style="color:0000ff">$1$2$3</span>',$matches[1]);
return ($matches[1]);
}
$text=preg_replace_callback("#\\[cpp\\](.+)\\[/cpp\\]#isU","cpp",$text);Voila, ce code permet de coloré en bleu les mots clé que j'ai inscrits, à l'aide des balises [cpp]...code...[/cpp]
Après le seul soucis c'est de trouvé les couleurs approprié pour le forum, car moi j'ai testé que sur fond blanc.
Bon là je vais joué a la play pour changer
A plus.
Hors ligne
08-08-2009 07:38:53
- tmyke
- Administrateurs

- Date d'inscription:
- Messages: 1025
- IP: 90.56.17.55
- Courriel
Cool et merci Nico, je vais voir pour tester cela dès aujourd'hui ![]()
Force et sagesse...
Hors ligne
08-08-2009 11:20:40
- nico
- Administrateurs

- Date d'inscription:
- Messages: 563
- IP: 82.232.128.163
- Courriel
Topic section général ouvert sur le sujet de la coloration syntaxique.
Hors ligne
14-08-2009 16:47:09
- nico
- Administrateurs

- Date d'inscription:
- Messages: 563
- IP: 82.232.128.163
- Courriel
Salut, j'ai un soucis lorsque je créer plusieus cube à partir du meme fichier ex:
cube1 = smgr->getMesh("objets/cube.3ds");
cube2= smgr->getMesh("objets/cube.3ds");
Ncube1 = smgr->addMeshSceneNode(cube1->getMesh(0));
Ncube2 = smgr->addMeshSceneNode(cube2->getMesh(0));Lorsque je fait makePlanarTextureMapping(cube2->getMesh(0), 2.5f) cela modifie aussi le mapping du modele1. hors je ne le souhaite pas du tout.
Comment cela se fait il ?
Au sinon pour répéter la texture j'ai modifié la fonction makeplanartexture pour qu'elle prenne en compte les dimensions de l'imeshscenenode.
Donc c'est plutot cool, j'ai juste a faire:
Ncube1->setScale(core::vector3df(longueur,hauteur, profondeur));
TextureMapping(cube1->getMesh(),longueur, hauteur,profondeur,0.005f);Mais j'ai toujours le meme problème lorsque je modifie le cube 2 cela modifie le cube 1 aussi. donc comment enlever leur lien de parenté ?
Merci.
Hors ligne
14-08-2009 18:25:36
- Magun
- Administrateurs

- Date d'inscription:
- Messages: 910
- IP: 90.16.10.114
- Courriel Site web
pourquoi ne pas passer par addCubeSceneNode ?
ou IGeometryCreator qui est dispo sur la svn ? d'ailleurs très pratique se dernier ![]()
Hors ligne
14-08-2009 21:10:07
- nico
- Administrateurs

- Date d'inscription:
- Messages: 563
- IP: 82.232.128.163
- Courriel
Salut Magun, merci pour ton aide, en fait le cube n'est pas un bon exemple , ce qui m'interresse vraiment c'est d'arriver a manipuler comme je le souhaite des objets 3d crée avec blender par exemple. Mais pour l'instant j'en suis loin
Hors ligne
14-08-2009 21:28:47
- nico
- Administrateurs

- Date d'inscription:
- Messages: 563
- IP: 82.232.128.163
- Courriel
Salut tmike, c'est fort possible que le fichier soit chargé qu'une seule fois en mémoire pour économiser les ressources, mais c'est quand même embêttant de ne pas pouvoir choisir les options de texuremapping indépendemment.
Hors ligne
17-08-2009 16:13:28
- nico
- Administrateurs

- Date d'inscription:
- Messages: 563
- IP: 82.232.128.163
- Courriel
Salut, j'ai testé ce que m'a dit Magun, et finallement je vais sans doute utiliser cette technique pour les formes simples et je verrai plus tard pour les modeles importés;
car l'utilisation de addcubescenenode resoud les problemes que j'avais pour la répetition des texture, car on peut faire un makeplanartexturemapping sur chaque cube indépendement.
cependant j'ai un nouveau problème avec les textures ![]()
je vous laisse admirer le massacre
Merci pour votre aide.
Hors ligne
17-08-2009 16:48:49
- tmyke
- Administrateurs

- Date d'inscription:
- Messages: 1025
- IP: 81.51.159.49
- Courriel
C'est un problème de coordonnées de texture.
Je me demande si tu n'a pas interet à faire ta propre routine de scaling des coordonnées de texture.
L'exemple du cube est une bonne école et cela reste assez simple. Cela te permettrait de pondre un truc plus généraliste par la suite. non ?
Force et sagesse...
Hors ligne
17-08-2009 18:18:11
- nico
- Administrateurs

- Date d'inscription:
- Messages: 563
- IP: 82.232.128.163
- Courriel
Merci tmyke, as-tu déja vu des problèmes similaires? Pourtant avec les modele 3d ça texturé bien, mais là on dirait que le cube préfère être à poil. ![]()
effectivement je devrait faire ma propre fonction mais malheuresement à l'heure actuel je pige pas grand chose à irrlicht et à la 3d en général.
Mais bon c'est étrange que les fonctions d'irrlicht ne soit pas fonctionnel.
Je ne voit pas d'ou peut venir le problème.
Hors ligne
17-08-2009 21:20:24
- tmyke
- Administrateurs

- Date d'inscription:
- Messages: 1025
- IP: 86.218.247.190
- Courriel
Si j'ai 5 mn le WE à venir, j'essaierais de voir si c'est la fonction native d'Irrlicht qui pose problème. Au moins tu auras une réponse, et
tu verras en conséquence.
Force et sagesse...
Hors ligne
18-08-2009 00:08:36
- nico
- Administrateurs

- Date d'inscription:
- Messages: 563
- IP: 82.232.128.163
- Courriel
Cool, en fait c'est bon j'ai trouvé le problème(mais pas resolu), ça vient encore et toujours de makeplanartexturemapping.
Décidement elle m'aime pas cette fonction.
Sur les modele importés ça texture bien mais sur les cubes elles est un peu flémarde.
Donc il me reste plus que ta solution mais je n'ai pas vu de tuto la dessus, comment puis je faire pour apprendre ?
Ou connaitrais tu une methode qui me permette de texturer face par face
Merci.
Hors ligne
18-08-2009 17:12:17
- tmyke
- Administrateurs

- Date d'inscription:
- Messages: 1025
- IP: 90.56.148.139
- Courriel
nico Ecris:
je n'ai pas vu de tuto la dessus, comment puis je faire pour apprendre ?
Ou connaitrais tu une méthode qui me permette de texturer face par face Merci.
La tu me prend de cour. Plus généralement, cela ramène aux bases de la créations des mesh, avec les Vertices,
les normales, et surtout les coordonnées de texutres. Une fois que t'as pigé le truc, alors les choses deviennent
plus facile forcement. Et dans ton cas, cela reste abordable.
Force et sagesse...
Hors ligne
19-08-2009 15:37:34
- nico
- Administrateurs

- Date d'inscription:
- Messages: 563
- IP: 82.232.128.163
- Courriel
Ok merci, je vais voir ça.
Hors ligne
23-08-2009 15:04:14
- tmyke
- Administrateurs

- Date d'inscription:
- Messages: 1025
- IP: 86.204.176.37
- Courriel
Bon, chose promise...
Je viens de faire quelques test pour voir effectivement ce qu'il en était.
Effectivement, comme toi, j'arrive au même résultats concernent l'emploi de la fonction makeplanartexturemapping sur un cube créé par Irrlicht.
Par contre, ce qui est beaucoup plus surprenant, j'ai créé un cube avec mon modeler, et je l'ai importé dans mon code Irrlicht, et là par contre, surprise, cela semble
bien fonctionner. Toutes les faces semblent bien 'remappées', contrairement au cube construit en natif par Irrlicht. Faudrait que je regarde du coté du code source du moteur ou
le bas blesse dans la conception du dit CUBE.
Donc, une des solution pour toi serait donc de créer un cube bien mappé avec ton modeler, puir une fois importer, de t'appuyer dessus pour le fonctionnement de ton application. ![]()
Force et sagesse...
Hors ligne
23-08-2009 20:10:56
- nico
- Administrateurs

- Date d'inscription:
- Messages: 563
- IP: 82.232.128.163
- Courriel
Merci tmike, c'est sympa d'avoir testé, je pense qu'il faudrait le signaler au devs.
Concernant les cubes tu me dit d'importé un cube texturé c'est ça? mais je pense que ça me renvoi au problème précedant
, enfin dit moi si je me trompe mais si je crée 10 cubes à partir du même fichier, 1 seul mesh sera crée en mémoire et donc je pourrait appliquer qu'un seul texturemapping pour les 10 cubes
, hors tous ces cubes vont prendre des formes différentes et ont donc chacun besoin d'un texturemapping différent, et ce probleme n'est pas présent avec addcubescenenode, donc là je sais plus quoi faire.
Au sinon j'utilise une listbox pour selectionner la texture à appliquer sur le cube. donc l'idéal serait d'avoir un modèle vierge.
Hors ligne
24-08-2009 16:12:36
- johnplayer
- Membres

- Date d'inscription:
- Messages: 431
- IP: 86.207.124.140
- Courriel
Non si tu charges un mesh qui ne poosède QUE les coordonées de textures et non-pas une texture et que tu l'intègres à plusieurs moeuds, tes cubes (et les coordonnées de textures qui leurs sont associés) seront dupliqués en mémoire mais pas instanciés car le texturing est propre au noeud qui accueille le mesh ( noeud->setMaterialTexture() ). Cela permet de pouvoir multiplier les meshs sans pour autant multiplier les accès fichiers tout en leur associant des textures différentes.
En bref :
1/ tu prends un modeleur 3D et tu créé ton cube.
2/ tu fais un UVW Mapping (par face). (création des coordonnées de texture)
3/ tu l'exporte dans un format utilisable par irrlicht (je te conseil les *.obj car ils ont l'air de bien tourner sous irrlicht, enfin test personnel).
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
24-08-2009 16:33:54
- tmyke
- Administrateurs

- Date d'inscription:
- Messages: 1025
- IP: 92.130.13.178
- Courriel
johnplayer a dis l'essentiel ![]()
Force et sagesse...
Hors ligne
25-08-2009 10:50:09
- nico
- Administrateurs

- Date d'inscription:
- Messages: 563
- IP: 82.232.128.163
- Courriel
Mais c'est super ça ! Merci beaucoup johnplayer et tmyke, je comprend mieux maintenant ![]()
Hors ligne
17-10-2009 11:24:39
- nico
- Administrateurs

- Date d'inscription:
- Messages: 563
- IP: 82.232.128.163
- Courriel
Salut, quelqu'un aurait-il un cube uvw mappé en affaire ? j'ai essayé avec blender de faire l'uv mapping, mais je ne sais pas du tout comment on fait uvw mapping, merci pour votre aide.
Hors ligne



