#1 

10-06-2010 12:38:08

yellowdude
Membres
Date d'inscription:
Messages: 17
IP: 82.225.231.81
Courriel

Bonjour bonjour, (et oui encore moi ^^)

Je souhaite que ma camera ne puisse pas passer sous le plan (du moins a travers du plan ^^).
J'ai lu le tutoriel http://irrlicht.sourceforge.net/docu/example007.html mais j'avoue ne pas vraiment avoir compris leur code.

Je sais qu'il faut que je creer un node pour la camera, et un autre pour l'objet (plan dans mon cas).
Ensuite qu'il ne faut pas qu'il se collisionne.. mais je ne sais pas vraiment comment :S

Je suis un peu perdu je dois avouer :s...

Si une bonne ame veut bien m'aider smile

Merci d'avance!


Hors ligne


#2 

11-06-2010 11:28:59

nabouill
Membres
Avatar de nabouill
Date d'inscription:
Messages: 242
IP: 82.127.58.127
Courriel

salut, je ne voudrais pas te faire tout le code, mais c'est vrai qu'un exemple est souvent plus parlant.
Je vais donc te montrer un exemple d'une camera FPS qui collisione avec un plan:

Code c++ :


    //creation d'une camera FPS
    ICameraSceneNode* myCamera = sceneMgr->addCameraSceneNodeFPS(0, 100.0f, 0.02f, -1, keyMap, 4, false, 2.5f);
    myCamera->setPosition(vector3df(0,20,0));

    //creation d'un plan
    IAnimatedMeshSceneNode *myPlan = sceneMgr->addAnimatedMeshSceneNode(sceneMgr->getMesh("plan.3ds"));

    //creation d'un selecteur de triangle, il va "enregistré" les triangle de mon sceneNode
    ITriangleSelector * selecto = sceneMgr->createTriangleSelector(((scene::IAnimatedMeshSceneNode*)myPlan)->getMesh(), myPlan);

    //creation d'un animateur qui va gérer les collisions
    ISceneNodeAnimatorCollisionResponse *MyAnim = sceneMgr->createCollisionResponseAnimator(
                 selecto, //world
                 myCamera,//sceneNode
                 vector3df(1,1,1), //ellipsoidRadius
                 vector3df(0.0,-9.8,0.0),//gravity
                 vector3df(1,1,1));//ellipsoidTranslation
    //on applique cette animateur a notre camera
    myCamera->addAnimator(MyAnim);

    //on supprime les objets qui ne sont plus utilisé
    selecto->drop();
    MyAnim->drop();



Voici un petit exemple, en espérant qu'il t'aide a mieux comprendre

Bon courage

Hors ligne


#3 

15-06-2010 12:21:24

yellowdude
Membres
Date d'inscription:
Messages: 17
IP: 82.225.231.81
Courriel

Hehe tout d'abord merci smile

Ton code marche tres bien, mais c'est vrai que du coup, ma camera tombe sad
Je vais voir si je peux trouver ca qq part.. ^^

[Edit]

C'est bon j'ai trouve ^^ hehe c'est pas mal du tout tout ca tongue


Hors ligne


#4 

15-06-2010 18:03:49

ramis
Membres
Date d'inscription:
Messages: 92
IP: 109.210.108.130
Courriel

faut quand même noter que ca utilise les fonctions internes à Irrlicht, que c'est pas vraiment subtil et que ca ne remplace évidemment pas un moteur physique =o De plus, il me semble que ca plombe pas mal le nombre de fps. Personnellement, j'en vois très vite les limites ... Après, c'est évidemment le plus simple.

Hors ligne


#5 

16-06-2010 11:45:58

yellowdude
Membres
Date d'inscription:
Messages: 17
IP: 88.169.253.22
Courriel

Cela me suffit pour ce que je souhaite faire smile

Encore merci ^^


Hors ligne


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
141 invités en ligne
membre en ligne: -
RSS Feed