Como o pessoal da EA DICE criou ambientes destrutíveis em Battlefield Bad Company 2 e Battlefield 3?
Eles acabaram de montar os prédios a partir de sub-regiões predefinidas, que se separam quando há uma explosão ou algo semelhante? Não consigo pensar em mais nada.
Respostas:
Para simplificar, sim, o que eles fazem. Mas vá um comprimento extra para encobrir as bordas retas usando a máscara de destruição . Depois de remover a parte da geometria, eles adicionam uma malha detalhada ao redor da seção destruída para torná-la crível.
Aqui está como isso funciona,
Ao destruir uma parte desta casa, eles começam removendo um pedaço da geometria
Em seguida, foram adicionadas malhas de detalhes ao redor da seção destruída.
E o passo final é adicionar a máscara de destruição.
Eles também usam efeitos de partículas e detritos de malha para uma aparência mais dramática.
(Toda a referência é retirada dessas 2 publicações que mencionei no comentário)
fonte
Isso é CSG - Construct Solid Geometry (embora, neste caso, seja destrutivo, a rigor), se você quiser fazer mais pesquisas sobre como os algoritmos realmente funcionam.
A abordagem padrão é usar as duas malhas A e B existentes (a casa e o volume subtraído de "explosão") para gerar uma terceira "malha" (gráfico) onde as duas malhas se cruzam nos planos e arestas, C - que descreve a área eles compartilham. Em 2D:
A é a casa, B é o volume de explosão, C é a área de união / interseção entre A e B. G é o solo.
A matemática / lógica por trás disso não é trivial, pois há muitos casos extremos para lidar e metade ou mais dessa tarefa é apenas reconhecer quais dos possíveis tipos de gráficos de resultados são casos especiais que precisam ser atendidos no código. Eu já vi o problema descrito pelos veteranos no gamedev.net como "um problema muito difícil" e posso dizer que você tentou em 2D, mesmo, e teve um grau moderado de sucesso, onde apenas alguns casos extremos falham, que não é uma tarefa pequena.
Uma maneira que pode ser mais fácil é usar um algoritmo de decomposição de polígonos e usar a geometria criada como base para a destruição da geometria.
fonte