Генерация рельефа на лету на основе существующего рельефа

этот вопрос очень похож на поставленный здесь.

моя проблема заключается в том, что у меня есть карта, что-то вроде этого:

Main Map

эта карта сделана с использованием 2D шума Перлина, а затем проходит через созданную карту высот, назначая типы и значения цвета каждому элементу в местности на основе высоты или наклона соответствующего элемента, поэтому довольно стандартно. Массив карты является двумерным и точным размеры экрана (пиксель на пиксель), поэтому при 1200 на 800 генерация занимает около 2 секунд на моей установке.

теперь увеличение выделенного прямоугольника:

http://i.stack.imgur.com/hrZnM.png

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

http://i.stack.imgur.com/bbLia.png

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

http://i.stack.imgur.com/6shKz.png

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

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

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

1 ответов


переписать шума Перлина для функция установки. Затем вы можете увеличить октавы (и, следовательно, уровень детализации) и перепроверить область с более высоким разрешением.