IOS: создание изображения из данных без изображения (пейзаж, похожий на Godus)

Итак, видя изображения с Godus Мне было интересно, как создать не интерактивное, 2D-изображение с разными цветами для разных высот или уровней высот, как на рисунке ниже.

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

Вопрос двоякий:

1, Какие данные могут быть использованы для такого рода генерации? Я подумал, может быть, ASCII-искусство, которое легко создать и изменить, чтобы быстро изменить топографию, но будет сложно предоставить информацию о высоте.

2, Какие существующие структуры, классы, методы или методологии могут быть использованы для решения задачи генерации после получения данных.

Godus: like this one

Искусство ASCII (северная Европа с! для Норвегии, # для Швеции, $для Финляндии и% для России: enter image description here

(Взято из документов MapBox: http://mapbox.com/developers/utfgrid/#map_data_as_ascii_art)

Ответ 1

Если вы хотите создать простое 2D-контурное изображение, я бы попробовал следующее:

  • Создайте некоторые данные о высоте. Я бы просто использовал для этого серо-масштабное изображение, а не ascii. Вы можете создавать основные карты высоты в MS Paint или что-то подобное.
  • Сгладить данные. Например, примените размытие или увеличьте разрешение с помощью плавного фильтра.
  • Рассмотрите возможность зажимания всех данных высоты ниже определенной точки - это означает уровень воды, если вы этого хотите.
  • Количественные данные. Чем больше вы квантуете, тем меньше, но более очевидны контуры.
  • Примените ложную раскраску, используя поиск палитры. Например: низколежащие области синие, для воды, затем желтые, для песка, зеленые для травы, коричневые для земли, серые для скалы и белые для снега.

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

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

Если вы хотите использовать ascii, вы можете просто сгенерировать растровое изображение непосредственно из этого, что было бы непросто. Асим, который вы используете в качестве примера, хотя и разделен по странам, а не по рельефу местности, поэтому ложная раскраска и контурная обработка, вероятно, сделают неправильную вещь. Вы, вероятно, могли бы использовать его в качестве источника для простого генератора местности, возможно, просто имея пару символов, чтобы обозначать, где вы хотите землю, море, горы и т.д.

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

enter image description here