Ландшафт в Unity3D. Часть 3. Инструменты Photoshop для редактирования изображений карт смещения/карты высот 3D ландшафта

В данной статье (уроке) мы рассмотрим более мягкие способы осветления изображения карты высот, нежели инструменты Photoshop Автотон (Auto Tone) и Автоконтраст (Auto Contrast). Рассмотренные здесь инструменты Photoshop для работы с изображениями Экспозиция «Exposure», Осветитель «Dodge Tool», настройки уровней изображения «Levels», кривые «Curves», HDR тонирования «HDR toning» способны проявить/осветлить любое изображение карты высот, даже изменить его до неузнаваемости, существенно повлиять на конечный ландшафт в Unity3d, созданный из изображения карты высот.

Недостатки «осветленного» изображения карты высот и «сжатого» ландшафта в Unity 3D.

Итак, в предыдущих частях статьи мы создали террейн в Unity3D и экспортировали карту высот в формате 16 bit Windows. Далее мы импортировали данную карту высот в редактор изображений Фотошоп. После этого мы «осветлили» изображение карты высот при помощи Авто контраста/Автотона и сохранили получившееся изображение карты высот в формате RAW 16 bit Windows (PC). И, наконец, мы импортировали получившуюся карту высот в Unity 3D, создав на ее базе новый ландшафт.

Чтобы получившийся из доработанной карты высот ландшафт не был похож на сосульку и не представлял собой набор высоченных пиков, нам пришлось значительно уменьшить максимальную высоту ландшафта с «дефолтных» 600 метров/условных единиц Unity до 12 метров. Недостатком такого резкого снижения высоты террейна чревато тем, что если теперь мы захотим создать возвышенность/гору высотой, скажем, в 500 метров, то у нас ничего не получится. Мы теперь ограничены этими самыми 12 метрами.

Чтобы это продемонстрировать, я воспользуемся нативным/встроенным инструментом повышения и понижения уровня ландшафта в Юнити «Raise/Lower Terrain».

Выберем самую простую круглую кисть, установим ей максимальный размер, выставим максимальное нажатие и поводим выбранной кистью где-нибудь в центре ландшафта подольше, чтобы создать высокую-высокую гору. О том, как создать свою кисть и с её помощью создавать уровни в Unity3D, было рассказано в статье-уроке Ландшафт в Unity 3D. Часть Вводная – для затравки. Создание лабиринтов и подземелий в Unity3D. Создание кисти для ландшафта в Adobe Photoshop.

tableland-in-unity-3d
На рисунке показаны настройки кисти для создания горы в Unity 3D и созданное плато вместо горы.

Хмммм… Не получается у меня создать высокую гору. Получилось лишь создать плато, ограниченное максимальной высотой террейна «Terrain Height» в разделе «Resolution» компонента Transform Unity3D. Как мы увидели из предыдущей части статьи, изменение данного параметра для существующей карты высот приводит лишь к вытягиванию террейна по высоте, но не позволяет увеличить максимальную высоту террейна с сохранением текущего уровня созданного террейна.

Еще одним недостатком созданного террейна из осветленной карты высот инструментами Авто контраст (Auto Contrast) и Авто тон (Auto Tone) является «зарезание» верхушки террейна. Такой результат возник на террейне в связи со слишком сильным, максимальным, осветлением более светлых участков карты высот до белого цвета. Как известно из предыдущих уроков, абсолютно белый цвет интерпретируется движком Unity 3D (и другими программами для создания 3D моделей, игровыми движками, приложениями для создания ландшафтов и т.д.), как максимально возможная высота террейн (точка поверхности террейна).

Способы осветления изображений в Photoshop

Инструмент для решения упомянутых выше проблем с террейнов и картой высот находится в том же Фотошопе, точнее таких инструментов — несколько.

Первый из них из них можно найти в меню изображения «Image» главного меню во вкладке «Adjustment» и называется «Exposure» или по-русски — Экспозиция.

