bon, voici deux exemples d'optimisations simples a mettre en place
le premier, celui avec les objets:
http://s2.noelshack.com/old/up/a-2f81ff6560.png
suffit de pas afficher les objets qui sont en dehors du champ de la caméra! pour se simplifier la vie , on peut utiliser le produit scalaire, entre le 'look' de la caméra (la flèche bleue
), et le vecteur entre la caméra et l'objet. si le résultat est négatif, l'objet est derrière la caméra, donc on l'affiche pas. certes, un calcul d'angle est plus précis, mais galère a mettre en oeuvre.
ensuite, pour la construction: le partitionnement de l'espace!
http://s2.noelshack.com/old/up/b-831f4c7985.png
il faut diviser son environnement en zones. dans la méthode de l'image, chaque pièce contient de petits noeuds qui lui sont associés (tu les place ou tu veux, l'essenciel c'est que ca fasse un résultat correct a l'écran
). si au moins un de ces noeuds est vu par la caméra, ca veut dire qu'elle voit l'intérieur de la pièce, donc il faut l'afficher, elle et tous les objets qu'elle contient.
il faut aussi afficher la pièce dans laquelle se trouve la caméra!
qu'est-ce qu'un noeud qui n'est pas vu par la caméra? c'est soit un noeud derrière la caméra, soit un noeud dont la ligne entre lui et la caméra est coupée par un mur. et c'est assez simple de déterminer si deux segments s'entrecoupent
voila, tu peux t'inspirer de ca pour optimiser ton programme 