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

Physique Discussion :

Joint disable Collision


Sujet :

Physique

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 23
    Points : 13
    Points
    13
    Par défaut Joint disable Collision
    Bonjour à tous,

    J'ai un avec les collisions :
    Lorsque 2 objets se rencontrent je crée un Joint .
    Le problème c'est qu'après, les collisions uniquement entre objets liés ne sont plus prises en compte, les Shapes peuvent se chevaucher !

    C'est peut être un problème d'épaisseur ... est-ce que la distance minimale d'un Joint (Distance Joint par ex.), si elle est inférieure au rayon d'une Shape(sphere) peut désactiver qlqchose ?

    voilà, si vous avez une idée...
    merci

  2. #2
    Rédacteur
    Avatar de bafman
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    2 574
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2003
    Messages : 2 574
    Points : 5 323
    Points
    5 323
    Par défaut
    mmm... sans info sur quelle API tu utilise, on ne a pas vraiment pouvoir t'aider
    * Il est infiniment plus simple de faire rapidement un code qui marche que de faire un code rapide qui marche
    * pour faciliter les recherches, n'oubliez pas de voter pour les réponses pertinentes
    Mes articles

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 23
    Points : 13
    Points
    13
    Par défaut PhysX
    J'ai mis un lien vers le forum de physx, sur l'émoticon ...on risquait pas de l'voir

    Donc, j'utilise Physx (2.8.1) sous VisualC++...

  4. #4
    Membre régulier
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2008
    Messages
    60
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2008
    Messages : 60
    Points : 74
    Points
    74
    Par défaut
    je suis pas sur mais essaye ca au cas ou:
    actor->setContactReportFlags(NX_NOTIFY_ALL);

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 23
    Points : 13
    Points
    13
    Par défaut setContactReportFlags(NX_NOTIFY_ALL)
    ...apparement NX_NOTIFY_ALL ne change rien.
    Que je l'applique à une paire d'actor en collision ou à l'ensemble, les Shape se chevauchent tjrs

  6. #6
    Membre régulier
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2008
    Messages
    60
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2008
    Messages : 60
    Points : 74
    Points
    74
    Par défaut au risque de dire une betise :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    actor->setGroup(currentgroup);
    actor->setContactReportFlags(NX_NOTIFY_ALL);
    actor->setContactReportThreshold(0.001);
    Scene->setActorGroupPairFlags(currentgroup,currentgroup,NX_NOTIFY_ON_START_TOUCH);


    fin essaye ,,le hic c est que je sait pas si les réponse au collision de physx sont basées sur La notification des collision

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 23
    Points : 13
    Points
    13
    Par défaut Pareil!
    Même en groupant ça ne marche pas

    Penses-tu que ça puisse intèférer avec la fonction de collision ?:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    class MyContactReport : public NxUserContactReport
    {
    public:
    virtual void onContactNotify(NxContactPair& pair, NxU32 events)
    {
    gNbReports++;
    ...
    bool yetAB = checkCONNECTABILITY( pair.actors[0], pair.actors[1] );//pair, oA, oB );
    if( yetAB == false )
    {
    geneJOINT( jDISTANCE, pair.actors[0], pair.actors[1], 3.0f, 4.0f); 
    }
    }
    }

  8. #8
    Membre régulier
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2008
    Messages
    60
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2008
    Messages : 60
    Points : 74
    Points
    74
    Par défaut
    ca y est j ai trouvé,,,il me semblai bien que je me plantai quelque part,,,en regardant mon code ,je t ai juste montré le bout de code qui servait a groupé mes objet pour le rapport des collision ^^
    en fait c est a la declaration du joint,,,dans les flags tu doit mettre

    NX_JF_COLLISION_ENABLED

    ouf me semblai bien que c etait tout con ^^
    normalement ca doit marché

  9. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 23
    Points : 13
    Points
    13
    Par défaut Alors là ?
    J'ai bien essayé mais tjrs rien... je dois surement mal déclarer le Joint:

    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
    28
    29
    30
     
    void geneJOINT( Struct o, NxActor *A, NxActor *B )
    {
     
    //------- POS & AXIS
    NxVec3 pA = A->getGlobalPosition();
    NxVec3 pB = B->getGlobalPosition();
    NxVec3 gAx(0,0,1);
    NxVec3 gAnch((pA.x+pB.x)/2, (pA.y+pB.y)/2, (pA.z+pB.z)/2);
    NxDistanceJointDesc d1;    
     
    //---Basic descritpion
    d1.setToDefault();
    d1.actor[0] = A;    
    d1.actor[1] = B;  
     
    //---GLOBAL HANCHOR
     d1.setGlobalAnchor(pA);//globalAnchor);
    d1.setGlobalAxis(gAx);
     
    //---FLAGS
    d1.flags = NX_JF_COLLISION_ENABLED | NX_DJF_MIN_DISTANCE_ENABLED | NX_DJF_MAX_DISTANCE_ENABLED | NX_DJF_SPRING_ENABLED ;
     
     
    d1.localAnchor[0].zero();
    d1.localAnchor[1].zero();
     
     
    NxJoint * m = gScene->createJoint(d1);
    m->userData = o;
    Qu'en dis-tu ?

  10. #10
    Membre régulier
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2008
    Messages
    60
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2008
    Messages : 60
    Points : 74
    Points
    74
    Par défaut
    j ai trouvé ca dans la doc de physx,,,,
    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
     
    NxDistanceJointDesc distDesc;    
     
    distDesc.actor[0] = actor0;    
    distDesc.actor[1] = actor1;    
     
    distDesc.localAnchor[0]=NxVec(0.0f,1.0f,0.0f);
    distDesc.localAnchor[1]=NxVec(1.0f,0.0f,0.0f); 
     
    distDesc.maxDistance=10.0f;
    distDesc.minDistance=10.0f; 
     
    distDesc.flags=NX_DJF_MIN_DISTANCE_ENABLED|NX_DJF_MAX_DISTANCE_ENABLED;
     
    NxDistanceJoint* distJoint=(NxDistanceJoint*)gScene->createJoint(distDesc);

Discussions similaires

  1. algorithme de collision 3D
    Par chetropinchuste dans le forum Algorithmes et structures de données
    Réponses: 3
    Dernier message: 14/02/2010, 13h16
  2. [java3D][collision]
    Par geofun dans le forum 3D
    Réponses: 7
    Dernier message: 12/02/2007, 14h49
  3. Couleur d'une JComboBox disabled
    Par ced dans le forum Composants
    Réponses: 6
    Dernier message: 06/01/2004, 15h33
  4. Indy - email, html et piece jointe
    Par nut62 dans le forum Web & réseau
    Réponses: 3
    Dernier message: 13/12/2002, 10h25
  5. test collisions
    Par tatakinawa dans le forum OpenGL
    Réponses: 5
    Dernier message: 08/06/2002, 06h03

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