Salut!
En ayant recherché un petit peu les différents algorithme du partitionnement de l'espace, j'ai vu qu'il existait pas mal de structures, avec chacune leurs avantages et leurs inconvénients :
-La grille :
-Avantage : simple.
-Inconvénient : Si les objets sont fort proches les un des autres, ont peut se retrouver avec des cases contenant beaucoup d'objets.
-L'octree :
Avantage : Supprime l'inconvénient de la grille.
Inconvénient : l'arbe n'est pas équilibré.
-Le BSP-TREE :
Avantage : L'arbre est équilibré.
Inconvénient : il faut calculer à chaque fois le plan de coupe.
Pour l'instant j'ai eu l'idée de faire ceci : j'utilise tout d'abord une grille qui, stocke chaque objets dans des cellules.
Ensuite, afin d'éviter de tester si toutes les cellules de la grille du monde sont en collision avec la box de la caméra (ce qui prend plus de temps), je fais un parcours qui récupère les cellules d'un endroit à un autre (en fonction du décalage qu'il y a entre deux cellules), et je récupère les objets qui sont dans les cellules.
Afin de palier aux inconvénient de la grille j'ai décidé de faire un BSP-TREE dans chaque cellule de la grille, ainsi je passe la box de la caméra au BSP-TREE en ne récupérant que les entités des feuilles qui sont en collision avec la caméra.
Bref, en y réfléchissant j'aurai peut être pu utiliser directement un BSP-TREE mais j'ai aussi besoin de pouvoir récupérer le chemin d'une entité vers un point en évitant les collisions, ce que je fais grâce à la grille en récupérant chaque centre des cellules voisines et en sélectionnant la plus proche de la position finale jusqu'à arrivé à la cellule qui contient la position finale.
Jusque là, pas de soucis, mais ou je me pose la question, c'est pour les objets dynamiques.
Pour l'instant je me contente de les replacer dans la grille quand ils bougent, de plus, je dois aussi reconstruire le BSP-TREE.
N'est ce pas trop coûteux de faire cela ?
Existe t'il une meilleure solution ?
Si oui laquelle ? (Quel algorithme de partitionnement devrais-je utiliser pour les objets dynamique ?)
Partager