Статьи

Простая карта рельефа в Blender

Картография Дизайн Выбор команды Туториалы
Время прочтения: 6 минут
Дисклеймер: это достаточно краткий туториал на достаточно сложную тему. Если это ваш первый туториал по Blender, то будьте готовы погуглить и обратиться к дополнительным материалам.
В этой статье мы узнаем, как создать псевдотрёхмерную карту рельефа с использованием QGIS и Blender. Если у вас мало опыта работы в блендере, рекомендую посмотреть видео, посвящённые наиболее используемым горячим клавишам. Это важно, поскольку знание горячих клавиш облегчает работу в блендере. Кроме того, рекомендую изменить базовые настройки, потому что с исходными настройками работать неудобно. После выполнения всех этих скучных действий мы сможем перейти к самому интересному ✨
Пример рельефной карты, сделанной в Blender

Подготовка исходных данных

Для создания трёхмерного рельефа нам понадобится двумерная цифровая модель рельефа (ЦМР). Обычно я использую Copernicus DEM. Для объединения нескольких скачанных тайлов в один слой в QGIS используется команда raster > miscellaneous > merge.
Объединение тайлов в QGIS
Если мы хотим создать трёхмерный рельеф на конкретную страну или территорию, нужно обрезать полученный растр по маске (raster > extraction > clip raster by mask). Для примера я взял территорию Швейцарии, границы выгрузил отсюда. После этого можно перепроецировать ЦМР. Для Швейцарии я использовал зональную проекцию UTM (WGS 84 / UTM zone 32N). В целом, проекция не так важна, поскольку мы сможем изменять облик рельефа непосредственно в блендере. Нажимаем ПКМ на полученный растр и экспортируем его (export > save as > rendered image).
ЦМР на территорию Швейцарии

Создание трёхмерной модели рельефа в Blender

После открытия проекта блендера удаляем исходный куб и создаём плоскость (shift A > add mesh > plane). В будущем из этой плоскости будут выдавливаться полигоны, формируя трёхмерную модель рельефа. Сейчас плоскость имеет соотношение сторон 1 к 1. Если мы хотим, чтобы форма рельефа на двумерной ЦМР соответствовала трёхмерной, нам нужно изменить соотношение сторон плоскости. Допустим, в моём случае ЦМР имеет разрешение 5464 на 2452 пикселей. Чтобы привести плоскость в соответствие ЦМР, нужно отмасштабировать стороны плоскости по осям X и Y, в данном случае на 5,464 и 2,452 соответственно. Делается это во вкладке Object на панели справа снизу (для появления этих настроек не забудьте нажать на плоскость, чтобы её границы загорелись жёлтым!).
Изменение масштаба плоскости
По созданной ЦМР блендер будет определять, насколько сильно нужно выдавить полигоны вверх (более высокие значения пикселей — сильнее выдавливание, более низкие — слабее). Для формирования рельефа мы будем использовать модификатор Displacement. Параметр Strength позволяет настроить силу выдавливания, то есть насколько значения пикселей на ЦМР будут влиять на высоты рельефа.
Модификатор Displacement, наложенный на плоскость
Чтобы Displacement использовал нашу ЦМР для определения высот, выбираем её во вкладке ниже:
Добавление ЦМР к модификатору Displacement
Поздравляю, ничего не произошло!🙂 Как я сказал выше, Displacement выдавливает полигоны. Сейчас полигонаж нашей плоскости составляет 1 (вся плоскость — это один полигон). Соответственно, нам нужно увеличить число разрезов в сетке плоскости, чтобы сформировать новые полигоны. Для этого нажимаем на плоскость, переходим в режим редактирования (Tab) > ПКМ на плоскость > Subdivide. Subdivide можно нажать несколько раз, но получаемого полигонажа всё равно будет недостаточно для формирования красивого рельефа. Чтобы это исправить, мы добавим на плоскость модификатор Subdivision Surface, который ещё сильнее увеличит число разрезов, и выкрутим его ползунки на максимум.
Следите за производительностью вашего компьютера. Если сцена начинает подвисать, нужно уменьшить первый параметр (Levels Viewport) до оптимального, но Render оставить на максимуме!
Добавление модификатора Subdivision Surface к плоскости
Теперь результат больше похож на правду. Можно нажать ПКМ на плоскости и выбрать Shade Smooth, чтобы немного уменьшить пикселизацию и подчеркнуть тальвеги и водоразделы.
Полученный трёхмерный рельеф
Если форма рельефа нас не устраивает, выставляем значения масштабов осей X, Y плоскости произвольными. Таким образом, плоскость немного вытянется в одну из сторон, и изображение преобразится.

