Comment implémenter la mécanique contrainte / déformation en terrain voxel?

13

Je suis en train de développer un monde semblable à Minecraft où le terrain est divisé en voxels. Cependant, j'aimerais également que les configurations instables de paysages s'effondrent de manière prévisible. Par exemple, un porte-à-faux trop lourd se briserait et se briserait aux voxels à «contrainte élevée» , tout comme une formation de piliers avec une base érodée asymétriquement . Je pensais à ajouter un champ «vecteur de contrainte» à chaque voxel du terrain et à faire ce qui suit (pseudocode):

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

Mais le problème est que je ne sais pas comment procéder pour calculer ces contraintes individuelles. Existe-t-il une sorte d'algorithme basé sur FEA spécialisé pour les discrétisations de voxels que je peux utiliser pour calculer les contraintes sur une base par voxels? Ou est-ce que j'aborde tout cela de travers et il y a une autre façon de faire?

Silverblade Damus
la source

Réponses:

1

Vous pouvez envisager une recherche DFS de tous les voxels connectés et déterminer le voxel qui est le plus dépendant ou "dérivé". Et puis exécutez votre joli petit pseudo-code. :)

MoustacheMoses
la source