Jak wdrożyć mechanikę naprężeń / odkształceń w terenie wokselowym?

13

Jestem w trakcie opracowywania świata podobnego do Minecrafta, w którym teren jest podzielony na woksele. Chciałbym jednak, aby niestabilne konfiguracje krajobrazów zapadały się w przewidywalny sposób. Na przykład zbyt zwisający zwis pękałby i pękał przy wokselach „o wysokim naprężeniu” , podobnie jak formowanie słupów z niesymetrycznie erodowaną podstawą . Myślałem o dodaniu pola „wektora stresu” do każdego woksela w terenie i wykonałem następujące (pseudokod):

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

Problem polega jednak na tym, że nie wiem, jak bym wyliczył te indywidualne obciążenia. Czy istnieje jakiś algorytm oparty na MES specjalizujący się w dyskretyzacji wokseli, którego można użyć do obliczenia naprężeń w przeliczeniu na woksel? Czy też podchodzę do tego źle i istnieje jakiś inny sposób?

Damus Silverblade
źródło

Odpowiedzi:

1

Możesz rozważyć przeszukanie DFS wszystkich połączonych wokseli i ustalić woksel, który jest najbardziej zależny lub „rozgałęziony”. A następnie uruchom swój mały, pseudo kod. :)

MustacheMoses
źródło