Historique des modifications - Message

Message #10372

Sujet: Taille d'une boudingBox


Type Date Auteur Contenu
Création du message 29-02-2012 14:54:12 Superjaco

nabouill Ecris:

J Pour moi, ton modèle n'est pas bien centrer dans son propre espace, il doit être décalé par rapport à son centre, donc quand irrlicht le charge et créer sa collision par rapport à son centre, le modèle est décalé.

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. smile

Retour

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