IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

ODE Discussion :

Débutant : mon cube ne rebondi pas correctement du tout !


Sujet :

ODE

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    430
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 430
    Points : 93
    Points
    93
    Par défaut Débutant : mon cube ne rebondi pas correctement du tout !
    Bonjour, j'ai déjà travaillé avec Newton et j'aimerais passer à ODE, mais mes premiers essai ne sont pas vraiment concluant, voila mon code:
    Initialisation:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    	world=dWorldCreate();
    	dWorldSetGravity(world, 0.0f, -9.81f, 0.0f);
    	Space = dHashSpaceCreate(0);
     
     
    	sol = dCreatePlane (Space,0,1,0,0); // on crée le sol
     
    	dMass m;
     
    	// le cube
    	dMassSetBox (&m,1,1,1,1);
    	dMassAdjust(&m,10.2);
     
    	bodycube = dBodyCreate(world); // on crée le cube dans notre monde
    	dBodySetMass(bodycube,&m); //
    	geomcube = dCreateBox(Space,5,10,5);
    	dGeomSetBody(geomcube,bodycube);
    	dGeomSetPosition(geomcube,0,30,0);
    	//
    Boucle:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    	dSpaceCollide(Space,0,&nearCallback); // teste les collisions entre les objets
    	dWorldQuickStep(world,0.04); // a chaque frame, calcule la nouvelle position des objets
    Et voila le résultat: Sur youtube

    Bon j'ai attaché ça à un personnage car je n'avais que ça sous la main pour tester mais c'est un cube, du moins un parallélépipède.
    Est-ce que j'ai oublié quelque chose parceque il rebondi toujours et sa rotation accélère alors qu'il ne touche pas le sol, c'est assez bisare.

    Merci d'avance.

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    430
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 430
    Points : 93
    Points
    93
    Par défaut
    J'ouliais la callback:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    static void nearCallback(void *data, dGeomID o1, dGeomID o2)
    {
    	int i;
    	// exit without doing anything if the two bodies are connected by a joint
    	dBodyID b1 = dGeomGetBody(o1);
    	dBodyID b2 = dGeomGetBody(o2);
    	if (b1 && b2 && dAreConnected (b1,b2))
    		return;
     
    	dContact contact[3]; // up to 3 contacts per box
    	for (i=0; i<3; i++)
    	{
    		contact[i].surface.mode = dContactSoftCFM | dContactApprox1;
    		contact[i].surface.mu = 30;
    		contact[i].surface.soft_cfm = 0.2;
    	}
    	if ( !dGeomGetBody(o1) & !dGeomGetBody(o2))
    		;
    	else if (int numc = dCollide(o1,o2,3,&contact[0].geom,sizeof(dContact)))
    	{
    		for (i=0; i<numc; i++)
    		{
    			dJointID c = dJointCreateContact (world,contactgroup,contact+i);
    			dJointAttach (c,b1,b2);
    		}
    	}
    }

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    430
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 430
    Points : 93
    Points
    93
    Par défaut
    Au temps pour moi, j'avais oublié de mettre dJointGroupEmpty apres dWorldQuickStep.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. mon Sniffer ne sniffe pas correctement
    Par yashiro dans le forum Réseau
    Réponses: 0
    Dernier message: 13/04/2008, 15h43
  2. [débutant]Mon programme ne termine pas
    Par ThreeQuarks dans le forum Caml
    Réponses: 13
    Dernier message: 24/08/2007, 15h13
  3. [MySQL] Mon code ne fonctionne pas correctement
    Par bebas dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 24/02/2007, 13h27
  4. Mon clonage n'est pas correct ?
    Par elitost dans le forum Langage
    Réponses: 6
    Dernier message: 21/03/2006, 14h38
  5. [IB71] mon Blob ne marche pas correctement
    Par BoeufBrocoli dans le forum InterBase
    Réponses: 2
    Dernier message: 17/09/2003, 14h03

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo