Как реализовать механику напряжения / деформации в воксельной местности?

13

Я нахожусь в процессе разработки Minecraft-подобного мира, где ландшафт делится на воксели. Однако я также хотел бы, чтобы нестабильные конфигурации ландшафтов предсказуемо разрушались. Например, слишком тяжелый выступ может сломаться и сломаться при вокселях с «высоким напряжением» , как и при образовании колонны с асимметрично эродированным основанием . Я думал о добавлении поля «вектор напряжения» к каждому вокселю на местности и делал следующее (псевдокод):

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

Но проблема в том, что я не знаю, как бы я рассчитал эти индивидуальные напряжения. Существует ли какой-нибудь алгоритм на основе FEA, специализированный для дискретизации вокселей, который я могу использовать для расчета напряжений на основе вокселей? Или я все это неправильно подхожу, и есть другой способ сделать это?

Серебряный клинок Дамус
источник

Ответы:

1

Вы можете рассмотреть поиск всех подключенных вокселей в DFS и определить, какой воксел является наиболее зависимым или "разветвленным". А затем запустите свой милый маленький псевдокод. :)

MustacheMoses
источник