Привет, народ!
Хочу с вами поделится вот-такой-вот полу-статьей полу-обучающей, которая «срывает покровы» с пре-рендера графики игры Взертос, о которой я уже писал тут пару раз об этой игре.
Если вкратце, то по сути это рендер «как в Диябло 1-2 или Фаллаут 1-2».
Настройка сцены
Стандартная сцена Блендера выглядит примерно вот так:
Обычно я всегда удаляю сразу всё т.к. в самом начале оно всё мешает. Особенно эта лампа, которая светит прямо в глаза! (нет)
Для Взертоса словно пришёл кинооператор со всеми инструментами и начал настраивать съёмочную площадку.
Особенностью является то, что мне необходимо было получить рендер модели в 8 направлениях. По большей части это дело анимации, но для удобства был добавлен объект «окружность» ( Add — Mesh — Circle ) и затем для удобства был удалён полигон(но не вершины), была добавлена форма стрелки из вершин и граней.
Зачем же этот объект нужен? Он выполняет роль подставки, которую можно крутить, примерно как у скульпторов. Перед этим конечно нужно будет привязать объект к этой «подставке», но об этом немного позже.
Камерамэн
У нас ничего не получится, если не будет «ока» т.е. камеры. И вот тут есть очень важный момент в настройках как камеры, так и расположения и привязок.
Камера установлена в положении (XYZ) = (0.0, -26.0, 15.0). Почему именно это положение? Ну во-первых цифры более-менее «круглые», а это мне нравится. А во-вторых (но на самом деле более важная часть) — угол в 60 градусов. Но важно отметить, что 60 градусов здесь относительно оси Z, которая вертикальная и идёт вверх. Т.е. если рассчитывать угол от «пола», то он будет равен 30 градусам.
У камеры так же есть своя «пустышка» или же «центр взгляда», который действительно помогал мне в некоторые моменты. По сути с её помощью просто удобнее делать сдвиг камеры по Z (для итогового изображения получается по оси Y).
Вот так это выглядит.
Так же очень важен момент, что камера должна иметь ортогональную проекцию и верный ортогональный размер. Вот мои настройки:
Они могут меняться в зависимости от нужд. Например, при рендере локации Медитастоун параметр Scale был больше 100, чтобы вся локация влезла в «объектив».
Для удобства оперирования объектами, рендером и вообще порядка в сцене используются (мной) слои.
Можно выделить объекты, нажать на [M] и выбрать на какой слой отправить объект. Это не те же самые слои, что и в Фотошопе, Гимпе или Крите. Тут они скорее играют роль «слотов», нежели слоёв. Жаль нельзя добавить больше, чем доступно с самого начала.
Таким образом я разделяю часть «камера», «подставка» и собственно сами модели на других слоях.
Но есть ещё один слой…
Солнце светит. Или не солнце. Или не светит.
Третий «системный» слой это 2 источника направленных света. Один из них основной свет «солнца», а второй вспомогательный, чтобы модель не была засвечена только с одной стороны.
По сути установки всё готово.
Свет, камера… осталось только прокричать «мотор», да вот только снимать нечего — нет модели, а у неё нет анимации. Но даже если бы и были, то это ещё не конец. Далее не менее важный момент…
Установки рендера
В этом проекте я использовал так называемый «old-school style» т.е. намеренный понижение размера итогового изображения, никакого сглаживания и даже было думал ограничить цвет.
Собственно в этом и заключается часть настроек: снижаем размер итогового изображения (конкретно в этом примере это 38% от 256х256), убираем сглаживание anti-aliasing, во вкладке Shading ставим Alpha: Transparent (по стандарту там Sky).
Можно рендерить! Но… постойте! Где же «секрет рендера»?
«Секрет рендера»
(на самом деле не очень)
То, к чему я пришёл уже почти после первых версий игры. Когда-то эта идея забылась, но вспоминалась, когда я хотел было сделать свою ДДНТ (где кстати тоже есть Взертос), в том проекте я ориентировался на графику Доты2 и тут сидела подсказка, суть которой в том, что…
Всё что ниже, ближе к полу — темнее, всё что выше — светлее. Используй умный градиент, дубина!
Суть простая. Когда рендрится картинка, то она как бы «пустая» т.е. да, там есть свет, тени, но чего-то не хватает.
Нужно просто домножить картинку на чёрно белый градиент — легкая мысль, но реализация не так проста.
Если просто «затемнить» по градиенту, то это будет «не торт» т.к. геометрически неверно.
Следующей мыслью было то, чтобы взять координату по Z и уже на основе этой координаты считать градиенты. И собственно это помогло. Далее нужно было ещё придумать как же так на каждый материал это ставить. НА КАЖДЫЙ ?! ЧТО?! ДА У МЕНЯ 100500 МОДЕЛЕЙ УЖЕ ГОТОВО!!!
Предыдущий опыт подсказывал мне, что можно воспользоваться каким-то методом пост-процесса. И хорошо было бы ставить на все объекты один материал перед рендером, эх, вот если бы Блендер уме… постойте! Так он умеет! Да, можно поставить на всю сцену один материал, при этом не запароть данные сцены! Вот это я и называю настоящими слоями — можно отрендерить разные части сцены (но с одной камеры видимо) и потом по своему усмотрению их «композировать».
Приветствуются любые вопросы относительно этой темы.
Было бы вам интересно такое и подобное? Про Блендер и всякое около разработческое.
Всем мир, чуваки!
Лучшие комментарии
Я сам не разработчик но почитать всегда интересно.