Question

J'écris un jeu en C ++ et mon niveau est composé de plusieurs maillages séparés, chacun avec son propre tampon de sommets. J'utilise vmmlib (bibliothèque de vecteurs / matrices brillante libre et brillante) pour créer mon frustum culler et le tester contre la sphère de délimitation de chaque maille du niveau. Malheureusement, mon niveau peut comporter jusqu'à 800 mailles et parcourir toutes les trames lentement. Quel est le meilleur moyen d'optimiser le code pour que je n'aie pas à regarder toutes les mailles de chaque itération? Des volumes limites dans le tronc?

Était-ce utile?

La solution

Oui, l’objet englobant est la voie à suivre; vous devez choisir un volume limitant adéquat, par exemple pour les maillages qui se déplacent sur la scène comme des bots et ne se couchent pas, le meilleur volume est représenté par un cylindre, les autres sont mieux représentés par cubes (axe aligné ou non).

Vous créez ensuite un arbre supérieur ou octree pour diviser les données de maillage de manière hiérarchique.

Cela fonctionne très bien pour la suppression des frustrations en plein air.

Pour les intérieurs, un BSP est la meilleure solution car vous avez beaucoup de murs pour cloisonner votre espace. Vous devez toujours lier au volume vos maillages comportant plus de 10 polygones.

Autres conseils

Je voulais juste ajouter que maintenant, les portails des jours sont généralement préférés aux BSP, ou en conjonction avec ceux-ci, mais je n'ai pas assez de réputation pour éditer le message d'origine.

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