#0 

07-08-2009 02:54:10

nico
Webmaster
Date d'inscription: 07-08-2009
Messages: 563
Corrections: 9

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.
 

Code:

 
            modele = directeurDeScene->getMesh("objets/cube.3ds");
            objet[id].maille = directeurDeScene->addMeshSceneNode(modele->getMesh(0));

Ensuite je rajoute la texture

Code:

           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 sad ,  la texture se deforme aussi au lieu de se repeter.
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.

Dernière modification par nico (07-08-2009 14:48:13)

Hors ligne


#1 

07-08-2009 12:58:01

tmyke
Administrateur
Date d'inscription: 24-03-2008
Messages: 1025

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 wink

http://www.siteduzero.com/tutoriel-3-56 … #ss_part_1


Force et sagesse...

Hors ligne


#2 

07-08-2009 14:46:32

nico
Webmaster
Date d'inscription: 07-08-2009
Messages: 563
Corrections: 9

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.

Dernière modification par nico (07-08-2009 14:59:57)

Hors ligne


#3 

07-08-2009 17:15:48

tmyke
Administrateur
Date d'inscription: 24-03-2008
Messages: 1025

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 wink

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 smile


Force et sagesse...

Hors ligne


#4 

07-08-2009 18:15:58

nico
Webmaster
Date d'inscription: 07-08-2009
Messages: 563
Corrections: 9

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.

Dernière modification par nico (07-08-2009 18:16:22)

Hors ligne


#5 

07-08-2009 22:44:20

nico
Webmaster
Date d'inscription: 07-08-2009
Messages: 563
Corrections: 9

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.

Code:

 
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  wink , et si vous voulez demain on teste ce code.
A plus.

Dernière modification par nico (07-08-2009 22:44:48)

Hors ligne


#6 

08-08-2009 09:38:53

tmyke
Administrateur
Date d'inscription: 24-03-2008
Messages: 1025

Cool et merci Nico, je vais voir pour tester cela dès aujourd'hui wink


Force et sagesse...

Hors ligne


#7 

08-08-2009 13:20:40

nico
Webmaster
Date d'inscription: 07-08-2009
Messages: 563
Corrections: 9

Topic section général ouvert sur le sujet de la coloration syntaxique.

Dernière modification par nico (08-08-2009 13:27:50)

Hors ligne


#8 

14-08-2009 18:47:09

nico
Webmaster
Date d'inscription: 07-08-2009
Messages: 563
Corrections: 9

Salut, j'ai un soucis lorsque je créer plusieus cube à partir du meme fichier ex:

Code:

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:

Code:

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


#9 

14-08-2009 20:25:36

Magun
SleekThink Producer
Lieu: Punakha
Date d'inscription: 18-11-2007
Messages: 910
Corrections: 2
Site web

pourquoi ne pas passer par addCubeSceneNode ?
ou IGeometryCreator qui est dispo sur la svn ? d'ailleurs très pratique se dernier smile

Hors ligne


#10 

14-08-2009 23:10:07

nico
Webmaster
Date d'inscription: 07-08-2009
Messages: 563
Corrections: 9

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


#11 

14-08-2009 23:28:47

nico
Webmaster
Date d'inscription: 07-08-2009
Messages: 563
Corrections: 9

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.

Dernière modification par nico (14-08-2009 23:30:08)

Hors ligne


#12 

17-08-2009 18:13:28

nico
Webmaster
Date d'inscription: 07-08-2009
Messages: 563
Corrections: 9

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 big_smile
je vous laisse admirer le massacre

Merci pour votre aide.

Hors ligne


#13 

17-08-2009 18:48:49

tmyke
Administrateur
Date d'inscription: 24-03-2008
Messages: 1025

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


#14 

17-08-2009 20:18:11

nico
Webmaster
Date d'inscription: 07-08-2009
Messages: 563
Corrections: 9

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


#15 

17-08-2009 23:20:24

tmyke
Administrateur
Date d'inscription: 24-03-2008
Messages: 1025

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


#16 

18-08-2009 02:08:36

nico
Webmaster
Date d'inscription: 07-08-2009
Messages: 563
Corrections: 9

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


#17 

18-08-2009 19:12:17

tmyke
Administrateur
Date d'inscription: 24-03-2008
Messages: 1025

nico :

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


#18 

19-08-2009 17:37:34

nico
Webmaster
Date d'inscription: 07-08-2009
Messages: 563
Corrections: 9

Ok merci, je vais voir ça.

Hors ligne


#19 

23-08-2009 17:04:14

tmyke
Administrateur
Date d'inscription: 24-03-2008
Messages: 1025

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


Force et sagesse...

Hors ligne


#20 

23-08-2009 22:10:56

nico
Webmaster
Date d'inscription: 07-08-2009
Messages: 563
Corrections: 9

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 smile , 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 sad , 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


#21 

24-08-2009 18:12:36

johnplayer
Habitué
Date d'inscription: 30-09-2007
Messages: 431

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


#22 

24-08-2009 18:33:54

tmyke
Administrateur
Date d'inscription: 24-03-2008
Messages: 1025

johnplayer a dis l'essentiel wink


Force et sagesse...

Hors ligne


#23 

25-08-2009 12:50:09

nico
Webmaster
Date d'inscription: 07-08-2009
Messages: 563
Corrections: 9

Mais c'est super ça ! Merci beaucoup johnplayer et tmyke, je comprend mieux maintenant  cool

Hors ligne


#24 

17-10-2009 13:24:39

nico
Webmaster
Date d'inscription: 07-08-2009
Messages: 563
Corrections: 9

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


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