Делаем графику в Unity Лучше.

Всем привет, давно не писал и вот назрело. Как вы знаете, я завязал с тёмной стороной рендерингом в 3д максе и ушёл в коварный мир реалтайма, а именно в игровые движки и остановил свой выбор на Unity. Чаще всего по поводу моих игр слышу вопрос: «Это что, Unity?» Да, это Unity. И ничего магического в этом нет. В данной статье кроме лапши и воды я расскажу вам о том как сделать графику на юнити Лучше :)

woUhWTgxyRtsUIlniIZ-1puFVgtW29EbuslOS9Lvh1JCmGx39EorKPcVEUFsYnkat-WPAy7aM0tW2uY0FjKAqfcIC-VvbvlvPggwOxfeSug4oePbbHMRsW9ZGpcj0qIhaqiiEurE

За 2 года я сделал 12!!!! игр или ,точнее сказать, попыток сделать игру :) До финальной стадии дожили 3, ещё штук 5 находятся в законсервированном,но подающем надежды виде, а остальные, увы списаны в утиль! Но это отдельная история и её я вам расскажу, если данный пост наберет 10к просмотров, поэтому всем кому интересно - скидывайте ссылку друзьям и врагам, потому что набрать 10к можно только так :)) Поехали!

Самое главное что вы должны знать о графике — это то, из чего она состоит.

Графика строится из набора изображений, который смешивается друг с другом по определенному закону, который приближает визуализацию финального изображения к реальному (либо стилизованному, если так задумано). Так устроен любой рендерер(и корона и вирей и редшифт и октан и все все все) и движок Unity работает точно по такому же принципу. Если кратко, то берем базовые цвета поверхностей, перемножаем их с освещенностью, добавляем отражения и спекуляр. Это общеизвестные факты, но без них никуда, любой 3дшник должен это знать и использовать!

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

Тени

В 2019 году мы имеем стандартные тени такого вида

AtrGDUyCTuPhgtgxA2cgVhBs4BcCtf-Y69VrqbPB5PKSdk54ncfodHIfK3wQIwwHJnEFbRxzIB3nUUG9juwVLXLrAbHRgP7keKILRtUE7DONpfhDaXnlBtbWlz0dKnrb33nuI8rXwK5_-R7vLaRDjUz5b9A_VRO_sDtTyxSUo_bih9umnm7x7ZnEffUdoHcvwmxajtysJ6-3Wl0UHw77Ft16WBV4cM1YNNtGF7Wgpo3igW60EPlJw6Qb3O3gNHRfz5hbjIoSwyDkDkXA

Слева стандартные «Мягкие тени». Без боли на это смотреть невозможно.

Справа из ассетстора за деньги, называется NGSS. Речь идет о Реалтаймовых тенях, а не о запеченных.

lJSjfmehgXcvcyJD5t3N9qJDUg1lGkAhcoPXWmD3U17u_AP1AzS2ZRN1kXid8t71W98LajNM_vnWmXaWCVidHU_ehpBxHj9Skm5X2sjnREyv4CM3KLTHdk6oBx8RrKmvngXZXlAFuiX5QtKUkrhm1dAJJRoVhEsRU2ZqU4RvQh8RIx7fm_hITn44TJ7jrtCO5IcC56E39-lSb8yh

Объемный свет

Нативного решения у юнити вообще нет, поэтому сравнивать не буду. Просто покажу, что есть несколько вариантов решений в ассетсторе на примере своей игры:

namkowH5f3R3tkrO-5WcK2d2y0RTqLvItI9YCHA0xf-6Y-jLpWUXm4w0mb1kx0fHp5RhAWiBWz9YqjUdghSkFTnaEboFKj74GrYrOEVa23iOM4s1VcoO1qVLWuhVKnoGlQccqr04

Есть бесплатный вариант AURA, есть платные решения. AURA мне по нескольким причинам не понравилась, в первую очередь из-за своей стабильности, поэтому я пользуюсь платным ассетом: HxVolumetricLighting.

Постобработка

У юнити есть есть PostProcessStackV2 и он в целом справляется со своей задачей, но кое чего всё равно не хватает, это хорошего AO, точнее HBAO+. Это ScreenSpace Ambient Occlusion, который не создает теней на объектах разнесенных по глубине.

dy5exgFXa5mmP5vtpOaixWreoIWN9zTLdM4LUQCwl0dmAliC7J-TfEjloDQN72HzTvzCCg65ipyBaR86Ro9amPLedXHaMn6EdXxYUDP78aq1YDYZuBUEd7KaMLodkny1Qm-CONFf

Кроме самозатенения тут есть и очень интересная возможность Color Bleeding — эмуляция вторичного отражения света, которое добавляет картинке жизни, в простонародье - вторичка(от Древнегреческого Secondary GI).

Шейдеры

Ну и в конце концов не стандартными материалами едиными живём, шейдеры тоже нужно делать уникальные и для этого совсем не обязательно писать код, потому что есть Amplify Shader Editor, нодовый редактор, который может освоить любой 3дмаксер, майер, блендераст и прочие синемешники. :) без обид, блендер клёвый!

-A0fetcdzjZkzkguy2Q1cODNf0kDu9-1ikyITm5Us7kW81hAN02B7pP3iPcCmZc0458oKmk5QUzZjQ4tKOMfYxoXQPKDTNTfNmdis14B07EXgpKdWl99nfQ4XB3fIVFulAczIgsv

В частности можно сделать вот такой вот шейдер стекла из картинки выше, а на картинке ниже то, как он выглядит в редакторе:

qKe7PpVYhi4zT78WPnz-pV9nsn0-B423CPHxjuYKoh-V8prYVATNVmnHgOz0ucu5RqMtw95aAPSrN6QmPriL4X2d1ORR16McN_kqyulO0QJdJnquNSho-ix9G_gQkosRqTLWYa1a

Как вы могли заметить, это мало чем отличается от стандартных материал эдиторов популярных 3д пакетов, и на самом деле переход с них на редактор шейдеров в юнити очень прост, достаточно просто изучить список доступных нод, а принцип всего остально тот же самый. Но вы не представляете насколько классно после часов страданий ожиданий в 3дмаксике результатов настройки материала - видеть всё в режиме реального времени да ещё и вращать всё на одном месте камерой.

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

Примеры были взяты из моей недавно выпущенной игры https://store.steampowered.com/app/1151430/Magnia/ поэтому, раз уж вы дочитали до этого момента - поддержите игру хотя бы добавлением в Вишлист:) Каждое такое действие помогает продвигаться игре вверх в анналах Стима, хотя это совершенно другая история, которую я могу рассказать, если вы не забыли про 10к просмотров и репостики :) Ну а если тема с юнити, никому не интересна, то так тому и быть! Всем адьёс!


PS: Покатились астедава! :)))test1.jpg

633 0 850 7
9
2019-11-13
Интересно! Спасибо! Подскажи, пожалуйста, а почему не UE? Предполагаю, что из-за расходной составляющей... Или нет? Тогда интересно узнать Твоё мнение. Заранее благодарен за ответ!
2019-11-13
Геймплей явно страдает, это мне стало ясно из видео. Да и цена для пазла дороговато. Но графика вполне.
2019-11-13
Руслан ЛатыповИнтересно! Спасибо! Подскажи, пожалуйста, а почему не UE? Предполагаю, что из-за расходной составляющей... Или нет? Тогда интересно узнать Твоё мнение. Заранее благодарен за ответ!

про это было пост назад в моем блоге )
2019-11-13
Сергей ПатюкГеймплей явно страдает, это мне стало ясно из видео. Да и цена для пазла дороговато. Но графика вполне.

это был тестовый проект по принципе сможем или нет сделать игру, но как обычно он затянулся, со дня на день более геймплейный проект затизерим.
2019-11-13
Руслан, там в моем блоге пост назад написано почему:))
2019-11-13
Сколько вы делали эту игру. И сколько человек в команде ?
2019-11-13
Сергей ПатюкСколько вы делали эту игру. И сколько человек в команде ?

первую версию 2 человека и 2 месяца, а потом спустя полтора года, когда китайцы нас кинули доделывали уже в 9 примерно за 2 мес
2019-11-14
Здравия желаю!

Благо дарю за весьма интересный и познавательный материал. С нетерпением буду ждать других статей о Unity.
2019-11-17
Ничего не хочу сказать, (ни плохого, ни хорошего) об этой статье, а лишь замечу что это от начала и до конца рекламный пост. А в конце автор ещё и игру свою прорекламировал. Заголовок тоже выбран довольно кликбейтный и открывая статью с подобным заглавием ожидаешь того, что автор будет разбирать процесс как он работал над графикой, а не список ассетов. В общем эта статья абсолютно бесполезна. Серьёзно, на просторах YouTube есть куда более полезные разборы ассетов с примерами их применения и сравнения со встроенными решениями. 😶
RENDER.RU