#1 

18-10-2009 22:48:00

nabouill
Membres
Avatar de nabouill
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 sad )

Quelqu’un aurais une idée ?

Hors ligne


#2 

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


#3 

19-10-2009 08:50:18

TUpac
Membres
Avatar de TUpac
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


#4 

20-10-2009 12:10:47

nabouill
Membres
Avatar de nabouill
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


#5 

22-10-2009 20:23:34

nabouill
Membres
Avatar de nabouill
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


#6 

23-10-2009 22:12:42

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

UP !

Hors ligne


#7 

23-10-2009 22:33:34

Magun
Administrateurs
Avatar de Magun
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


#8 

24-10-2009 10:00:03

nabouill
Membres
Avatar de nabouill
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* anim

Du 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


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