URGENT ! DirectX

| - BLAFARD - | - 29 juil. 2001 à 19:58
Lord_Patoche Messages postés 196 Date d'inscription mercredi 6 août 2003 Statut Membre Dernière intervention 1 mai 2009 - 22 mars 2007 à 22:13
Comment faire pour transformer un Mesh dans DirectX:
Comment faire en sorte pour qu'il bougent separement du reste de la scene ???

4 réponses

Lord_Patoche Messages postés 196 Date d'inscription mercredi 6 août 2003 Statut Membre Dernière intervention 1 mai 2009 3
17 oct. 2003 à 00:55
8-) Il ne faut pas utiliser pour cela les transformations de matrice. Il te faut effectuer des translations et rotations de tous les points de ton mesh. Pour cela, tu n'est pas obligé de bouger ton mesh en calculant la position de chaque point ça serait un peu galère. Il faut en fait enregistrezr ton mesh sous les diverses positions que tu veux lui faire adopter, et créer un programme qui calculera chaque position de point à un instant T entre deux positions de ton MESH. Par exemple, si tu as un mesh représentant un personnage et que tu souhaite lui faire avancer une jambe, enregistre dans un premier fichier .X le bonhomme à l'arrêt, et dans un second le bonhomme avec la jambe avancée au maximum que tu le souhaite. Ensuite, dans ton programme, effectue une boucle pour que chacun des points du MESH du bonhomme à l'arrêt arrivent au final au bonhomme avec la jambe avancée au maximum en demandant à directX de redessiner chacun des points du MESH à des instants que tu défini augmentant ainsi plus ou moins la vitesse des déplacements entre les deux positions. Tu peux aussi créer un sous programme chargé de calculer la position de ces points, de les enregistrer, puis de les représernter au programme principal te permettant ainsi de ne pas avoir à conserver toutes les positions de ton MESH.
Pour plus d'info va voir le Site DirectX4VB, c'est là que j'ai trouvé ce système d'animation de MESH dans la leçon 10 ou 11 du Tutorial DirectX8. C'est en anglais, mais il y a des exemples.
Bon courage
0
diiplayer Messages postés 64 Date d'inscription mardi 28 septembre 2004 Statut Membre Dernière intervention 24 octobre 2007
19 mars 2007 à 01:04
Heum, LaPatoshe, Bien que ta réponse soit remplie d'information intéressante. Il persiste un mystère pour moi, comment bougé le mesh? donc le faire passé du point A au point B (sans parlé d'animation, simplement le déplacé.) On ne doit surment pas refaire un .X pour chaque déplacement ... Si l'on considère qu'un ennemi te suit pour t'attacké, et que ta trajectoire est aléatoire (ou du moin indéterminable pour les programmeurs), il serais illusoire de croire que l'on crée un fichier .X pouvant répondre a toute les possibilité, puis en meme temps en généré un en runtime demanderais sans doute trop de ressource CPU. Donc je te demande si il y a pas moyen de simplement déplacé un mesh sur la scene :)

Dii-Player
0
diiplayer Messages postés 64 Date d'inscription mardi 28 septembre 2004 Statut Membre Dernière intervention 24 octobre 2007
19 mars 2007 à 01:16
J'ai vu dans un post que je vient de lire (apres avoir posté le message juste en haut) qu'il faut déplacé le monde au complet, puis apres on place notre mesh 1, puis on redeplace le monde, et place le mesh 2 :

Do
Transformation de la matrice
Mesh1.drawsubset(X)
transformation de la matrice
Mesh2.drawsubset(Y)
Loop

Mais il me semble que sa demanderais beaucoup de calcul au cpu : / Microsoft ont surment implémenté une autre technique ... non? :'(   mon pauvre ordinateur va mourir!

Dii-Player
0
Lord_Patoche Messages postés 196 Date d'inscription mercredi 6 août 2003 Statut Membre Dernière intervention 1 mai 2009 3
22 mars 2007 à 22:13
Bonsoir. Désolé je viens de voir le message que récemment. Il y a longtemps que j'ai écrit ces lignes de tuto, mais je me souviens qu'à l'époque, mon ordinateur était un Duron arrivait sans trop de problème à réaliser le déplacement du mesh point par point. Mieux encore avec une Carte Graphique 3D.
Je ne connais pas d'autre moyen d'effectuer ces déplacements, je n'ai pour l'heure pas été plus loin dans l'apprentissage de DirectX.

LaPatoshe
0
Rejoignez-nous