Вторым инструментом является «Dodge Tool» и активируется путем нажатия горячей клавиши ‘O’, иконка которого расположена в панели инструментов (по умолчанию расположенной в левой части экрана, но которая может быть перенесена в любую часть окна Фотошопа).

Третьим инструментом являются Кривые «Curves», изменение формы которых, также способно вытянуть изображение карты высот в более светлый диапазон.

Четвертым инструментов являются уровни «Levels», также способным осветлить карту высот.

Пятый инструмент «HDR Toning…» является самым интересным и обладает настолько широкими настройками для осветления изображения, насколько это возможно.

Еще одним способом осветления изображения в Photoshop является инструмент коррекции света и тени «Shadows/Highlights…» (Image -> Adjustments -> Shadows/Highlights… ).
Но данный инструмент достаточно груб для нашего случая и больше похож на результат использования Авто тона или Авто контраста, даже при значении в 1% для теней.

Итак, давайте посмотрим, что же можно сделать при помощи данных инструментов.

Осветление изображения карты высот при помощи инструмента экспозиции «Exposition».

Загрузите в Фотошоп самую первую экспортированную из Unity 3D карту высот (не модифицированную в Фотошопе, а оригинальную карту высот — тот самый черный квадрат), как было описано в одной из предыдущих статей Ландшафт в Unity3D. Часть 2. Импорт карты высот в Photoshop с редактированием и сохранением в формате RAW. Импорт карты высот в Unity 3D для изменения террейна.

Как и прежде мы видим черный цвет на месте предполагаемой текстуры карты высот. Выберите «Image» в главном меню, чтобы открыть меню инструментов для работы с изображением, в котором выберите вкладку настроек/коррекции изображения «Adjustments», в котором, в свою очередь, выберите вкладку «Exposure». Попробуйте поменять значения для параметров экспозиции «Exposure» и коррекции гаммы «Gamma Correction».

В моем случае достаточными для «проявления» будущих холмов и гор значениями стали «+1.8» и «1.3» для параметров экспозиции и коррекции гаммы соответственно.

xposure-adjustments-photoshop
На рисунке показаны настройки инструмента экспозиции Exposure в Photoshop для осветления изображения карты высот.

Теперь необходимо сохранить и импортировать данную карту высот в Unity 3D, назначив ее соответствующей заготовке террейна, как было описано в статье Ландшафт в Unity3D. Часть 2. Импорт карты высот в Photoshop с редактированием и сохранением в формате RAW. Импорт карты высот в Unity 3D для изменения террейна. Настройки для импортируемой карты высот мы выберем, как и в самом первом нашем эксперименте по созданию террейна в Unity3D из карты высот: высота ландшафта — 600 метров/условных единиц, разрешение/размер карты высот — 257, режим изображения — 16 бит и порядок байтов Byte Order — PC/Windows.

import-height-map-to-unity-3d
На рисунке показан созданный ландшафт в Unity3D из карты высот, осветленной в Фотошопе.

Если вы обратили внимание, инструмент Экспозиции содержит еще один настраиваемый параметр. Я ничего не сказал про параметр смещения «Offset», чтобы не смазывать общую картину созданного террейна в Unity3D. Данный параметр позволяет поднять, так называемый, базовый уровень ландшафта. Вы можете поднять базовый уровень террейна, чтобы уже в редакторе Unity3D создавать впадины под водоем, типа пруда, озера, океана, либо вырыть окопы, создать вмятины под подвал дома, или просто вырыть ямы в земле, имитирующие воронки от взрывов. В отличие от нулевого уровня террейна (нулевая точка/точка отсчета высоты ландшафта, 3D модели, 3D объекта, системы частиц и т.д.), который определяет самую низкую/самую глубокую точку вашего террейна/ландшафта в Юнити 3Д, например, дна ямы или оврага или дна пруда, океана, озера, речки, лужи и т.д., базовый уровень определяет основную высоту поверхности, на которой наиболее часто будет находиться персонаж игрока. Базовый уровень представляет собой золотую середину между максимально и минимально допустимыми координатами по вертикальной оси ландшафта. Совсем не обязательно, чтобы этот уровень, RGB (127, 127, 127) или RGB (128, 128, 128) находился ровно посередине между максимальной и минимальной координатой ландшафта по оси Y. Золотая середина — на то и «золотая середина», и определяется тем, насколько глубоки ямы в ландшафте и насколько высоки горы на ландшафте. Если глубина ваших ям составляет 100 метров, а высота гор 300 метров, то базовый уровень ландшафта стоит расположить между координатами, равными 100 и 300 по оси Y ландшафта.

