Como implementar a mecânica de tensão / deformação em terreno voxel?

13

Estou no processo de desenvolver um mundo semelhante ao Minecraft, onde o terreno é dividido em voxels. No entanto, eu também gostaria que configurações instáveis ​​de paisagens colapsassem previsivelmente. Por exemplo, uma saliência muito pesada fraturaria e quebraria em voxels de 'alta tensão' , assim como uma formação de pilar com uma base erodida assimetricamente . Eu estava pensando em adicionar um campo 'vetor de estresse' a cada voxel no terreno e fazer o seguinte (pseudocódigo):

foreach voxel in terrain
    foreach neighbor in voxel.neighbor_voxels()
        if magnitude(voxel.stress - neighbor.stress) > stressThreshold
            detach_voxels(voxel, neighbor)

Mas o problema é que não sei como calcular esse estresse individual. Existe algum tipo de algoritmo baseado na FEA especializado em discretizações de voxel que eu possa usar para calcular as tensões por voxel? Ou estou abordando tudo errado e há outra maneira de fazer isso?

Lâmina de Prata Damus
fonte

Respostas:

1

Você pode considerar uma pesquisa DFS de todos os voxels conectados e determinar o voxel que é o mais dependente ou "ramificado" de. E, em seguida, execute seu bom e pseudo-código. :)

BigodeMoses
fonte