begin process at 2012 05 27 18:48:37
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Maths & Algorithmes

 > MOTEUR PHYSIQUE : SOFT BODY (CORPS DEFORMABLE, MASSE-RESSORT, AVEC L'INTEGRATION D'EULER :S)

MOTEUR PHYSIQUE : SOFT BODY (CORPS DEFORMABLE, MASSE-RESSORT, AVEC L'INTEGRATION D'EULER :S)


 Information sur la source

Note :
8 / 10 - par 1 personne
8,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Maths & Algorithmes Classé sous :moteur, physique Niveau :Initié Date de création :01/08/2005 Vu / téléchargé :9 003 / 594

Auteur : skone007

Ecrire un message privé
Commentaire sur cette source (15)
Ajouter un commentaire et/ou une note

 Description

Cliquez pour voir la capture en taille normale
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

  • /* ------------------------------------------------------------------------
  • * 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
/* ------------------------------------------------------------------------
 * 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 ...

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Sources du même auteur

Source avec Zip Source avec une capture RÉSOLUTION NUMERIQUE
Source avec Zip Source avec une capture DECALER L'ENCODAGE D'UN BMP
CONVERTIR MINUSCULE EN MAJUSCULE ET INVERSSEMENT SANS "STRIN...
Source avec Zip ALGORITHME DU JEU DE DAME + AI
Source avec Zip MORPION + AI (EXPERT)

 Sources de la même categorie

Source avec Zip UN EXAMPLE D'APPLICATION EN CUDA DE L'ALGORITHME DE SCAN POU... par oguzaras
Source avec Zip Source avec une capture CHIFFREMENT DE VIGENERE par lajouad
Source avec Zip Source avec une capture ANALYSE SYNTAXIQUE par lajouad
Source avec Zip Source avec une capture STRUCTURE D'UNE MATRICE PAR LES LISTE LINÉAIRE (NON CONTUGUS... par benzarabel
Source avec Zip Source avec une capture DESSINER UNE ARBRE BINAIRE( MODE CONSOLE): par benzarabel

 Sources en rapport avec celle ci

Source avec Zip Source avec une capture RÉSOLUTION NUMERIQUE par skone007
SYSTEM EXPERT par kadermissoum
Source avec une capture OPENGL - JEU DE BILLARD EN 3D PAS FINI par acx01b
Source avec Zip Source avec une capture SIMULANCE, UN SIMULATEUR DE LANCÉ D'OBJETS par ndubien
Source avec Zip MARSCONQUEROR : SIMULATION DE LA TRAJECTOIRE D'UNE SONDE DAN... par CodeStaler

Commentaires et avis

Commentaire de max12 le 02/08/2005 03:02:17 administrateur CS

C'est cool que tu l'ai déposé. Ça c'est ce que j'appelle de la bonne description, c'est le bon exemple. Concernant le code du moteur j'ai pas d'opinion pour l'instant faudra que je m'y remettre au C. Mais j'ai l'impression qu'il va attirer de nombreux connaisseurs.

A+ ...

Commentaire de shenron666 le 02/08/2005 15:03:47

Pas de problème à la compilation mais effectivement quelques soucis de fonctionnement
par contre, niveau POO ça a l'air bien fait
même avis que max12, c'est cool de l'avoir déposé

Commentaire de skone007 le 04/08/2005 14:59:25

Merci mais aparament tout le monde s'en fou de ma source que j'ai coder avec amour lol bon j'y retourne parce que le moteur est loin d'être fini et merci les 2 a avoir ecrit ;) ;) :( :(

Commentaire de luhtor le 06/08/2005 11:11:06

Pour Runge Kutta, il existe aussi un euler amélioré (d'ordre 2) qui a l'air d'etre efficace. Autre nom: méthode de Heun. Le calcul a l'air moins lourd pour une précision très correct. A voir donc.

Commentaire de skone007 le 06/08/2005 22:05:30

Ouaih je connais mais apparament seul La meilleur methode semble être Runge-Kutta d'ordre 4 RK4 ou 6 apres on vera ...

Commentaire de MuPuF le 25/09/2005 23:15:35

Skone007 si on répond pas sur ce genre de source c'est car parler de math fais peur :S .
Vous codez ça pour un jeu ou pour en faire un autre moteur "concurent" a irrlicht ou ogre ?
De toute facon plus ya de choix mieux c'est, bonne chance !, et je m'en vais en courant pour eviter les appels a l'aide mdr ... :d

Commentaire de skone007 le 06/10/2005 11:35:56

Les maths et la prog ca va ensemble !!!
Et faire concurence heu tout coder l'espères

Commentaire de MuPuF le 06/10/2005 19:18:27

hmm hmm, c'est un cas rare le coups de l'association math + prog (si tu appelles math les incrémentations ben pas moi :-D)
En fait les math servent en programmation 3D, et moteur physique sinon c'est que des équations du premier degres donc tres simple et dans le cas de la prog 3D ou meme moteur physique je dirais plutot que c'est de la physique car calculer des forces pour moi c'est de la physique pas des math et vus que ya des arrondis partout alors math pas contant physique oui donc c'est de la physique et pas des math !!!! (quelle demo de fou mdr).

Bon j'arrete ma connerie good luck and keep us in touch

Commentaire de shenron666 le 06/10/2005 23:34:31

Sauf que pour résoudre des équations physiques tu te sert des maths donc si tu calcules des forces tu fais des maths (la division physique je connais pas, la division mathématique oui)

Commentaire de skone007 le 08/10/2005 14:37:08

La prog c'est quoi c'est avant tout faire de beau algo non ? Et bien ca c'est des maths dans l'optimisation on peut même y ajouter la theorie des graphs et quelque soit le projet y a toujours des maths un bon mathematicien est un bon programmeur alors que l'inversse n'est pas toujours vrai ... Donc les maths c'est la clef de tout :p

Enfin c'est qu'un avis ...

Commentaire de nightlord666 le 25/03/2006 21:36:48

Dans Include.h
--> #define zap(x) do { delete(x); x = NULL; } while (0)

Quel est l'interet du do...while(0) ?? J'ai beau chercher, mais je ne trouve pas...

Commentaire de skone007 le 02/04/2006 17:28:35

Pour mettre en bloc et faire qu'une seul fois...
Pour être plus precis je sais pas c'est un code copier coller sur la protection des pointeurs...

Commentaire de nightlord666 le 02/04/2006 19:54:03

Normalement tu peut mettre :

#define zap(x) delete(x);x=NULL;

Ca evite de faire un test.

Commentaire de skone007 le 02/04/2006 23:50:55

Mais comme là on joue avec des constantes tout ce fait a la compilation et d'ailleur je crois même que le compilateur fera ca de lui même. Peut allegé la compilation mais je sais pas fodrais que je demande a la personne qui a ecrit ce petit tuto je penses pas qu'elle est fait ca au hasard...

Commentaire de Menontona le 17/04/2006 21:03:11

Projet ambitieux et digne de ce nom, continué les gars. Si vous cherche des programmateurs contacté moi

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

Création d'un moteur physique pour un avion (3d) | comment calculer certaines forces [ par daneel17fr ] Bonjour,donc je voudrai développer un moteur 3d pour simuler le comportement d'un avion en l'air.il n'est pas (encore) question d'affichage 3d, mais j Moteur physique : détecter les collisions [ par noncommunique ] Bonjour !!Je suis en train de tenter de réaliser un moteur physique et j'ai le problème suivant : je ne sais pas comment faire pour détecter une évent Moteur physique [ par fred100582 ] Salut, je recherche de la doc sur les moteurs physiques, qq'un a-t-il une adresse en français à me donner car les sites que j'ai consult&#23 Moteur physique [ par Mofut3 ] Bonjour a tous , j'ai un projet de jeu à faire pour mon école et j'aimerais savoir si quelqu'un pourrait me donner des conseils pour demarre moteur [ par Mofut3 ] Bonjour a tous , j'ai un projet de jeu à faire pour mon école et j'aimerais savoir si quelqu'un pourrait me donner des conseils pour demarre Création d'un moteur 3D en partant de rien [ par poiuytrez3 ] Bonjour, je souhaiterai créer un petit moteur 3D le plus simple possible en partant de rien. Quelqu'un en a t il déjà fait un? Je ne so probleme physique [ par jhouria ] Quelqu un a t il deja essayer de modéliser l'oscillations couplées de N oscillateurs? Apparemment il faut utiliser Runge-Kutta à l'ordr [Physique] Rebond [ par ionstorm356 ] Salut tout le monde,je fais rebondir une balle sur un plan et j'aimerai que quand son coefficient de rebond est a 1 la balle ne perde pas d'energie et connaitre le numero physique d'un disque [ par snowline ] BONJOUR, JE VOUDRAIS SAVOIR SI QQU'UN SAIS OU PUIS JE TROUVER LA FONCTION DU KERNEL ME PERMETTANT DE RETOURNER LE NUM PHYSIQUE DU DISQUE.DE PLUS, JE R Aide physique de corps rigides [ par zerailkiller ] Bonjour, voila je suis actuellement étudiant en IUT info je fais du c et du c++ ( un peu d'opengl) et je voudrais écrire un ptit m


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,811 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales