Поколение шума местности с маской? - PullRequest
0 голосов
/ 28 июля 2011

У меня есть черно-белая 2D-карта с белыми частями, которые должны быть выше уровня моря, а черными - ниже уровня моря. Я не уверен, как создать местность, подходящую под эту маску. Не имеет значения, являются ли контуры островов неправильными, но важно то, что шум должен приблизительно соответствовать контурам описанных островов.

Я смотрел на шум Перлина, но я не уверен, как адаптировать его к моему сценарию.

1 Ответ

0 голосов
/ 31 июля 2011

Решением может быть следующее:

Изобретите функцию dist (x, y), возвращающую расстояние до ближайшей к (x, y) точки берега.Затем создайте стандартное поле высоты перлин-шума, но умножьте каждую высоту на dist (x, y).dist (x, y) должно быть на самом деле отрицательным расстоянием, если вы находитесь на воде, и положительным расстоянием, если вы находитесь на суше.Таким образом, поле высоты сдвигается вниз или поднимается в зависимости от того, как далеко вы находитесь от берега, но местность все еще довольно сплошная.Если результаты выглядят странно, вы можете немного исказить dist (x, y), например, используя sqrt (dist (x, y)) или sgn (dist (x, y)) * log (1 + abs (dist)(х, у))) или что-то в этом роде.

...