Инструкция по созданию корректного коллиматора в Marmoset Toolbag

Доброе время суток, дорогие читатели! Для начала я, пожалуй, представлюсь. Я выпускник курса Draft Punk, который начал свое обучение в феврале 2021 года.

Этот курс дал мне ту необходимую базу, которая необходима для профессионального развития в сфере 3D-моделирования. Еще на курсе я задавался вопросом, а что мне интересно моделировать?

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

Решением одной из этих особенностей я и хотел бы поделиться. Речь пойдёт о системе работы коллиматорных прицелов.

Схема работы коллиматорного прицела

Дело в том, что для человеческого глаза метка, которая находится «в стекле», не находится прямо посередине стекла, а проецируется туда системой линз, которая выдает изображение только под определенным углом к стеклу. Физика работы коллиматорного прицела показана на картинке выше.

Вывод: нам необходимо создать условия, при которых точка (прицельная метка) будет вести себя похожим образом. Столкнувшись с этой проблемой, я подумал, что можно попробовать воссоздать систему линз и прочие физические приемы в самой модели, но оказалось, что проблема давно решена.

На ArtStation существует гайд, по которому можно воссоздать физически корректный прицел в рендер-программе Marmoset Toolbag. Но он довольно неочевидный и не все знают английский, поэтому я постараюсь пошагово и максимально доступно объяснить суть моделирования коллиматорного прицела. Как и в гайде, рендер будет в Marmoset Toolbag.

Сначала необходимо сделать правильную геометрию самого стекла. Я буду использовать прицел со своего проекта. Нам необходимо две системы линз: система, которая содержит в себе информацию о входной и выходной линзе прицела, и стекло, воссоздающее точку, которая будет вести себя правильно.

Embedded Image
Embedded Image
Embedded Image

Прицел, геометрия линз и порядок их установки

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

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

Embedded Image
Embedded Image

Примеры UV-развёртки обеих систем

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

Разберёмся с первой системой стекл. Прежде чем текстурировать, нужно сменить пайплайн текстур на PBR — Metallic Roughness Alpha-blend (Allegorithmic). Этот пайплайн позволит учитывать прозрачность в слоях, а значит в получившихся текстурах.

Приступаем к созданию системы. Нам необходимо воссоздать входные и выходные линзы прицела. Останавливаться на этом детально не буду, главное — стёкла должны быть прозрачными. Создание 3D-моделей подробно разбирается на курсе Draft Punk.

Embedded Image
Embedded Image

Первая система в моём исполнении

Самое интересное в создании второй системы. Делаем два слоя. В нижнем оставляем только карту опасити, сделав слой полностью прозрачным. В верхний загружаем нужную нам альфу, которая будет отображаться только в двух картах: Color и Emiss. Альфа будет нашей прицельной меткой. Для простоты иллюстрации я поставлю просто точку посередине UV-пространства:

Embedded Image
Embedded Image

Первый слой и его преднастройки

Embedded Image
Embedded Image

Второй слой и его преднастройки. Меш пропал, но так и нужно

Мы завершили этап текстурирования. Экспортим ресурсы и переходим к следующему шагу.

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

Закинув нужные модели, начинаем заполнять карты. Помните, в Toolbag для стекла необходимо открыть пункт Refraction в разделе Transmission.

С первой системой все понятно. У нас будут необходимые карты для стекла:

Embedded Image
Embedded Image

Настройки первой системы

Со второй системой нужна другая схема. Вначале создаем идеально черную карту Height размером 16 на 16 пикселей. Это можно сделать в любом растровом редакторе. Я пробовал карты других разрешений и разницы не увидел, но если есть другие мнения, обязательно выслушаю и учту.

Далее, при наложении текстур на вторую систему нужно переключить Normal на Parallax в пункте Surfaсe.

Загружаем туда вышеупомянутую черную карту и прочие карты, которые мы редактировали — Albedo и Emission, который тоже вызываем и настраиваем по-своему. Потом играем с ползунками в пункте Height.

Можно заметить, что при большом угле просмотра точки тайлятся. В закрытом прицеле настолько большой угол невозможно соблюсти, а в открытом прицеле просто уменьшите UV-шейл второй системы, чтобы тайлинг не был таким навязчивым.

Готово. Перед нами правильный, физически корректный коллиматорный прицел: точка, которая имеет эффект параллакса.

Embedded Image
Embedded Image
Embedded Image
Embedded Image
Embedded Image
Embedded Image

Спасибо, что прочли мою статью. Если она оказалась полезной, в будущем я сделаю отдельный видеотуториал, где подробно объясню все нюансы в реальном времени. До новых встреч!

Комментарии: 0