#0 

11-08-2008 19:38:57

Fremtid
Membre
Date d'inscription: 09-08-2008
Messages: 12

Bonjour, voilà mon actuel problème :
j'ai une classe "golem" qui comporte tout ce qu'il faut pour son fonctionnement.
Entre autre, sa position dans l'univers en 3D. Voilà mon problème : avec des tableaux, j'ai créé une dizaine de golems.
Ceux ci sont tous graphiquement identique (même mesh) mais évidemment chaque golem se trouve à un endroit différent. Mon problème est que je n'arrive pas à les afficher : j'ai une classe avec laquelle à l'aide d'un tableau je créé une dizaine de golem mais je ne sais pas les afficher correctement dans l'espace.
J'ai tenté ceci :

golem2[10] = smgr->addAnimatedMeshSceneNode(model_golem);

      for (int i = 0; i <= 10; i++)
      {
          golem2[ i ]->setPosition(core::vector3df(golem[ i ].getX(), golem[ i ].getY(), golem[ i ].getZ()));
      }

Pourriez vous me dire s'il est possible de corriger mon problème, ou sinon de m'indiquer clairement une autre manière d'aboutir à l'affichage de golem qui sont créés en masse avec un même modèle.
Merci d'avance smile

Hors ligne


#1 

11-08-2008 20:30:42

Perceval
Abonné
Date d'inscription: 20-10-2006
Messages: 105

Code:

golem2[10] = smgr->addAnimatedMeshSceneNode(model_golem);

Ce code n'initialise pas les éléments du tableaux, tu dois tous les initialiser dans ta boucle.

Essaies un truc du genre :

Code:

  for (int i = 0; i < 10; i++) // ici, c'est un inférieur strict !
      {
          golem2[i] = smgr->addAnimatedMeshSceneNode(model_golem);
          golem2[i]->setPosition(core::vector3df(golem[ i ].getX(), golem[ i ].getY(), golem[ i ].getZ()));
      }

Les Golems devraient s'afficher wink

Hors ligne


#2 

12-08-2008 21:30:35

Fremtid
Membre
Date d'inscription: 09-08-2008
Messages: 12

Salut !
Merci de ta réponde rapide !
J'ai un nouveau problème : est ce que l'affichage de 2 ou 3 golems peut provoquer un ralentissement massif dans le jeu ? Comme la logique m'impose la réponse négative, je me suis demandé d'où pouvait probablement provenir le problème (allitération en "p"). Mais rien à l'horizion, morne plaine... Alors je me suis dis que peut-être vous auriez une théorie cosmique sur un tel ralentissement : et comme je suis globalement un naze dans le domaine je me suis dis que si je vous mettais quelques bouts de codes vous comprendriez peut-être mieux... (au fait, peut-être est ce du au fait que je laisse le programme tourner sans timer mais bon le programme est encore très léger, les classes sont minablement petites, donc je ne pense pas que ca puisse etre la source de cette contre performance vélocitique)


      scene::ITriangleSelector* selector
      = smgr->createTerrainTriangleSelector(terrain, 0);
      terrain->setTriangleSelector(selector);
      selector->drop();

      scene::IAnimatedMeshSceneNode* Character = smgr->addAnimatedMeshSceneNode(smgr->getMesh("knight.md2"));
      Character->setScale(core::vector3df (2,2,2));

      golem golem[2];

      scene::IAnimatedMesh *modele = smgr->getMesh("knight.md2");
      scene::IAnimatedMeshSceneNode* golem2[2];

      for (int j = 0; j < 2; j++)
      {
          golem2[j] = smgr->addAnimatedMeshSceneNode(modele);

          golem2[j]->setPosition(core::vector3df(golem[ j ].getX(), golem[ j ].getY(), golem[ j ].getZ()));
      }


      scene::ISceneNodeAnimator* anim12 = smgr->createCollisionResponseAnimator(
      selector, Character, core::vector3df(40,0.05,40),
      core::vector3df(0,-100,0),
      core::vector3df(0,50,0));
      Character->addAnimator(anim12);
      anim12->drop();
      scene::ISceneNodeAnimator* anim[2];
      for(i = 0; i < 2; i++){
      anim[ i ] = smgr->createCollisionResponseAnimator(
      selector, golem2[ i ], core::vector3df(40,0.05,40),
      core::vector3df(0,-100,0),
      core::vector3df(0,50,0));
      golem2[ i ]->addAnimator(anim[ i ]);
      anim[ i ]->drop();
      }

Hors ligne


#3 

13-08-2008 10:55:30

Perceval
Abonné
Date d'inscription: 20-10-2006
Messages: 105

Fremtid :

J'ai un nouveau problème : est ce que l'affichage de 2 ou 3 golems peut provoquer un ralentissement massif dans le jeu ?


A priori, non, après, tout dépend de la taille des golems... wink Les modèles sont peut-être trop lourd.

Sinon, je vois rien de très gourmand dans le code que tu as posté, tu peux peut-être poster le reste si c'est pas trop long.

Hors ligne


#4 

13-08-2008 11:36:59

Fremtid
Membre
Date d'inscription: 09-08-2008
Messages: 12

Oui effectivement, les golems étaient un peu lourds, je les ai allégés et tout va bien maintenant smile
Au fait, est il impossible d'attacher une lumière à un node ? J'ai voulu placer la lumière et faire un setParent mais pouf, la lumière disparaît étrangement. En tout cas je te remercie énormément pour ta patience et tes réponses !

Hors ligne


#5 

13-08-2008 15:36:10

Perceval
Abonné
Date d'inscription: 20-10-2006
Messages: 105

Normalement ça pose pas de problème. Vérifie que la lumière est bien positionné (si elle est dans le modèle, tu la verras pas). Si c'est pas ça, poste ton code, t'as peut-être fait une erreur 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
881 membres
1426 sujets
11116 messages
Dernier membre inscrit: Bidule
23 invités en ligne
Aucun membre connecté
RSS Feed