Bagaimana menerapkan mekanika tegangan / regangan di medan voxel?

13

Saya sedang dalam proses mengembangkan dunia seperti Minecraft di mana medannya dibagi menjadi voxels. Namun, saya juga ingin konfigurasi lansekap yang tidak stabil runtuh. Sebagai contoh, overhang yang terlalu berat akan retak dan putus pada voxel 'tekanan tinggi' , seperti halnya formasi pilar dengan dasar yang terkikis secara asimetris . Saya sedang berpikir tentang menambahkan bidang 'stres vektor' ke setiap voxel di medan, dan melakukan hal berikut (pseudocode):

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

Tetapi masalahnya adalah saya tidak tahu bagaimana cara menghitung tekanan individu ini. Apakah ada semacam algoritma berbasis FEA khusus untuk diskritisasi voxel yang dapat saya gunakan untuk menghitung tekanan pada basis per-voxel? Atau apakah saya mendekati ini semua salah dan ada cara lain untuk melakukan ini?

Silverblade Damus
sumber

Jawaban:

1

Anda dapat mempertimbangkan pencarian DFS dari semua voxel yang terhubung dan menentukan voxel yang merupakan satu-satunya yang paling bergantung atau "bercabang" dari. Dan kemudian jalankan kode pseudo kecil yang bagus. :)

MoustacheMoses
sumber