Question

Dans les jours je crée mon premier jeu 3D et je me suis tombé sur quelques problèmes.

Je l'ai lu et AABB intersectioning l'idée de construire à partir de ce arbres, mais la seule chose que je ne pouvais pas comprendre est, si mes tourne « caractère » au cours du jeu, le concept de l'axe est aligné pas conservés!

J'ai vérifié deux bibliothèques (comme oz-Collide, opcode et plus), et je l'ai vu que les mises en œuvre ont été faites pour les objets statiques, car il utilise les cases sans origine (pour non statique, tous les nœuds de l'arbre doivent être mis à jour après chaque mouvement).

Les bibliothèques censées être ultra-rapide, et je devais probablement quelque part erronée.

quelqu'un peut me aider à faire la lumière sur ce sujet?

Était-ce utile?

La solution

Malheureusement, oui, si votre personnage tourne vous devez recalcule votre AABB, et il ne sera pas nécessairement un ajustement serré soit. Si vous avez un rectangle et faites pivoter de sorte qu'il est plus rectiliniear l'AABB sera plus grand que l'objet.

Le AABB est rapide parce que le test d'intersection est très simple, mais comme vous l'avez déjà découvert, il devient problématique lorsque les intersections précises sont nécessaires sur les objets non alignés sur les axes de AABBs.

Le AABB est toujours utile pour les tests rapides, que je soupçonne ces arbres sont faits pour. Avec un à partir d'une phase de test plus précis arbre AABB vous pouvez éliminer rapidement de grandes étendues d'objets. Si la requête retourne quelques objets supplémentaires, il importe peu. Dans votre cas, de caractère pivotée cela pourrait signifier que votre personnage est considéré comme dans une région où il / elle est vraiment pas.

Le AABB-arbre se prête à cela avec facilité puisque chaque fois que vous passez un test que vous allez plus profondément dans l'arbre et plus en détail.

Vous pouvez utiliser une boîte englobante orientée (OBB) lorsque vous avez besoin des intersections vraiment précises. Il peut être mis en œuvre avec le séparation axe théorème . Je vois oz-Collide a un support pour OBB déjà.

Il y a beaucoup de ressources sur OBB, celui-ci m'a aidé: GPWiki sur le théorème de séparation axe

Voici un de mise en œuvre.

Vous pouvez calculer un AABB d'un OBB si vous avez besoin.

Autres conseils

OZCollide travaille pour les entités mobiles et est indépendant du temps (il vous suffit de donner un vecteur de vitesse). Il travaille également pour OBB (non seulement AABB).

Consultez la documentation en ligne: http://www.tsarevitch.org/ozcollide/docs/ lien cassé

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top