Fonction qui réagit au cout

Fonction qui réagit au cout - C++ - Programmation

Marsh Posté le 08-02-2012 à 01:22:49    

Bonsoir :D  
 
ça fait un petit moment que je m'arrache les cheveux sur un bug extrêmement bizarre..
 
J'ai un mesh en 3d sur openGL que j'anime, le truc c'est qu'il est tout déformé (les weights sont foutu en l'air), le problème semble venir de cette fonction :
 

Code :
  1. void SkeletalMesh::prepareMesh(const md5_joint*M)
  2. {
  3.     for (int i=0;i<mesh.vertexCount;++i)
  4.     {
  5.         vec3f final_vert = {0.0f,0.0f,0.0f};
  6.         for (int j=0;j<mesh.vertexList[i].weight_count;++j)
  7.         {
  8.             const md5_weight* w = &mesh.weightList[mesh.vertexList[i].weight_start + j];
  9.             const  md5_joint*joint = &M[w->bone_id];
  10.             vec3f trs={0,0,0};
  11.             quat_rotate_point(joint->rotation,w->position,trs);
  12.             final_vert.x +=  (joint->position.x +trs.x)*w->bias;
  13.             final_vert.y +=  (joint->position.y +trs.y)*w->bias;
  14.             final_vert.z +=  (joint->position.z +trs.z)*w->bias;
  15.         }
  16.         mesh.vertexArray[i].position.x = final_vert.x;
  17.         mesh.vertexArray[i].position.y = final_vert.y;
  18.         mesh.vertexArray[i].position.z = final_vert.z;
  19.     }
  20. }


 
(mesh est défini en private dans la class SkeletalMesh, c'est une structure)
 
Le truc, c'est que si je rajoute un cout juste au dessus des "final_vert +=", ben la mise est changé..
En gros, "cout<<endl;" fera que mon mesh est tout ecrasé, et cout<<" " répare le bug :heink:  
 
Je sais pas quoi mettre comme lignes supplémentaire à indiqué à côté de cette fonction, étant donné que j'ai fichtrement aucune idée de la source du problème :pt1cable:  
 
Merci pour votre aide !


---------------
Perhaps you don't deserve to breathe
Reply

Marsh Posté le 08-02-2012 à 01:22:49   

Reply

Marsh Posté le 08-02-2012 à 09:29:40    

En désespoir de cause et vu l'étrangeté du problème, je suis tenté de dire que la source du bug est ailleurs, peut-être une anomalie dans la gestion de la mémoire ?
Tu as la possibilité de passer un outil d'analyse dynamique (type valgrind) sur ton programme ?

Reply

Marsh Posté le 08-02-2012 à 13:17:22    

Valgrind est dispo que sur linux, et manque de bol j'suis sur windows :/

 

J'ai pas trouvé le code source de MPatrol, jvais chercher pour Purify :D

 

Au pire j'peux tenter de ré-écrire tout mon code, mais je doute que ce soit utile..

 

Ah, ben ça marche, j'ai repris un ancien code et virer les différence qu'il y avait avec le nouveau :sweat:

 

Non en fait c'est pire que ça, j'avais carrément zapper de récupérer la composante "w" en calculant un conjugué de quaternion, mais je suis pas capable de savoir pourquoi le cout modifiait ça :D


Message édité par Terminapor le 08-02-2012 à 13:36:10

---------------
Perhaps you don't deserve to breathe
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed