Улучшаем стандартную графику Unity за несколько минут

Привет. Недавно решил начать делиться накопленным опытом по разработке, и записал своё первое видео. Статья прилагается. :)

Собственно, видео. Статью можно прочитать в самом посте.

Принято считать, что графика в движке Unity не сравнится с картинкой Unreal Engine. Но так ли это? Попробуем сегодня понять, почему проекты на Unreal выглядят лучше.

Один из секретов Unreal Engine — сразу после создания нового проекта в нём уже включены эффекты пост-обработки. Пост-эффекты обрабатывают финальное изображение игры перед выводом на экран, улучшая внешний вид игры. Даже плохие модели и текстуры иногда можно немного вытянуть правильно настроенными пост-эффектами.

Spec Ops: The Line - довольно старая игра на Unreal Engine 3, которая, однако, на полную использует большую часть описанных ниже эффектов пост-обработки
Spec Ops: The Line - довольно старая игра на Unreal Engine 3, которая, однако, на полную использует большую часть описанных ниже эффектов пост-обработки

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

Это можно сделать через Package Manager, набрав в поиск Post Processing. Устанавливаем найденный плагин и теперь мы можем пользоваться пост-эффектами в юнити. У меня он уже установлен, поэтому я перейду к настройке.

Открываем через Верхнее меню -> Window -> Package Manager
Открываем через Верхнее меню -> Window -> Package Manager

К слову, я добавил в проект ассеты скал и неба для демонстрации, все их можно загрузить на Unity AssetStore для вашей игры бесплатно. Сейчас можно видеть, как выглядит сцена без настройки:

Модели неплохие, однако сцена выглядит довольно резко и контрастно, наша задача - исправить это.
Модели неплохие, однако сцена выглядит довольно резко и контрастно, наша задача - исправить это.

Для того, чтобы настроить плагин, добавляем на объект с основной камерой компонент Post-Processing Layer, в нём задаём Layer на Everything (и заодно сглаживание, которое уберёт лесенки с краёв моделей).

Unity просит не ставить слой Default или Everything, но за год работы с пост-процессингом я не увидел никакой проблемы с производительностью из-за этого параметра.
Unity просит не ставить слой Default или Everything, но за год работы с пост-процессингом я не увидел никакой проблемы с производительностью из-за этого параметра.

Затем создаём новый пустой объект с компонентом Post-Process Volume, в котором включаем галочку Is Global, что будет означать, что он влияет на всю вашу сцену. Нажатием кнопки New создаём новый профиль с эффектами.

Новый объект создаётся исключительно для удобства работы.
Новый объект создаётся исключительно для удобства работы.

А, и да, для игр на ПК стоит в Project Settings сменить Color Space с Gamma на Linear, это значительно улучшит общий вид игры, рекомендую почитать об этом в справке Unity, а может я даже сделаю отдельный материал по этой теме.

Открыть окно Player Settings можно через верхнее меню -> Edit -> Player Settings. Применять данный параметр для мобильных платформ не рекомендую без необходимости - он повышает затраты ресурсов устройства.
Открыть окно Player Settings можно через верхнее меню -> Edit -> Player Settings. Применять данный параметр для мобильных платформ не рекомендую без необходимости - он повышает затраты ресурсов устройства.

Возвращаемся к нашему объекту с Post Process Volume и сразу добавляем 4 новых эффекта:

  • Bloom
  • Ambient Occlusion
  • Color Grading
  • Vignette
Всё эффекты добавляются через кнопку Add Effect
Всё эффекты добавляются через кнопку Add Effect

Bloom

Ключевые настройки Bloom
Ключевые настройки Bloom

Теперь настраиваем их по порядку. Начнём с Bloom. Для включения эффекта ставим галочку возле Intensity, а затем прибавляем значение для того, чтобы усилить действие эффекта.

Слева - до применения Bloom, справа - после
Слева - до применения Bloom, справа - после

Сразу можно заметить, что мой эффект огня на сцене, если его можно так назвать, преобразился и стал гораздо сочнее. Так же это повлияло на небо на заднем плане, создав небольшую «дымку» от него. Этот эффект очень хорошо подходит для визуальных эффектов вроде пуль, огня, неона и прочих источников освещения, он добавляет кинематографичности сцене. Играясь с его параметрами можно получить голливудскую картинку на бликах и не хуже, чем в Unreal Engine.

Ambient Occlusion

Ambient Occlusion даёт дополнительное затенение, имитируя скопление теней в выемках в реальном мире, только немного сильнее для художественного эффекта. После применения эффекта окружение приобретает глубину.

Слева - до, справа - после. Появилось дополнительное затенение, которое частично скрывает резкий переход от скал к земле.
Слева - до, справа - после. Появилось дополнительное затенение, которое частично скрывает резкий переход от скал к земле.

Color Grading

Всевозможные параметры для цветокоррекции
Всевозможные параметры для цветокоррекции

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

До и после применения цветокоррекции. Конечно, так сильно менять картинку не всегда стоит, скриншот для наглядности.
До и после применения цветокоррекции. Конечно, так сильно менять картинку не всегда стоит, скриншот для наглядности.

Vignette

Vignette имитирует виньетку от объектива камеры. Этот эффект может добавить кинематографичности, хотя в кино он наоборот является нежелательным.

Разницу сложно заметить, но она есть. По краям изображения. Но на ощущения от игры может влиять довольно сильно.
Разницу сложно заметить, но она есть. По краям изображения. Но на ощущения от игры может влиять довольно сильно.

Теперь можно сравнить картинку с исходной, отключив компонент Post-Process Layer на камере.

Слева - до, справа - после пост-обработки
Слева - до, справа - после пост-обработки

Сразу видно, что пост-эффекты, настроенные за несколько минут, неплохо меняют итоговый вид игры. А я показал всего лишь минимальный набор, параметров у них гораздо больше. При должной сноровке, можно добиться впечатляющих результатов, а применять их можно, как в трёхмерных, так и 2D-играх.

Для большего эффекта, покажу так же сравнение со сценой без Linear Color Space, настроенного в начале.

С какой стороны Unity в представлении обычного игрока - догадаться не трудно.
С какой стороны Unity в представлении обычного игрока - догадаться не трудно.

И да, рекомендую пользоваться эффектами пост-обработки в меру, иначе ваша игра будет выглядеть будто на фоне происходит ядерный взрыв — тот же Spec Ops иногда это очень наглядно показывает. :)

Напоследок хочу отметить, что существует ещё множество способов улучшить картинку и придать ей художественный вид, ведь не только технологии делают игры на Unreal Engine красивыми, но и люди, что стоят за созданием графики. Для создания красивых уровней можно настроить красивое освещение, использовать туман для объёма, добавить мелкие частицы пыли в воздух с помощью системы частиц и многое, многое другое.

Заключение

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

4141
27 комментариев

У меня же настолько глаз набит, что графику Анреала я вижу прям за версту, многие разрабы не могут покрутить эти рубильники убрать вырвиглазный блум с моунш блюром. В то же время, в юнити могу выкрутить графику аля Анреал, не понимаю такой бугурт в сторону Юнити, и обожествление Анреала. И там и там, есть как преимущества и недостатки.
Несколько лет назад, фу - унити, недоподелки, графика отстой. Сейчас - воо крутой анреал, там графа крутая, но то, что ваш унитаз. А по факту стандартные механники на блупринтах, где игра от игры - копипаста, и СТАНДАРТНЫЕ ВЫРВИГЛАЗНЫЕ ЭФФЕКТЫ, которые считают эталоном. НЕ ВСЕ, сразу скажу, НЕ ВСЕ  Мало, очень мало ребят\команд\разработчиков, которые выкручивают рубильники постэффектов анреала.
Хоть я и работаю с юнити, Фу такими быть, давайте жить дружно.

И там и там, можно делать красиво, просто где-то какие-то инструменты легче и удобнее, где-то через заднее место реализовано. 

6
Ответить

У тебя есть примеры картинок на Unity которые можно спутать с анрилом? Я тоже раньше утверждал что "юнити тоже может", пока не поспорил с одним товарищем.  Мы перерыли интернет на тему различных интерьеров в реалтайме, анрил был лучше. Да что и гоорить, можно зайти в ассетстор и посмотреть что там продают под видом "фотореализм". Глаз видит что сделано на компе. В случае с анрилом глаз всё таки иногда обманывается думая что это фото.

Ответить

многие начинающие разработчики попросту не знаютНе знают. Да им оно, скорей всего, и не понадобится, т.к. они на мобилы ориентируются)

4
Ответить

Ну, при желании конечно можно и на мобилы, если не боишься сжечь телефоны игроков :D

Ответить

Комментарий недоступен

3
Ответить
5
Ответить

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

Ответить