Pages: 1
- Accueil forums
- » Mesh
- » Animateur cameraFPS sur un IAnimatedMeshSceneNode
18-10-2009 22:48:00
- nabouill
- Membres

- Date d'inscription:
- Messages: 242
- IP: 77.195.53.232
- Courriel
RESOLUE
Salut.
Savez s’il est possible de mettre le même animateur qu'une cameraFPS sur un IAnimatedMeshSceneNode.
J'ai beau chercher dans la doc, je ne vois pas bien comment je pourrais mi prendre. J'ai essayé de récupérer l'animateur d'une cameraFPS et de la mettre sur mon node, mais le node ne bouge pas. (ni avance, ni tourne, ni rien
)
Quelqu’un aurais une idée ?
Hors ligne
19-10-2009 07:07:03
- Hawk
- Membres
- Date d'inscription:
- Messages: 91
- IP: 91.103.40.50
- Courriel Site web
Je pense que c'est à toi de coder ton "animateur" en utilisant un "EventReceiver", et définir toi même le comportement de ton SceneNode en fonction des actions de l'utilisateur.
Une autre idée, mais je ne sais pas si ça marche, tu peux mettre ton IAnimatedMeshSceneNode en tant que fils d'une caméra FPS. Si ça marche comme je l'imagine, ton Mesh bougera dans l'environnement global (comme ta caméra FPS), mais l'angle de vue restera le même.
Hors ligne
19-10-2009 08:50:18
- TUpac
- Membres

- Date d'inscription:
- Messages: 387
- IP: 90.29.158.184
- Courriel
Salut, je pense que faire tourner ton node manuellement n'est pas un soucis.
Cependant, le faire avancer dans la direction souaitée n'est pas simple je te l'accorde.
Voilà la methode qui va bien pour ça :
//--- move ship acording to its rotation ---
void move(irr::scene::ISceneNode *node, //node to move
irr::core::vector3df vel) //velocity vector
// for example to move node 10 units forward use vector3df(0,0,10)
{
irr::core::matrix4 m;
m.setRotationDegrees(node->getRotation());
m.transformVect(vel);
node->setPosition(node->getPosition() + vel);
node->updateAbsolutePosition();
}"Si vous ne partagez pas votre stabilité avec les pauvres, les pauvres partageront leur instabilité avec vous."
Hors ligne
20-10-2009 12:10:47
- nabouill
- Membres

- Date d'inscription:
- Messages: 242
- IP: 82.127.58.127
- Courriel
Ok merci pour vos reponses,
hawk Ecris:
Je pense que c'est à toi de coder ton "animateur" en utilisant un "EventReceiver"
Oui, je croi que c'est ce que je vais faire du coup.
hawk Ecris:
tu peux mettre ton IAnimatedMeshSceneNode en tant que fils d'une caméra FPS
ça c'est ce que faisait avant, ça marche très bien (enfin presque) . Le problème, c'est que sur ma camera je mais aussi un autre anim que gere les collisions du terrain. Et quand je veut me baisser (position accroupie) je change d'anim pour gerer une collision plus basse. Un drole de bug : c'est que 2 fois sur 3, quand je change d'aminateur, ma position change legerement, et c'est génant. Je prefererait donc mettre un anim du genre cameraFPS sur mon node et y mettre une camera basic tant que fils.
TUpac Ecris:
Voilà la methode qui va bien pour ça :
Merci pour le tuyau. je vais étudier ça.
Hors ligne
22-10-2009 20:23:34
- nabouill
- Membres

- Date d'inscription:
- Messages: 242
- IP: 79.92.239.121
- Courriel
Ok, mon truc avance un peut mais me vlà encore bloqué sur un petit truc.
Je créer un anim du genre :
Code c++ :
anim = sceneMgr->createCollisionResponseAnimator(meta, myCamera, vector3df(15,15,15), vector3df(0,-5,0),vector3df(0,60,0));
myCamera->addAnimator(anim);Le truc est que j'aimerais changer l'ellipsoidTranslation de cette anim (le dernier parametre) en cours de route.
Mais j'ai beau chercher, je ne vois vraiment pas comment faire. Quelqu'un aurait une petite idée ? SVP.
Hors ligne
23-10-2009 22:12:42
23-10-2009 22:33:34
- Magun
- Administrateurs

- Date d'inscription:
- Messages: 910
- IP: 188.93.45.30
- Courriel Site web
anim->setEllipsoidTranslation (const core::vector3df(0,0,0));bizarre quand même le site off propose une doc .... faut y jeter un coup d'œil des fois
http://irrlicht.sourceforge.net/docu/classirr_1_1scene_1_1_i_scene_node_animator_collision_response.html
Hors ligne
24-10-2009 10:00:03
- nabouill
- Membres

- Date d'inscription:
- Messages: 242
- IP: 79.92.239.121
- Courriel
Merci bien.
En effet, en faite c'est que je créait nom animateur comme ça :
Code c++ :
ISceneNodeAnimator* animDu coup on n'a pas acces directement a cette methode.
Mais effectivement (je n'avait pas vue ça) en créant mon anim avec :
Code c++ :
ISceneNodeAnimatorCollisionResponse* animça marche parfaitement.
Merci pour ta réponse, et désoler si desfois je suis un peu un boulet.
++
Hors ligne



