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

PhysX et APEX Discussion :

Problème de collisions personnage - acteurs


Sujet :

PhysX et APEX

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Février 2007
    Messages : 4
    Points : 2
    Points
    2
    Par défaut Problème de collisions personnage - acteurs
    Bonjour tout le monde,

    je suis en train de travailler sur un "FPS" EN 3D (si on peut dire FPS).

    Je veux utiliser physX by ageia pour gerer toutes mes collisions et mon personnages.

    J`ai compris comment marcher les collisions et tout et tout

    mais lorsque je cree un NxController (un personnage) de type capsule par preference. aucune collisions avec le personnages et les acteurs ne se produit. si quelq`un connaissait un brin le SDK pourrait-il m`aider ou encore mieux me donner le code minimale

    merci par avance.

    Je sais pas si sa va bien dans c++mais bon vu que je programme en c++.

  2. #2
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Points : 15 920
    Points
    15 920
    Par défaut
    Tu peux nous montrer les parties importantes de ton code ? Qu'on puisse voir ce que tu aurais pu faire comme erreur ou comme oubli ?

    PS : précise aussi la version de PhysX que tu utilises, ça peut avoir son importance

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Février 2007
    Messages : 4
    Points : 2
    Points
    2
    Par défaut
    Alors voila mon code minimale sur ke SDK 2.7:

    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
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    void init()
    {
    	m_PhysicsSDK = NxCreatePhysicsSDK(NX_PHYSICS_SDK_VERSION);
        if (!m_PhysicsSDK)  return;
     
    	// Set the physics parameters
    	m_PhysicsSDK->setParameter(NX_SKIN_WIDTH, 0.05f);
     
    	NxSceneDesc sceneDesc;
        sceneDesc.gravity = m_DefaultGravity;
        m_scene = m_PhysicsSDK->createScene(sceneDesc);	
    	if(!m_scene)
    	{ 
    		sceneDesc.simType				= NX_SIMULATION_SW; 
    		m_scene = m_PhysicsSDK->createScene(sceneDesc);  
    		if(!m_scene) return;
    	}
     
    	/*create plane*/
    	NxPlaneShapeDesc planeDesc;
    	planeDesc.normal = NxVec3(0,1,0);
    	planeDesc.localPose.t = NxVec3(0,0,0);
    	planeDesc.group = GROUP_COLLIDABLE_NON_PUSHABLE;
    	planeDesc.normal = NxVec3(0,1,0);
     
    	NxActorDesc descPLane;
    	descPLane.shapes.push_back(&planeDesc);
    	descPLane.body = NULL;
     
    	plane = m_scene->createActor(descPLane);
    	plane->setGroup(GROUP_COLLIDABLE_NON_PUSHABLE);
     
    	NxShape*const* shapes = plane->getShapes();
        NxU32 nShapes = plane->getNbShapes();
        while (nShapes--)
        {
            shapes[nShapes]->setGroup(GROUP_COLLIDABLE_NON_PUSHABLE);
    	}
     
    	/*create controller*/
    	NxCapsuleControllerDesc ctrldesc;
    	ctrldesc.position.x		= 0.0f;
    	ctrldesc.position.y		= 20.0f;
    	ctrldesc.position.z		= 0.0f;
    	ctrldesc.radius			= 1.0f;
    	ctrldesc.height			= 2.0f;
    	ctrldesc.upDirection	= NX_Y;
     
    	ctrldesc.slopeLimit		= 45;
    	ctrldesc.skinWidth		= 0.05f;
    	ctrldesc.stepOffset		= 0.5;
    	ctrldesc.stepOffset		= 1.0f * 0.5;
     
    	ctrldesc.callback		= &gControllerHitReport;
     
    	m_controller = gCM.createController(m_scene, ctrldesc);
    }
     
    void loop()
    {
    	static float time = 0.0f;
    	time+=0.0001f;
    	NxVec3 d = m_DefaultGravity*time*-1;
    	NxU32 collisionFlags;
     
    	int h = plane->getGroup();
     
    	m_controller->move(d, GROUP_COLLIDABLE_NON_PUSHABLE, 0.000001f, collisionFlags, 0.2f);
     
    	std::cout<<(float)(m_controller->getFilteredPosition().x)<<" "<<(float)(m_controller->getFilteredPosition().y)<<" "<<
    		(float)(m_controller->getFilteredPosition().z)<<" "<<std::endl;
     
    	NxVec3 test = m_controller->getActor()->getGlobalPose().t;
    	int t = m_controller->getActor()->getGroup();
     
    	if(collisionFlags)
    	{
    		int a  =5;
    	}
     
    	m_scene->simulate(time);
    	m_scene->flushStream();
    	m_scene->fetchResults(NX_RIGID_BODY_FINISHED, true);
     
     
    	gCM.updateControllers();
    }
     
    class ControllerHitReport : public NxUserControllerHitReport
    {
    /*est appele lors de la collisiosn avec un objet mais justement elle est pas appeler*/
    /*plein de trucs dedans*/
    };
    pas d`erreur lors de l`execution a part mon personnage qui traverse mon plan.

  4. #4
    Candidat au Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Février 2007
    Messages : 4
    Points : 2
    Points
    2
    Par défaut
    Je pense que tout est bon au niveau de mon init.
    il doit y avoir un probleme dans ma loop (elle parait presque trop facile).

    Le fait d`utiliser un plan "statique" (pas de "body") n`est pas un probleme je suppose???

    Toute aide meme ephemere est le bienvenue.

Discussions similaires

  1. problème de collision
    Par minnit_s dans le forum PhysX et APEX
    Réponses: 5
    Dernier message: 17/11/2008, 17h46
  2. Problême duplication collision AS2
    Par laipreu dans le forum ActionScript 1 & ActionScript 2
    Réponses: 1
    Dernier message: 04/09/2007, 10h01
  3. problème de collision sur objet en rotation
    Par filiplj dans le forum ODE
    Réponses: 2
    Dernier message: 21/08/2007, 16h00
  4. Problème de "collision" avec un "EDIT"
    Par Darkenshin dans le forum Windows
    Réponses: 2
    Dernier message: 31/05/2007, 13h21
  5. Problème de collision en 2D
    Par Clad3 dans le forum Physique
    Réponses: 3
    Dernier message: 26/05/2006, 00h18

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