Подскажите простой способ модификации ландшафта дающего внешнее сходство с водной эрозией.
Пытался гуглить на тему.... т.к. задача не слишком часто возникает - практически применимого для геймдева решения не нашел, в основном тяжелые математические труды нацеленные на точный расчет. :(
водная эрозия - овраги что ли?
допустим такой вариант:
уже есть сетка вершин, имитирующая холмы. берем каплю с рандомными координатами. "кладем" ее на поверхность, находим ближайшую вершину и вычитаем определенную высоту. смещаем каплю добавляя х, у нормали поверхности, на которой лежит точка, имитируя ее скольжение. повторяем пока капля не попадет на относительно ровную поверхность или выйдет за карту. создаем еще одну каплю...
Там еще инерцию надо учитывать.
Еще надо учитывать Что частица может как забирать грунт, так и наоборот оставлять.
И это еще не все параметры, как я понял из выкладок математических.
Плюс моделирование по одной капли рискует быть очень медленным. :(
Примерно вот так:
ну насчет инерции: прибавляй нормаль не к координатам, а к скорости капли. медленно не будет - я сейчас сам делаю генератор ландшафта, и современные компьютеры делают даже громоздкие и большие расчеты весьма неплохо. тем более, что "капля" теоретическая - их вес и количество можно и откорректировать эмпирически.
другой вариант: идти от обратного. начинаем с низа - вычитаем из земли клин большого радиуса и малой высоты, высоту увеличиваем, радиус уменьшаем - идем вверх по наименьшему сопротивлению. а дальше - фракталы фракталы фракталы. отпочковываем клинья. пару раз сглаживаем полученную карту высот.
Наиболее адекватная реализация, из тех что можно потрогать (читай: посмотреть сорец) - это вот эта штука на мой взгляд.
Идея в принципе простая - берем каплю метров дцать в диаметре и начинаем пускать с горы. Зная нормали в каждой точке не трудно угадать куда капля потечет.
Эмпирически можно подобрать красивую формулу ослабевания потока, отношение кол-ва забираемого грунта к кол-ву оседающего. Это все уже сказали. Разве
что "прибавлять нормаль" не надо, для таких дел есть градиенты :) Капель действительно надо много. Разного размера. Иначе овраги получатся слишком все похожие.
Не понял о какой инерции идет речь. "надо учитывать" - как обычно it depends. Зависит от того, на сколько правдоподобная картинка нужна и на сколько этот
параметр влияет на результат.
Вообще эрозия - это поле для разных хаков и твиков. Чтобы быстрее получить красивые овраги можно предварительно зашумить исходную карту высот каким-то
высокочастотным шумом. Чтобы получить пологие холмы можно выливать не по "локальной" капле, а сразу бассейн воды размером со всю карту, и т.д. Никто не
запрещает считать в несколько проходов, делая часть из них в более низком разрешении в конце концов (для больших оврагов самое то).
Качественный фейк, который как-то рыл бы канал, похожий на реальный мир, выдумать конечно можно, но идея с переносом частиц имхо проще. Проще тем что не
надо думать :) Она и так работает как реальный мир. Более-менее.
В тулзе по ссылке заюзано некоторое кол-во хаков чтобы "ручейки" получались не то покрасивше не то побыстрее. Как результат, если скормить этому алгоритму
хейтмапу побольше, чем на скринах у них, а детализацию оставить той же, то получится куча одинаковых каналов. Одинаковых в смысле по ширине и "рисунку".
Возможно, для "наземной" камеры ничего страшного (растительность прикроет), но на хейтмапах сразу палится.
Почему имеет смысл заморачиваться и НЕ делать странный фейк который роет каналы? Идея переноса частиц дает тебе один классный бонус - карту материалов, которую
можно поюзать для сплаттинга. Если в каждой точке исходной карты высот указать на сколько твердый грунт в зависимости от высоты, можно вполне успешно убить 2х
зайцев - вымыть песок так, чтобы остались скалы и получить красивые песчаные наносы в основании гор. Далее карту с материалом в текстурку - и вот уже годные исходные
данные для сплаттинга. Всякие коммерческие тулзы типа геоконтрола так и делают, например.
Как адекватная альтернатива вообще расчету эрозии, мне известен только один подход: Terrain Synthesis from DEM, там используются
реальные топографические карты для "фактуры" гор и пользовательские маски чтобы задать расположение хребтов. Картинки красивые, но мозгоубийство в пейпере еще то.
Да и эти самые dem достать проблематично в сколько-нибудь годном разрешении.
Вообще по всем вопросам про ландшафты - vterrain.org в помощь. Там много чего полезного попадается если хорошенько покопать.
@!!ex
Тебе нужно код (технологию), или утилиту? Из утилит Bryce неплохо с этим справляется.
ChASeR
Попробовал... Что-то нихрена пока не получается....
Mikle
Технологию
Ну что вы, девелоперы? Чего заглохли? Желаю услышать ещё дискуссии о генерации ландшафтов! Вот, пока попозорюсь своей картинкою
MineCraft Style?
Я, лично, на генерацию пока забил и просто беру SRTM данные.
ABTOMAT
А вы специально так на фильтрацию забиваете, чтоб уж совсем глаза пользователю сломать?
Тема в архиве.