Historique des modifications - Message

Message #10530

Sujet: Objets destructibles avec Newton


Type Date Auteur Contenu
Dernière modification 14-06-2012 17:25:12 Gehogor
Ouaip tout à fait mon très cher Tmyke, et ensuite il faut ré-implémenter des méthodes callback de Newton pour que les body, qui doivent être lié à des NewtonCollision, puissent subir les effets de la physique.

La méthode ci-dessous est appelée par Newton, la position récupérée te permettra de mettre à jour la position de tes 3D:
void GrNewton::SetMeshTransformMesh(const NewtonBody* body,const float* matrix,int threadIndex)
{
    // body Le pointeur du body pour connaitre l'objet qui doit être déplacé.
    // matrix La nouvelle position calculée pour l=ce même body.
}

Et Enfin la méthode suivante est applée par Newton avant le process de calcul, on y créé des forces et couples qui agiront sur un body:
void GrNewton::ApplyForceAndTorqueEvent(const NewtonBody* body,dFloat timestep,int threadIndex)
{
        float mass,Ixx,Iyy,Izz,force[3],torque[3];
        NewtonBodyGetMassMatrix (body, &mass, &Ixx, &Iyy, &Izz);

        force[0] = 0.0f;
        force[2] = 0.0f;
        force[1] = GrConstants::GRAVITY * mass;

        torque[0] = 0.0f;
        torque[2] = 0.0f;
        torque[1] = 0.0f;

        NewtonBodyAddForce(body, force);
        NewtonBodyAddTorque(body, torque);
}

Les z et y sont inversés tout comme Irrlicht pour les mêmes raisons historiques des premiers jeux vidéo 2D plan XY.
Création du message 14-06-2012 17:24:34 Gehogor
Ouaip tout à fait mon très cher Tmyke, et ensuite il faut ré-implémenter des méthodes callback de Newton pour que les body, qui doivent être lié à des NewtonCollision, puissent subir les effets de la physique.

La méthode ci-dessous est appelée par Newton, la position récupérée te permettra de mettre à jour la position de tes 3D:
void GrNewton::SetMeshTransformMesh(const NewtonBody* body,const float* matrix,int threadIndex)
{
    // body Le pointeur du body pour connaitre l'objet qui doit être déplacé.
    // matrix La nouvelle position calculée pour l=ce même body.
}

Et Enfin la méthode suivante est applée par Newton avant le process de calcul, on y créé des forces et couples qui agiront sur un body:
void GrNewton::ApplyForceAndTorqueEvent(const NewtonBody* body,dFloat timestep,int threadIndex)
{
        float mass,Ixx,Iyy,Izz,force[3],torque[3];
        NewtonBodyGetMassMatrix (body, &mass, &Ixx, &Iyy, &Izz);

        force[0] = 0.0f;
        force[2] = 0.0f;
        force[1] = GrConstants::GRAVITY * mass;

        torque[0] = 0.0f;
        torque[2] = 0.0f;
        torque[1] = 0.0f;

        NewtonBodyAddForce(body, force);
        NewtonBodyAddTorque(body, torque);
}

Les z et y sont inversés tout comme Irrlicht pour les mêmes raisons historiques des premiers jeux vidéo 2D plan XY.

Retour

Options Liens officiels Caractéristiques Statistiques Communauté
Préférences cookies
Corrections
irrlicht
irrklang
irredit
irrxml
Propulsé par Django
xhtml 1.0
css 2.1
884 membres
1440 sujets
11337 messages
Dernier membre inscrit: Saidov17
215 invités en ligne
membre en ligne: -
RSS Feed