Historique des modifications - Message

Message #10635

Sujet: problemes de picking


Type Date Auteur Contenu
Création du message 02-08-2012 18:03:38 Gehogor
Je te conseille de regarder la doc pour plus d'info sur chacune des méthodes suivantes. Il est vrai que la doc d'Irrlicht est vraiment trop insuffisante, surtout comparée à celle de Qt que j'utilise souvent !
Alors, tu crées un maillage tout d'abord:
IMesh* irrMesh = manager->getMesh( "MonSuperFichier3d.3ds" );

Après, tu associes un nœud "node" à ce maillage afin de pouvoir lui faire subir des transformations comme les rotations, translations, échelle...
IMeshSceneNode* meshNode = manager->addMeshSceneNode(irrMesh,0,-1,
                                             pos.getTranslation(),
                                             pos.getRotationDegrees(),
                                             GrIrrlicht::vectorToIrr( mesh3D->scale() ));
if( meshNode == 0 )
            return;

Après, tu crées le "triangleSelector" qui représente la "bounding box" de notre maillage.
ISceneManager* manager = m_engine->device()->getSceneManager();
ITriangleSelector* triangleSelector = manager->createTriangleSelectorFromBoundingBox(meshNode);

if(triangleSelector == 0)
        return;

meshNode->setTriangleSelector(triangleSelector);

De cette manière, chaque "node" aura stocké son propre pointeur de "triangleSelector" pour d'éventuelles détections.
Et là, tu peux reprendre le code du dessus pour récupérer ton "triangleSelector".

Par contre, il faut bien comprendre que cette technique impose de parcourir tous les "nodes" pour tester s'il y a collision ou non. D'un point de vue calcul c'est très rapide car nous testons dans un premier temps les "triangleSelector" des "bouding box" qui représentent juste des boites, soit 6 cotés x 2 triangles par boites (12 triangles en tout).

C'est pourquoi dans le code du dessus je teste d'abord la collision avec les "bounding box" puis, s'il y a collision, je teste plus précisément avec le maillage complet fraichement convertit en "triangleSelector".

J'espère que ça ira.

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