Играбельная карта высот - PullRequest
       32

Играбельная карта высот

3 голосов
/ 25 октября 2010

У меня игра с бесконечностью процедурно сгенерированной местности.Я использую шум 1 / f для высоты (я думаю, что это шум Перлина?).В любом случае это выглядит красиво, но не очень играбельно, так как на самом деле не имеет ровных участков.Простое уменьшение амплитуды не сработает, так как я все еще хочу большого изменения высоты.Кто-нибудь знает фильтр, который я могу применить к карте высот, чтобы поощрять плоские области, сохраняя большой диапазон высот?для крутых градиентов, чтобы стать круче, и для плоских градиентов, чтобы стать более плоскими.Ландшафт не должен быть реалистичным, просто "забавным" для FPS.

Ответы [ 7 ]

2 голосов
/ 25 октября 2010

Простого шума недостаточно, чтобы создать красивый ландшафт.Это всего лишь один из промежуточных шагов в более сложном процессе.Вам нужно смоделировать некоторые явления реального мира: температуру, эрозию, осадки и тому подобное.Обычно это процесс с большой нагрузкой на процессор, но оно того стоит.Вот несколько интересных ссылок:

Dungeon League - прочтите все это.Великолепные вещи.

Статьи мирового поколения о Хрониках Дорина:

(Вы также можете скачать генератор, но он написан на C ++)

2 голосов
/ 25 октября 2010

Я считаю, что вам нужно использовать функцию сглаживания, чтобы избавиться от неровностей местности, если это кажется вашей проблемой.

Я только просмотрел эту страницу, но это может быть приличное руководство: http://www.float4x4.net/index.php/2010/06/generating-realistic-and-playable-terrain-height-maps/

2 голосов
/ 25 октября 2010

Не уверен, поможет ли это, но вы можете сделать так, чтобы диапазон вашей функции с большой вероятностью трансформировался в плоскую поверхность.Например, все результаты в диапазоне от 0,1 до 0,3 имеют 80% вероятности завершения в виде 0,1 поверхности.Таким образом, вы поощряете плоские поверхности, но сохраняете желаемую высокую изменчивость.

1 голос
/ 25 октября 2010

Вам нужен «генератор случайных чисел», который будет решать, как должна выглядеть новая область, с частотой, которую вы выбираете. Для гор выбирай то, что у тебя уже есть. Для квартир выбирайте меньше шума.

0 голосов
/ 05 ноября 2018

Что вы можете сделать для простого и хорошо выглядящего решения, так это оценить высоту, полученную из вашей карты шума, с помощью пользовательской функции кривой.

Например, вы можете сделать точки кривой кривой кривой от 0,1-0,3 до 0,1-0,15, а затем от 0,3-1,0 до 0,15-1,0.

Таким образом, вы по-прежнему сохраняете фактическую шероховатость местности, но делаете ее более плоской.

0 голосов
/ 25 октября 2010

Вы должны искать больше материалов, особенно по процедурным текстурам и шуму. Эти три связаны много. Вам следует подумать об использовании более одной шумовой функции с разными параметрами и объединить их, используя разные функции или операторы.

В вашем случае вы можете использовать одну функцию для генерации высокочастотного шума, а затем умножить его на низкочастотный шум. Это приведет к пикам, где низкочастотный шум ближе к 1, и к смещению, где он близок к 0. Какой-то алгоритм сглаживания / эрозии тоже хорош. Но вам все равно потребуется много проб и ошибок, а также точная настройка параметров, чтобы получить хотя бы полезные результаты.

Некоторым более сложным направлениям может потребоваться более 10 шумовых функций с альфа-смешиванием или сглаживанием и тому подобное. Не думайте, что вы получите красивый внешний вид от применения простого фильтра.

0 голосов
/ 25 октября 2010

Затем вы можете отфильтровать по медианный фильтр .это сгладит вашу поверхность.Но это разрушит горы.Это хорошо для относительно плоских областей, таких как впадины и плато.Если вы хотите резкие горы (с быстрым и большим перепадом высот), вы должны применять этот фильтр выборочно.

...