Конечно, если вы не собираетесь запускать в пруд рыб или плавать под водой с аквалангом, убивая врагов из гарпунного ружья, то нет никакой необходимости воссоздавать реальный рельеф дна океана, достаточно будет создать имитацию дна там, где его видно. Также, при копании ям и других углублений игроком в реальном времени (т.е. онлайн, используя не инструменты террейна в редакторе, а код скрипта для копания ям во время игры, который позволяет «вминать» участки террейна) уровень террейна не может опуститься ниже нулевого уровня, определяемого черными пикселями карты высот, о чем было сказано с одной из предыдущих статей из серии, посвященной созданию ландшафтов для игровых движков.
Таким образом, чтобы иметь возможность «копать ямы в земле в Unity3D», террейн должен иметь «запас цвета», чтобы указанные участки этого самого ландшафта/террейна можно было опустить, но об этом мы еще поговорим в одной из следующих частей данной статьи. Чтобы обеспечить такой запас цвета на террейна, вам придется либо вручную в редакторе Unity нативными средствами поднять уровень всей земли посредством встроенного инструмента повышения/понижения выбранной области террейна либо залить карту высот одним из оттенков серого, где оттенок будет определять новую нулевую точку отсчета террейна.

Для чистоты эксперимента я воспользуюсь неизмененной/оригинальной картой высот и установлю следующие параметры для инструмента Экспозиции: собственно экспозиция — 7, Offset — 0.215, а значение параметра Gamma Correction оставлю без изменений, т.е. равным 1.

При таком значении для параметра Offset цветом фона будет являться серый цвет RGB (128, 128, 128), что соответствует половине от максимальных значений для RGB (256, 256, 256). Если вы хотите узнать больше про то, как битность изображения, влияет на качество ландшафта, и немного почитать по теорию цветов, вы можете заглянуть в один из следующих уроков, но лучше обо всем по порядку.

offset-in-unity-before-low-terrain
Импортированный террейн, созданный из карты высот, с цветом фона RGB (128, 128, 128).

Используем инструмент Осветлитель «Dodge Tool» на карте высот для того, чтобы показать часть «невидимого» ландшафта

Теперь давайте рассмотрим принцип работы инструмента Photoshop «Dodge Tool», который позволяет выборочно осветлять слишком темные участки изображения. Загрузите еще раз оригинальное изображение карты высот в Фотошоп или отмените применение инструмента «Expose», нажав несколько раз сочетание клавиш Ctrl+Alt+Z, в зависимости от того, какое количество последних действий/операций вы хотите отменить. Чтобы отменить последнее действие в Фотошопе (Undo), вы можете использовать стандартное для многих Windows-приложений сочетание клавиш Ctrl+Z, однако повторное нажатие данного сочетания клавиш в Фотошопе вернет состояние рисунка на шаг вперед, т.е. произойдет не Undo, а Redo, т.е. отменится действие, вызванное предыдущим нажатием сочетаний клавиш Ctrl+Z. Итак, вернувшись к черной текстуре карты высот, нажмите на иконку инструмента «Dodge Tool» в панели инструментов слева, чтобы выбрать инструмент Осветлитель. Выставьте в верхней части экрана значение для экспозиции «Exposure» (да, да, и здесь — экспозиция), например, равным 40%, выберите желаемый паттерн/форму кисти, установите клавишами «{» и «}» требуемый размер (который также может быть задан в «Brush Preset picker» и проведите один или несколько раз кистью по холсту (вашему черному квадрату).

dodge-tool-photoshop-height-map инструменты Photoshop
На рисунке показана частично осветленная карта высот через инструменты Photoshop dodge tool.

Я специально побольше «засветил» карту высот лишь с одной стороны, чтобы наглядно показать полезность данного инструмента. Сравните ее с изображениями предыдущих карт высот, что у вас получились после применения инструментов Авто тон/Авто контраст и «Expose» в уроке Ландшафт в Unity3D. Часть 2. Импорт карты высот в Photoshop с редактированием и сохранением в формате RAW. Импорт карты высот в Unity 3D для изменения террейна.

dodge-tool-half-heightmap-in-unity3d
На рсиунке показаны две карты высот: слева — оригинальная, справа — карта высот после применения инструмента Осветлитель.

«Искривляем» яркость изображения карты высот инструментом Photoshop Кривые («Curves»)

Кривые «Curves» (Image -> Adjustments -> Curves), как и предыдущие два инструмента способны осветлить изображение карты высот. Чтобы вызвать инструмент Кривые в Фотошопе для осветления изображения карты высот, вы можете нажать одно из сочетания горячих клавиш Фотошопа, а именно Ctrl+M. Для каждого изображения карты высот форма кривой подбирается индивидуально. Конечно, в зависимости от формы кривой будет зависеть и конечный результат.

curves-photoshop-heightmap

На рисунке показана кривая в окне инструментов «Curves», «вытянувшая» карту высот из темной зоны, т.е. осветлить изображение карты высот.

Осветление изображения карты высот ландшафта через Уровни (Levels)

Инструмент «Levels» (Image -> Adjustment -> Levels) также позволяет осветлить карту высот для ландшафта Unity3d. В настройках окна инструмента Кривые Фотошопе достаточно передвинуть ползунки-регуляторы оттенков поближе к пику в левой части диаграммы интенсивности цветов, чтобы получить желаемый результат.
Параметр «Output levels»
определяет цвет фона/базового уровня террейна позволяет регулировать цвет базового уровня террейна (в данном случае, в оттенках серого), по схожему принципу воздействия на изображение параметра «Offset» инструмента экспозиции «Exposure».

levels-image-height-map-photoshop-инструменты
На рисунке показано окно инструмента настройки уровней изображения «Levels»

Мощный инструмент коррекции изображения «HDR toning…»

Одним из самых мощных инструментов редактирования изображения по праву можно считать инструмент HDR-тонирования «HDR» toning.. Данный инструмент включает огромное количество параметров, способных изменить изображение карты высот ландшафта до неузнаваемости как в лучшую, так и в худшую сторону.
Для достижения желаемого результата в качестве метода обработки изображения нам подойдет метод «Local Adaptation», который уже установлен в качестве метода по умолчанию в окне настроек инструмента «HDR Toning…»
При помощи значений параметров «Radius» и «Strength» раздела «Edge Glow» вы можете настроить резкость переходов между светлыми и темными областями изображения карты высот, тем самым сделав края ландшафта более крутыми. Или сделать более пологими области, вокруг ям, оврагов и т.д.
Изменяя значения параметра «Gamma» в разделе «Tone and Detail» и параметра «Shadow» в разделе «Advanced» окна настроек «HDR toning…» можно легко настроить цвет фона изображения карты высот, соответственно подняв базовый уровень террейна в Unity3d.
Раздел «Toning Curve and Histogram», в котором отображаются гистограмма и кривая настройки тона изображения, позволяет более аккуратно настроить карту высот для будущего террейна в Unity 3D.

hdr-toning-photoshop-instruments
На рисунке показано окно настроек инструмента HDR Toning…

На этом данный урок закончен. В одном из следующих уроков мы научимся понижать террейн путем затемнения изображения карты высот в Фотошопе.

Автор Максим Голдобин (Maxim Goldobin aka MANMANA)

1 Comment

  1. Fats says: Ответить

    Hey there! This is kind of off topic but I need some advice from an established blog. Is it very hard to set up your own blog? I’m not very techincal but I can figure things out pretty fast. I’m thinking about creating my own but I’m not sure where to begin. Do you have any tips or sungsetiogs? Many thanks

Добавить комментарий