Комментарии 27
А водная эрозия рельефа заложена в самом методе генерации.
Иными словами, не хватает не столько самого движения материков в динамике, а сколько явно видимых результатов этого движения — в виде горных хребтов: как молодых и острых, так и старых и полуразрушенных.
"Марианские впадины" — это зоны субдукции, а где плиты расходятся — это рифты.
Совсем необязательно привлекать сложную физическую теорию явления, если визуальный результат будет тем же самым, применяя простую модель. Так же, например, чтобы построить рельеф не требуется привлекать теорию процессов горообразования и выветривания. Ведь и фракталы дают хорошее изображение рельефа: есть много примеров горных долин, построенных с помощью фракталов, которые практически неотличимы от реальных.
Думаю тут пришлось бы городить куда более сложную геологическую модель. Например можно добавить нулевым этапом формирование литосферных плит и их небольшое сдвигание, чтобы сформировать базу, на которую будет напыляться уже основной рельеф.
Интересно было бы подумать о применении для этого нейронной сети. Уж очень здорово они такого рода задачки с изображениями сейчас проделывают.
Я думаю, что сдвигать их не нужно. Достаточно обозначить направление их движения. А ещё нанести на карту рифты. Тогда по границам плит с учётом их относительного движения и характера (материковая/океаническая) можно заложить на первичной сетке высот характерные формы рельефа. Большего, мне кажется, не потребуется.
заложить на первичной сетке высот характерные формы рельефаи является тут самым сложным. Можно было бы применить композицию шумовой функции которая делает хребты и функции с большей частотой (и меньшей амплитудой). Трудность в подборе первой; мне сейчас неизвестен ее вид. Про это можете здесь почитать Texturing and Modeling. Procedural Approach.
и является тут самым сложным.
А как вообще делаются горы?
Расположение хребтов и общее их направление я бы просто задал вдоль стыка плит и сообразно характеру их столкновения (там немного вариантов).
Примерно вот так:
шаг 0 — генерим случайный лунный ландшафт
шаг 0.5 — метеоритная бомбардировка с целью получить метеоритные кратеры
шаг 1 — разбиваем на плиты
шаг 2 — сдвигаем => появятся горные хребты, рифты и субдукции
шаг 3 — заполняем водой
шаг 4 — производим эрозию с целью разрушения горных хребтов => получаем старые горы
шаг 5 — снова двигаем => получаем молодые горы
шаг 2 — сдвигаем => появятся горные хребты, рифты и субдукции
…
шаг 4 — производим эрозию с целью разрушения горных хребтов => получаем старые горы
шаг 5 — снова двигаем => получаем молодые горы
А ещё на шаге 0.5 можно ударить каким-нибудь супер-метеоритом.
PS субдукции — это в том числе и вулканы.
Я сперва вообще подумал, что это сарказм такой тонкий, мол, нужно всего лишь взорвать пару сверхновых, наделать кремния, кислорода, железа, углерода, потом за счет гравитации свалять из этого шарики, выбрать подходящий… Нужно где-то остановиться, у нас нет аких мощностей.
Хорошая идея уже звучала. Планету разбиваем на плиты, плитам даем импульс и вычисляем напряжения на узлах стыков. Получим ломанные линии с векторами напряжений в вершинах. Вот эти данные должны как-то влиять на превалирующую компоненту фрактальной функции. Хз как.
(то есть континенты попробую создать на следующей неделе)
Когда вижу алгоритмы процедурной генерации — всегда возникает мысль обучить нейронную сетку на реальных данных, а затем загнать в неё входные данные процедурной генерации, чтобы выбрать набор параметров, лучше соответствующих данным. Применяя такие сетки к генерации планетарных карт, можно, как минимум, получить более естественно выглядящие карты, а как максимум — узнать какие-нибудь доселе неизвестные географические или геологические закономерности Земли. В этом направлении совсем не копал, это просто мои размышления. Уверен, что много где так и делается.
Star Citizen сегодня — это наверное самые продвинутые ребята, которые продвинулись дальше всех в этой теме. Они там много всего рассказывают и показывают в своих видео.
Сейчас ещё совершенно случайно увидел на ютубе видеоролик о неком проекте Outerra. С их сайта даже технодемку скачать можно. Но тут, как я понял — больше не процедурная генерация планет, а процедурная генерация разного контента на поверхности планет, типа деревьев, травы, и так далее. Сама планета в демке — это наша Земля.
Гипсометрическая карта — тоже карта.
Dwarf Fortress — тоже умеет создание карты планеты, только в более «классическом» исполнении в виде квадрата, в остальном — высоты, температура, осадки, биомы, легкий налет тектоники, и если не ошибусь даже эрозия. Проблема в том что автор пишет игру весьма эзотерически и понять-вытащить алгоритмы проблематично.
В качестве источника идей и способов я полагался на математическую литературу по фракталам.
Процедурная генерация планетарных карт