Moteur physique : soft body (corps deformable, masse-ressort, avec l'integration d'euler :s)

Description

Pour commencer c'est coder en VC++ 7 en vu de passage au VC++ 7.1...
La screen affiche fps 9 c'est parce que j'ai une TNT 2 et en plus j'ai pas les bon driver ...

Bon voilà c'est un debut pour un moteur physique ici ca gère pas grand chose ... A part les soft body les corps deformables ... Et bien là c'est une simple implementation avec les springs-masses mais le problème c'est je gères ca avec l'integration de euler et vous connaissez le truc a coup d'approximation ca foire... Vous verrez dans la source vous avez 2 exemples 2 testes
-test 1 : 2 cubes subissant la graviter et un cube bloqué en l'air a cause d'un sommet static ...
-test 2 : un mesh charger un fichier ASE il y a 2 types de generation de ressort lisez les commentaires ...
^ il faut jouer avec les commentaires pour les 2 tests ^

Normalement les classes sont commenter a moins que j'ai oublié mais si ce n'est pas le cas demander ... mais en general les noms sont assez explicite ...

Voilà des corps deformables ...

Source / Exemple :


/* ------------------------------------------------------------------------

  • TEST 2 : chargement d'un objet ASE voir plus bas pour la methode utiliser pour la
  • generation des ressorts.
* *
  • ------------------------------------------------------------------------ */
ArrayVertex ArrV; // tableau de vertice ArrayPolygone ArrPl; // tableau de polygone ArrayParticule ArrP; // tableau de particule ArraySpring ArrS; // tableau de ressort SoftBody SB; // corps deformable BoundingBox bbx0; // boite englobante ASELoader obj("skone.ASE"); // le fichier ASE obj.Load(10, 5); // charger en divisant par 10 et en surelevant de 5 ArrV = obj.GetVertexArray(); // recuperer le tableau de vertice ArrPl = obj.GetPolygoneArray(); // recuperer le tableau de polygone ArrP.SetArray(ArrV, 200); // Affecter le tableau particule avec le tableau de vertice avec une masse totale de 200 // ---------------- //ArrS.GenerateSpring_bone(ArrV, ArrPl); // une arrete = un ressort ArrS.GenerateAllSpring(ArrV); // relier tous les vertex entre eux pour faire des ressorts // ---------------- SB.SetArrayParticule(ArrP); // affecter le tableau de particule au corps deformable SB.SetArrayPolygone(ArrPl); // affecter le tableau de polygone au corps deformable SB.SetArraySpring(ArrS); // affecter le tableau de resort au corps deformable ArrSB.BeginSoftBody(); // commencer laffectation du tableau de corps deformable ArrSB.CreateSoftBody(SB); // cree ArrSB.EndSoftBody(); // finir bbx0.Include(ArrV); // dimenssionner la boite englobante avec le tableau de vertice

Conclusion :


BUG :
TEST 1 : Avec le premier test quand un cubes tombe par terre et commence a ce stabilise il ce met a tourner tout seul.
TEST 2 : Des que le mesh touche le sol il vibre un peu tremblouille et le système s'effondre ...
CORRECTION A VENIR :
dire aurevoir a euler et bienvenu a Runge-Kutta RK4 ...

Ah oui j'oubliais c'est qu'une infime parti du projet il y a un moteur graphique et des outils aussi qui sont en train d'etre coder en tout on est 3 dans le projet ... Et comme c'est un assez gros projet on a toujours besoin de coder on sait jamais si vous êtes interessez pour nous donner un coup de main on est toujours preneur vous pouvez m'ecrire en PV ou sur mon eMail SKone007@hotmail.com ca fait aussi MSN si vous voulez ...

Merci et je comptes sur la communauter pour toute critique constructive sur l'agencement du moteur la manière de coder enfin tout ...

Codes Sources

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.