Pages: 1
- Accueil forums
- » Collisions
- » Collision Terrain/Node <=> Camera avec animator = rien
#1
Quelqu'un à une idée ?
RVM
11-04-2012 22:02:45
- RVM
- Membres
- Date d'inscription:
- Messages: 20
- IP: 81.50.206.60
- Courriel
Hello,
Je cherche depuis quelques heures mais mon problèmes reste sans solution...
Je cherche à créer une collision entre ma caméra, mon terrain et la node a laquelle ma caméra est attachée.
Lors de la création de caméra, je lui ajoute un animator du type trackball.
Puis je crée un MetaTriangleSelector, j'ajoute celui du terrain + celui du node et j’applique celui-ci sur ma caméra.
==> Sa ne fonctionne pas.
Pourtant la collision entre la node et mon terrain est ok. Si j'enlève l'animator alors les collisions fonctionnes.
Voici mon code :
Code c++ :
//Ajoute une camera
irr::scene::ICameraSceneNode* cam = SceneManager->addCameraSceneNode(node, irr::core::vector3df(10,10,40),node->getPosition());
CSceneNodeAnimatorCameraTrackball *cam_animator = new CSceneNodeAnimatorCameraTrackball(VideoDriver, Irr_Device->getCursorControl(), 50,4,6);
cam->addAnimator(cam_animator);
cam_animator->drop();
//Selector Terrain
irr::scene::ITriangleSelector *terrain_selector = SceneManager->createTerrainTriangleSelector(terrain, 0);
terrain->setTriangleSelector(terrain_selector);
//Selector node_1
irr::scene::ITriangleSelector *node_selector = SceneManager->createTriangleSelectorFromBoundingBox(node);
node->setTriangleSelector(node_selector);
//Creation d'un container de triangleselector
irr::scene::IMetaTriangleSelector *meta_cam = SceneManager->createMetaTriangleSelector();
meta_cam->addTriangleSelector(terrain_selector);
meta_cam->addTriangleSelector(node_selector);
//Collision cam
irr::scene::ISceneNodeAnimator *colli_cam_anim = SceneManager->createCollisionResponseAnimator(meta_cam, cam, irr::core::vector3df(10, 20, 10), irr::core::vector3df(0,0,0), irr::core::vector3df(0,0,0));
cam->addAnimator(colli_cam_anim);
colli_cam_anim->drop();
//Collision cube
//Bounding box cube
const irr::core::aabbox3d<irr::f32>& box = node->getBoundingBox();
irr::core::vector3df radius = box.MaxEdge - box.getCenter();
//Base ellipse
irr::f32 ellipseYOffset = (box.MaxEdge.Y + box.MinEdge.Y)*0.5f;
irr::scene::ISceneNodeAnimator *colli_node_anim = SceneManager->createCollisionResponseAnimator(terrain_selector, node, radius, irr::core::vector3df(0,-10,0),irr::core::vector3df(0,ellipseYOffset,0));
node->addAnimator(colli_node_anim);
colli_node_anim->drop();
terrain_selector->drop();
node_selector->drop();
meta_cam->drop();
Quelqu'un à une idée ?
RVM
Hors ligne



