Перлин \ Фрактальный скачок шума только для одной единицы между значениями - PullRequest
0 голосов
/ 29 февраля 2012

Прежде всего, извините за мой английский.

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

Для создания рельефа я использую перлин \ симплексный шум, но с этим я получаю крутые склоны.

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

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

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

Как я могу псевдо-случайным образом генерировать ландшафт с максимальным уклоном в 45 градусов и использовать другой способ, кроме сглаживания ранее созданной карты?

Сейчас у меня нет идей, и я надеюсь, что шум Перлина может иметьнекоторые возможные варианты, такие как «максимальный угол наклона», но Google не помог мне с этим.

1 Ответ

0 голосов
/ 29 февраля 2012

Шум Перлина по своей природе ограничен по наклону, поскольку значения в каждой ячейке сетки интерполируются между четырьмя градиентами, у всех из которых есть наклон 1 / gridSize (или какое-то другое фиксированное значение в зависимости от вашей реализации).

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

...