¿Cómo implementar la mecánica de esfuerzo / deformación en terreno vóxel?

13

Estoy en el proceso de desarrollar un mundo similar a Minecraft donde el terreno se divide en vóxeles. Sin embargo, también me gustaría que las configuraciones inestables de los paisajes colapsen previsiblemente. Por ejemplo, un voladizo demasiado pesado se fracturaría y se rompería en vóxeles de 'alto esfuerzo' , al igual que una formación de pilar con una base erosionada asimétricamente . Estaba pensando en agregar un campo de 'vector de estrés' a cada vóxel en el terreno y hacer lo siguiente (pseudocódigo):

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

Pero el problema es que no sé cómo haría para calcular estas tensiones individuales. ¿Existe algún tipo de algoritmo basado en FEA especializado para las discretizaciones de voxel que pueda usar para calcular las tensiones por voxel? ¿O me estoy acercando a todo esto mal y hay alguna otra forma de hacerlo?

Silverus Damus
fuente

Respuestas:

1

Puede considerar una búsqueda DFS de todos los vóxeles conectados y determinar el vóxel del que más se depende o "ramificado". Y luego ejecute su pequeño pseudocódigo agradable. :)

MoustacheMoses
fuente