D'abord je tiens à préciser que j'ai très peu de connaissances en 3D ou même en programmation de jeu, même si je connais bien l'algèbre linéaire et les quaternions.
Je sais bien programmer et suis un habitué du forum C++.
Donc voilà, j'ai décidé de faire un petit projet personnel de jeu en 3D, et avant même de commencer je suis face à un petit problème algorithmique.
Soit un espace en 3 dimensions vide avec des personnes dedans, modélisés disons par un parallélépipède (une boîte), et un champ de vision (typiquement, une pyramide de 45°).
Je voudrais pouvoir déterminer, à tout instant, l'ensemble des personnes qui ont une certaine personne A dans leur champ de vision, avec A pouvant varier et être n'importe quelle personne de l'espace.
(Et ce de manière le plus efficace possible, sachant que l'espace et le nombre de personnes qu'il y a dedans peuvent être arbitrairement grand.)
Idéalement il me faudrait je pense une structure me permettant de parcourir les personnes des plus proches au plus lointaines, en pouvant éliminer tout l'espace se situant derrière une personne à chaque fois, puis en testant si le champ de vision contient bien les coordonnées de A.
À terme l'algorithme devrait pouvoir s'étendre pour aussi prendre en compte la topologie du terrain dans la visibilité.
En ayant parlé vite fait avec des programmeurs de jeu, on m'a conseillé d'utiliser un kd-tree et de faire du raytracing, mais j'avoue ne pas bien connaître ces outils ni voir comment ils s'appliquent de manière pertinente à ce problème.
Toute aide, idée et conseils seraient donc appréciés. Merci.





Répondre avec citation










Partager