Historique des modifications - Message

Message #10530

Sujet: Objets destructibles avec Newton


TypeDateAuteurContenu
Dernière modification14-06-2012 17:25:12Gehogor
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 message14-06-2012 17:24:34Gehogor
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

OptionsLiens officielsCaractéristiquesStatistiquesCommunauté
Préférences cookies
Corrections
irrlicht
irrklang
irredit
irrxml
Propulsé par Django
xhtml 1.0
css 2.1
884 membres
1441 sujets
11339 messages
Dernier membre inscrit: Saidov17
62 invités en ligne
membre en ligne: -
RSS Feed