Message #10153
Sujet: Taille d'une boudingBox
| Type | Date | Auteur | Contenu |
|---|---|---|---|
| Dernière modification | 24-07-2011 10:01:44 | Superjaco |
J'utilisait déjà des valeurs fixes avant, et sa fonctionnez bien, jusqu'à se que je commence à intégrer l'ia.
En effet en utilisant des valeurs fixe, les écart bb-elipsoide de différent mesh était différents se qui faisait de gros foirage lorsque les 2 nodes avancaient l'un vers l'autre (l'une des ellipsoide rentrait dans la bouding box de l'autre, du fait du mouvement du 2eme mesh, donc les meshs se coincait entre eux). Je cherche donc à se que les valeurs de l'ellipsoide se fasse automatiquement pour 2 raison :
Donc il ne me faut pas de valeur fixe, j'ai déjà passé cet étape. Voilà le code du méta : pNode->removeAnimators(); irr::scene::IMetaTriangleSelector * meta = m_scnMgr->createMetaTriangleSelector(); irr::core::array<irr::scene::ISceneNode *> nodes; m_scnMgr->getSceneNodesFromType(irr::scene::ESNT_ANY, nodes); // Find all nodes for (irr::u32 i=0; i < nodes.size(); i++) { irr::scene::ISceneNode * node = nodes; irr::scene::ITriangleSelector * selector = 0; if (node->getID() != pNode->getID() ) { switch(node->getType()) { case irr::scene::ESNT_ANIMATED_MESH: selector = m_scnMgr->createTriangleSelectorFromBoundingBox(node); node -> setMaterialFlag(irr::video::EMF_LIGHTING, true); break; case irr::scene::ESNT_MESH: selector = m_scnMgr->createTriangleSelectorFromBoundingBox(node); node -> setMaterialFlag(irr::video::EMF_LIGHTING, true); case irr::scene::ESNT_TERRAIN: selector = m_scnMgr->createTerrainTriangleSelector((irr::scene::ITerrainSceneNode*)node); node -> setMaterialFlag(irr::video::EMF_LIGHTING, true); break; case irr::scene::ESNT_OCTREE: selector = m_scnMgr->createOctreeTriangleSelector(((irr::scene::IMeshSceneNode*)node)->getMesh(), node); break; default: break; } } if(selector) { meta->addTriangleSelector(selector); selector->drop(); } } irr::scene::ISceneNodeAnimatorCollisionResponse* anim = m_scnMgr->createCollisionResponseAnimator (meta, pNode, (m_perso->getNode()->getBoundingBox().MaxEdge - m_perso->getNode()->getBoundingBox().getCenter()), irr::core::vector3df(0, -1, 0), irr::core::vector3df(0,0,0)); pNode->addAnimator(anim); meta->drop(); edit : en relisant mon code je viens de voir se que je m'étais trompé. J'ai réctifié, voilà ce que sa me donne sur le rendu : http://img263.imageshack.us/img263/6980/nouvelleimagebitmap3a.png faeri et sydney ne touche pas tt à fait le sol, mais sa je pense que c'est rectifiable avec le cinquieme argument : Le centre de l'elips ne doit pas etre le centre du mesh mais le centre de la bb. Par contre pour le nain je vois pas... |
| Création du message | 24-07-2011 09:48:59 | Superjaco |
J'utilisait déjà des valeurs fixes avant, et sa fonctionnez bien, jusqu'à se que je commence à intégrer l'ia.
En effet en utilisant des valeurs fixe, les écart bb-elipsoide de différent mesh était différents se qui faisait de gros foirage lorsque les 2 nodes avancaient l'un vers l'autre (l'une des ellipsoide rentrait dans la bouding box de l'autre, du fait du mouvement du 2eme mesh, donc les meshs se coincait entre eux). Je cherche donc à se que les valeurs de l'ellipsoide se fasse automatiquement pour 2 raison :
Donc il ne me faut pas de valeur fixe, j'ai déjà passé cet étape. Voilà le code du méta : pNode->removeAnimators(); irr::scene::IMetaTriangleSelector * meta = m_scnMgr->createMetaTriangleSelector(); irr::core::array<irr::scene::ISceneNode *> nodes; m_scnMgr->getSceneNodesFromType(irr::scene::ESNT_ANY, nodes); // Find all nodes for (irr::u32 i=0; i < nodes.size(); i++) { irr::scene::ISceneNode * node = nodes; irr::scene::ITriangleSelector * selector = 0; if (node->getID() != pNode->getID() ) { switch(node->getType()) { case irr::scene::ESNT_ANIMATED_MESH: selector = m_scnMgr->createTriangleSelectorFromBoundingBox(node); node -> setMaterialFlag(irr::video::EMF_LIGHTING, true); break; case irr::scene::ESNT_MESH: selector = m_scnMgr->createTriangleSelectorFromBoundingBox(node); node -> setMaterialFlag(irr::video::EMF_LIGHTING, true); case irr::scene::ESNT_TERRAIN: selector = m_scnMgr->createTerrainTriangleSelector((irr::scene::ITerrainSceneNode*)node); node -> setMaterialFlag(irr::video::EMF_LIGHTING, true); break; case irr::scene::ESNT_OCTREE: selector = m_scnMgr->createOctreeTriangleSelector(((irr::scene::IMeshSceneNode*)node)->getMesh(), node); break; default: break; } } if(selector) { meta->addTriangleSelector(selector); selector->drop(); } } irr::scene::ISceneNodeAnimatorCollisionResponse* anim = m_scnMgr->createCollisionResponseAnimator (meta, pNode, (m_perso->getNode()->getBoundingBox().MaxEdge - m_perso->getNode()->getBoundingBox().getCenter()), irr::core::vector3df(0, -1, 0), irr::core::vector3df(0,0,0)); pNode->addAnimator(anim); meta->drop(); edit : en relisant mon code je viens de voir se que je m'étais trompé. J'ai réctifié, voilà ce que sa me donne sur le rendu : http://img263.imageshack.us/img263/6980/nouvelleimagebitmap3a.png faeri et sydney ne touche pas tt à fait le sol, mais sa je pense que c'est rectifiable avec le cinquieme argument : Le centre de l'elips ne doit pas etre le centre du mesh mais le centre de la bb. Par contre pour le nain je vois pas... |
| Options | Liens officiels | Caractéristiques | Statistiques | Communauté |
|---|---|---|---|---|
|
Préférences cookies Corrections |
![]() ![]() ![]() ![]() |
Propulsé par Django xhtml 1.0 css 2.1 |
884 membres 1440 sujets 11337 messages |
Dernier membre inscrit: Saidov17 117 invités en ligne membre en ligne: - RSS Feed |