Полный исходный код этого проекта, а также объяснение того, как его использовать и читать, можно найти на Github [
здесь]. Проект рендерится при помощи моего собственного [
TinyEngine].
В прошлом году я
много экспериментировал со способами реализации эрозии на основе частиц для генерации рельефов.
Я считаю, что эрозия на основе частиц обеспечивает хороший баланс между реализмом и простотой, давая интуитивные описания переноса массы и энергии при их движении. Следовательно, они могут воспроизводить геомофологическое явление при низкой сложности концепций/кода как хорошие приблизительные модели. Благодаря этому они более доступны для большинства пользователей, чем исследовательские модели.
Один из самых хорошо известных и производительных алгоритмов улучшения генерации рельефов на основе шума — это
гидравлическая эрозия на основе частиц [
перевод на Хабре]. Этот алгоритм чрезвычайно прост и обеспечивает отличные результаты относительно малыми усилиями.
Его результаты убедили меня дополнить эту систему потоками воды и водоёмами, что привело к созданию
процедурной гидрологической системы [
перевод на Хабре]. Используя упрощённую модель, система успешно передаёт многие эффекты реального мира, поэтому я заинтересовался в дальнейшем исследовании симуляции геоморфологии на основе частиц.
Вскоре я осознал, что внеся только незначительные изменения, эти системы можно дополнить
ветровой эрозией и основными
эоловыми процессами. Так как в ненаучной литературе мне не удалось найти хороших ресурсов о реализации ветровой эрозии на карте высот, я решил спроектировать и реализовать собственную модель ветровой эрозии на основе частиц для процедурного рельефа.
Получившаяся система хорошо работает, позволяя моделировать движущиеся осадочные породы, а также сплошные неподвижные препятствия. Она воссоздаёт многие эффекты, наблюдаемые при реальной ветровой эрозии, например, серповидные дюны!