Устранение проблем с высотой в изометрическом перлин-шуме

Я использовал перлин-шум для создания изометрических ландшафтов на основе плитки. До сих пор я использовал значение шума в качестве карты высоты для самих плиток: Math.floor(noise * 10), в принципе. Это создает совершенно красивые, но линейные карты. Тем не менее, я нашел "горы" довольно скучными, поэтому применил показатель степени: Math.floor(Math.pow((noise / 4), 2.3)), Это подталкивает более высокие значения вверх, производя прикрепленное изображение.

Эти значения высоты хранятся в двумерной сетке, что дает мне x, y а также z Мне нужно нарисовать карту на экране.

Недостаток очевиден: в моей горе есть пробелы, которые нужно заполнить. Я просто не уверен, с чего начать, поскольку это информация, которую я больше не могу хранить в двумерной сетке. Я предполагаю, что я могу обманывать, используя "более длинные" плитки, но это отчасти хромает. Какие-либо предложения?

Если вам нужно больше информации, я с удовольствием объясню. Может быть, я лаю не на том дереве.

изометрический перлин-шум

1 ответ

Решение

Перед тем, как нарисовать первую плитку далеко сзади, взгляните на две соседние плитки слева и справа, которые находятся ближе к зрителю. Получите наименьшую из них высоту и проверьте, меньше ли эта высота, чем ваша задняя плитка, минус одна высота. (Потому что это приведет к разрыву). Теперь вы можете начать рисовать на куче сзади, начиная с этой "низкой высоты", и укладывать плитки на нее, пока не достигнете желаемой высоты. Затем вы можете нарисовать следующую плитку, которая ближе к зрителю, используя тот же алгоритм.

Редактировать: Но мне просто интересно, может быть, это выглядело бы неловко с таким количеством сложенных плиток. Может быть, лучше просто растянуть слой почвы до "малой высоты".

Другие вопросы по тегам