Добавление текстур на рельеф

Чтобы сделать изображение рельефа более реалистичным, надо добавить на него текстуры. Здесь есть два подхода: наложить на рельеф космический снимок (например, Google Earth) или создать материал самостоятельно. Я расскажу про второй подход, потому что он позволяет более гибко настроить цвета рельефа и адаптировать их под наши вкусы.
Для начала нажимаем на плоскость и создаём для неё исходный материал:
Добавление материала на плоскость
Чтобы редактировать этот материал, переходим во вкладку Shader Editor:
Вкладка Shader Editor
Сейчас на экране у нас один шейдер — Principled BSDF, с которым мы будем соединять ноды (проще говоря — инструменты, которые преобразовывают материал). Нам понадобится только две ноды: Color Ramp и Image Texture, в которой мы выберем нашу ЦМР. Нода Color Ramp позволяет задать рельефу цвета в зависимости от каких-то значений (фактора). В качестве фактора у нас выступает двумерная ЦМР. Допустим, в моём примере я сделал так, что пиксели с высокими значениями на ЦМР имеют цвет ближе к белому, как на стандартных гипсометрических шкалах. Участки же, соответствующие низменностям, будут зелёными, а предгорьям — коричневыми. Или можно сделать более мистические цвета, как в примере с Грецией из начала статьи. В общем, позвольте вашей фантазии разгуляться!✨
Настройка материала рельефа
Модель рельефа после наложения материала:
Трёхмерная модель рельефа после наложения материала

Настройка освещения и параметров рендера

Теперь мы переходим к самому важному этапу — настройке освещения сцены. Правильный свет и тени помогают добиться большего эффекта трёхмерности и делают изображение рельефа визуально привлекательным.
Для начала поменяем рендер-движок с Eevee на Cycles. Cycles делает освещение физически корректным, тени более реалистичными, но время рендера изображения увеличится.
Смена рендер-движка
В сцене есть исходный источник освещения. Если вы вдруг его удалили, то нажимаем Shift A > Light > Sun. Источник света — это такой же объект, как плоскость, и мы можем задать его параметры. Я расположил источник света в левом верхнем углу изображения, поставил минимальную силу свечения и задал ему голубоватый оттенок.
Настройка освещения рельефа
Теперь настраиваем камеру, через которую выполняется рендер изображения. Для перехода в режим камеры нажимаем Num 0. Чтобы камера смотрела в надир на рельеф, устанавливаем следующие значения параметров:
Значения параметров камеры
Теперь задаём, какое разрешение будет иметь изображение на выходе. Чем выше разрешение, тем дольше будет рендериться изображение. Параметр % уменьшает выставленное разрешение изображения на соответствующий процент (использовать необязательно).
Настройка разрешения выходного изображения
Заключительный штрих перед рендером — расширение подложки под рельефом. Сейчас рельеф занимает практически всю плоскость, что меня не устраивает, поскольку я хочу добавить на карту дополнительные подписи. Проще всего расширить подложку, сделав следующее: создать новую плоскость большого размера, задать ей цвет на панели материалов (я выбрал голубоватый оттенок) и поднять эту плоскость чуть выше исходной подложки. Теперь у нас будет больше воздуха по краям отрендеренного изображения.
Расширение подложки рельефа (режим камеры)
Наконец переходим во вкладку Render > Render Image, дожидаемся, пока Cycles просчитает все итерации рендера, и нажимаем Image > Save as. Картинка, которая получилась у меня:
Трёхмерный рельеф Швейцарии
Чтобы украсить наше изображение и приблизиться к классическому пониманию карты, можно немного пошаманить в фотошопе и добавить разные подписи:
Рельефная карта Швейцарии, созданная в Blender
Материал подготовил Артем Орешин

Раз в две недели мы собираем лучшие статьи из блога Картетики и набор полезных ссылок от нашей команды, а потом отправляем их в нашей рассылке. Подписывайтесь, если тоже хотите получать от нас новые идеи и новости из мира геотехнологий 💡