Comment les gens d'EA DICE ont-ils créé des environnements destructibles dans Battlefield Bad Company 2 et Battlefield 3?
Ont-ils simplement assemblé les bâtiments à partir de sous-régions prédéfinies, qui se brisent en cas d'explosion ou quelque chose de similaire? Je ne peux penser à rien d'autre.
Réponses:
Pour le dire simplement oui ce qu'ils font. Mais allez sur une longueur supplémentaire pour couvrir les bords droits en utilisant un masque de destruction . Après avoir supprimé la partie de la géométrie, ils ajoutent un maillage détaillé autour de la section détruite pour la rendre crédible.
Voici comment cela fonctionne,
Lors de la destruction d'une partie de cette maison, ils commencent par retirer un morceau de la géométrie
Ensuite, des maillages de détails supplémentaires autour de la section détruite.
Et la dernière étape consiste à ajouter le masque de destruction.
Ils utilisent également des effets de particules et des débris de maillage pour un look plus dramatique.
(Toute la référence est tirée de ces 2 publications que j'ai mentionnées dans le commentaire)
la source
Il s'agit de CSG - Constructive Solid Geometry (bien que dans ce cas, il soit destructif à proprement parler), si vous voulez faire plus de recherches sur le fonctionnement réel des algorithmes.
L'approche standard consiste à utiliser les deux mailles existantes A & B (la maison et le volume "d'explosion" soustrait) pour générer un troisième "maillage" (graphique) où les deux plans et bords des mailles se croisent, C - qui décrit la zone ils partagent. En 2D:
A est la maison, B est le volume d'explosion, C est la zone de jonction / intersection entre A et B. G est le sol.
Les mathématiques / la logique derrière cela ne sont pas triviales, car il existe de nombreux cas marginaux à traiter et la moitié ou plus de cette tâche consiste simplement à reconnaître quels types possibles de graphiques de résultats sont des cas spéciaux qui doivent être pris en compte dans le code. J'ai vu le problème décrit par les vétérans sur gamedev.net comme "un problème très difficile" et je peux vous dire de le tenter en 2D, même, et d'avoir un degré de réussite modéré où seuls quelques cas de bord échouent, que ce n'est pas une mince tâche.
Un moyen qui pourrait être plus simple consiste à utiliser un algorithme de décomposition des polygones et à utiliser la géométrie qui crée comme base pour votre destruction de la géométrie.
la source