#1 

07-08-2009 00:54:10

nico
Administrateurs
Avatar de nico
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 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.


Hors ligne


#2 

07-08-2009 10:58:01

tmyke
Administrateurs
Avatar de tmyke
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 wink

http://www.siteduzero.com/tutoriel-3-5667-on-refait-la-deco.html#ss_part_1


Force et sagesse...

Hors ligne


#3 

07-08-2009 12:46:32

nico
Administrateurs
Avatar de nico
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


#4 

07-08-2009 15:15:48

tmyke
Administrateurs
Avatar de tmyke
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 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


#5 

07-08-2009 16:15:58

nico
Administrateurs
Avatar de nico
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


#6 

07-08-2009 20:44:20

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


Hors ligne


#7 

08-08-2009 07:38:53

tmyke
Administrateurs
Avatar de tmyke
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 wink


Force et sagesse...

Hors ligne


#8 

08-08-2009 11:20:40

nico
Administrateurs
Avatar de nico
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


#9 

14-08-2009 16:47:09

nico
Administrateurs
Avatar de nico
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


#10 

14-08-2009 18:25:36

Magun
Administrateurs
Avatar de Magun
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 smile

Hors ligne


#11 

14-08-2009 21:10:07

nico
Administrateurs
Avatar de nico
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


#12 

14-08-2009 21:28:47

nico
Administrateurs
Avatar de nico
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


#13 

17-08-2009 16:13:28

nico
Administrateurs
Avatar de nico
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 big_smile
je vous laisse admirer le massacre

Merci pour votre aide.


Hors ligne


#14 

17-08-2009 16:48:49

tmyke
Administrateurs
Avatar de tmyke
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


#15 

17-08-2009 18:18:11

nico
Administrateurs
Avatar de nico
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. 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


#16 

17-08-2009 21:20:24

tmyke
Administrateurs
Avatar de tmyke
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


#17 

18-08-2009 00:08:36

nico
Administrateurs
Avatar de nico
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 

18-08-2009 17:12:17

tmyke
Administrateurs
Avatar de tmyke
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 

19-08-2009 15:37:34

nico
Administrateurs
Avatar de nico
Date d'inscription:
Messages: 563
IP: 82.232.128.163
Courriel

Ok merci, je vais voir ça.


Hors ligne


#20 

23-08-2009 15:04:14

tmyke
Administrateurs
Avatar de tmyke
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. wink


Force et sagesse...

Hors ligne


#21 

23-08-2009 20:10:56

nico
Administrateurs
Avatar de nico
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 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


#22 

24-08-2009 16:12:36

johnplayer
Membres
Avatar de johnplayer
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


#23 

24-08-2009 16:33:54

tmyke
Administrateurs
Avatar de tmyke
Date d'inscription:
Messages: 1025
IP: 92.130.13.178
Courriel

johnplayer a dis l'essentiel wink


Force et sagesse...

Hors ligne


#24 

25-08-2009 10:50:09

nico
Administrateurs
Avatar de nico
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 cool


Hors ligne


#25 

17-10-2009 11:24:39

nico
Administrateurs
Avatar de nico
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


Options Liens officiels Caractéristiques Statistiques Communauté
Préférences cookies
Corrections
irrlicht
irrklang
irredit
irrxml
Propulsé par Django
xhtml 1.0
css 2.1
884 membres
1440 sujets
11337 messages
Dernier membre inscrit: Saidov17
572 invités en ligne
membre en ligne: -
RSS Feed