Message #10372
Sujet: Taille d'une boudingBox
| Type | Date | Auteur | Contenu |
|---|---|---|---|
| Création du message | 29-02-2012 14:54:12 | Superjaco |
Bonne idé. A ce moment là je peut corriger sa avec Blender qui permet lui aussi de replacer origin du modèle à son centre géométrique, et qui à le mérite d'être 100% gratuit. Cependant ce n'est pas plutôt sur le centre de la bb plutot que le centre géométrique que mon ellipsoide doit etre centré ? Si tu veut faire les tests, voilà le code sur les collisions (je te passe pas tout le code, y fait 5000lignes environ) : void AutrePerso::addPhysic() { if(pNode) { pNode->removeAnimators(); } irr::scene::IMetaTriangleSelector * meta = m_scnMgr->createMetaTriangleSelector(); irr::scene::ITriangleSelector * selector = 0; 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; if (node->getID() != pNode->getID()&& node->getID() != 777) { switch(node->getType()) { case irr::scene::ESNT_ANIMATED_MESH: selector = m_scnMgr->createTriangleSelectorFromBoundingBox(node); break; case irr::scene::ESNT_MESH: selector = m_scnMgr->createTriangleSelector(((irr::scene::IMeshSceneNode*)node)->getMesh(), node); break; case irr::scene::ESNT_TERRAIN: selector = m_scnMgr->createTerrainTriangleSelector((irr::scene::ITerrainSceneNode*)node); 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::ISceneNodeAnimator* anim = m_scnMgr->createCollisionResponseAnimator( meta, pNode, (pNode->getTransformedBoundingBox().MaxEdge - pNode->getTransformedBoundingBox().getCenter()), irr::core::vector3df(0,-10,0), irr::core::vector3df(0,0,0)); meta->drop(); pNode->addAnimator(anim); //anim->drop(); // std::cout<<pNode->getTransformedBoundingBox().MaxEdge.X - pNode->getBoundingBox().MinEdge.X<<std::endl; // std::cout<<pNode->getTransformedBoundingBox().MaxEdge.Y - pNode->getBoundingBox().MinEdge.Y<<std::endl; // std::cout<<pNode->getTransformedBoundingBox().MaxEdge.Z - pNode->getBoundingBox().MinEdge.Z<<std::endl; // std::cout<<pNode->getTransformedBoundingBox().MaxEdge.X <<" " <<pNode->getBoundingBox().MinEdge.X<<std::endl; // std::cout<<pNode->getTransformedBoundingBox().MaxEdge.Y <<" " <<pNode->getBoundingBox().MinEdge.Y<<std::endl; // std::cout<<pNode->getTransformedBoundingBox().MaxEdge.Z <<" " <<pNode->getBoundingBox().MinEdge.Z<<std::endl; } avec pode, le node à qui on ajoute le collision reponse et m_scnMgr le sceneManager. Les modèles utilisé sont "sydney.md2", "faerie.md2" et "dwark.x" du dossier média d'Irrlicht. Merci. |
| 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 135 invités en ligne membre en ligne: - RSS Feed |