#0 

10-06-2010 14:38:08

yellowdude
Membre
Date d'inscription: 07-04-2010
Messages: 17

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


#1 

11-06-2010 13:28:59

nabouill
Abonné
Date d'inscription: 17-09-2009
Messages: 242
Corrections: 1

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

Dernière modification par nabouill (11-06-2010 13:30:57)


mes sites: www.manga-vf.fr et www.series-vf.fr

Hors ligne


#2 

15-06-2010 14:21:24

yellowdude
Membre
Date d'inscription: 07-04-2010
Messages: 17

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

Dernière modification par yellowdude (15-06-2010 14:45:38)

Hors ligne


#3 

15-06-2010 20:03:49

ramis
Membre
Date d'inscription: 27-10-2008
Messages: 92

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


#4 

16-06-2010 13:45:58

yellowdude
Membre
Date d'inscription: 07-04-2010
Messages: 17

Cela me suffit pour ce que je souhaite faire smile

Encore merci ^^

Hors ligne


Options Liens officiels Caractéristiques Statistiques Communauté
Corrections
irrlicht
irrklang
irredit
irrxml
xhtml 1.0
css 2.1
Propulsé par FluxBB
Traduit par FluxBB.fr
881 membres
1427 sujets
11117 messages
Dernier membre inscrit: Bidule
20 invités en ligne
Aucun membre connecté
RSS Feed