Come implementare la meccanica di sollecitazione / deformazione nel terreno voxel?


13

Sono in procinto di sviluppare un mondo simile a Minecraft in cui il terreno è diviso in voxel. Tuttavia, vorrei anche che le configurazioni instabili dei paesaggi crollassero prevedibilmente. Ad esempio, uno sbalzo troppo pesante si spezzerebbe e si spezzerebbe in voxel "ad alto stress" , così come una formazione di pilastri con una base erosa asimmetricamente . Stavo pensando di aggiungere un campo "stress vector" a ciascun voxel nel terreno e di fare quanto segue (pseudocodice):

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

Ma il problema è che non so come farei per calcolare questi stress individuali. Esiste un qualche tipo di algoritmo basato su FEA specializzato per le discretizzazioni voxel che posso usare per calcolare le sollecitazioni su base per voxel? O mi sto avvicinando a questo tutto sbagliato e c'è qualche altro modo per farlo?

Risposte:


1

È possibile prendere in considerazione una ricerca DFS di tutti i voxel collegati e determinare il voxel che è il singolo più dipendente o "ramificato" da. E poi esegui il tuo piccolo pseudo codice. :)

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.