THEwarrior333
Messages postés192Date d'inscriptionvendredi 19 mars 2004StatutMembreDernière intervention30 janvier 2008
-
4 juin 2006 à 15:51
THEwarrior333
Messages postés192Date d'inscriptionvendredi 19 mars 2004StatutMembreDernière intervention30 janvier 2008
-
6 juin 2006 à 18:45
Salut a tous
Voila j'arrive à afficher des meshs et a les animer mais je souhaiterais les mettre à l'echelle car certains meshes .x sont super grands (comme la tiny du sdk). Je pense qu'il faut multiplier les vertices du mesh par une matrice du genre
|s 0 0 0|
|0 s 0 0|
|0 0 s 0|
|0 0 0 1|
avec s<1 ca devrait pouvoir réduire le mesh.
mais je sais pas comment on accede aux vertices du mesh animé ou non. Peut etre aussi qu'il y a une autre méthode...
Si qqun pouvait m'aider je lui serai tres reconnaissant.
THEwarrior333
Messages postés192Date d'inscriptionvendredi 19 mars 2004StatutMembreDernière intervention30 janvier 2008 6 juin 2006 à 18:45
OK merci bcp pour ta réponse bien complete.
Afin que cela serve à d'autres, voici une explication de ma situation:
jusqu'ici pour réduire la taille de mes meshes j'optais pour la solution suivante:
D3DXMatrixScaling(&matScaling, 0.0035f, 0.0035f, 0.0035f); // On définit une matrice de mise a l'echelle
g_pd3dDevice->SetTransform( D3DTS_WORLD, &(matScaling * matTranslation) );
// et aussi pourquoi pas * matRotation
// AFFICHAGE du mesh , animé ou non
Ca marche bien mais ca signifie que l'on doit effectuer une multiplication (matScaling * matTranslation) et un SetTransform à chaque boucle, même qd le mesh n'a pas à bouger. Donc pas tres optimisé...
C'est pourquoi je souhaitais mettre a l'echelle chaque mesh avant la boucle de rendu, une fois pour de bon, et ne transformer D3DTS_WORLD que lorsqu'un mesh doit bouger.
Je vais donc regarder ce que tu m'as indiqué, Galmiza, pour effectuer la conversion sur les coordonnées de chaque vertice (merci pour la précision, je suis allé un peu vite!).
<endl></endl>