Найти в Дзене
Помоги себе сам

Как работают текстуры и как нарисовать свою для 2D и 3D

Оглавление

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

Что такое текстура и зачем она нужна

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

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

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

В 3D текстуры немного сложнее, но позволяют сделать намного больше. Сначала они делают всё то же что и в 2D, но как только появляется источник освещения, то мы можем задать дополнительно для каждой точки текстуры насколько прямо отразится свет или будет поглощён поверхностью. Более того, мы можем текстурой указать насколько поверхность изменится относительно изначального уровня (или только сделает вид, что изменится), какие места будут бликовать или казаться грязными. Текстуры, позволяющие подобное сделать называются PBR-текстуры или текстуры для физически корректного рендеринга.

Принцип работы PBR-текстуры.
Принцип работы PBR-текстуры.

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

Своя бесшовная текстура для 2D-графики

Сначала надо сфотографировать объект. Лучше всего, чтобы он в этот момент освещался 2 и более источниками света, чтобы освещение было как можно равномернее.

В галерее ниже подробно проиллюстрировал как сделать листайте ->

Используя Photoshop или любой другой графический редактор следует максимально выровнять яркость. В Photoshop для этого я использую корректирующий слой с градиентом. После чего достаточно Яркость\Контраст поставить на "Авто" (или через меню Изображение -> Коррекция -> Тени/Света...), а затем пройтись по самым плохим местам инструментами "Осветление" и "Восстанавливающая кисть".

Затем надо сделать текстуру бесшовной. Для этого надо используя инструменты "Штамп" и "Заплатка" (как их применять я подробно рассказывал в заметке про простые приёмы в Photoshop). Просто берём фрагменты с противоположных концов выделением области и переносим на другой заплаткой - алгоритмы Photoshop'а сделают 90% дела сами. Затем с помощью штампа "наведём" линии: швы кирпича, волокна дерева и всё подобное, имеющее чёткие направления и границы, потому что заплатка зачастую их "размыливает" или как-то криво стыкует.

Своя PBR-текстура для 3D-графики

Чтобы сделать карты нормалей, освещения и другие - также можно воспользоваться Photoshop'ом. Но если текстура не чёрно-белая (где чёрное ниже белого) или её рельеф сложнее простых больших выпуклостей - это потребует значительной траты времени. Поэтому лучше воспользоваться специализированными плагинами для графических редакторов или отдельными программами. Я пользуюсь - утилиткой CrazyBump, она платная (стоит 299$) и они мне не платили за рекламу, поэтому намекну, что в интернете есть куча пиратских версий, но я как всегда не рекомендую пользоваться никаким варезом из-за вероятности подхватить вирус.

Если вы всё же решили сделать карту смещений или нормалей в Фотошопе, то надо будет обязательно убедиться, что получившиеся карты тоже бесшовные иначе на итоговом объекте может появиться "ступенька".

Итоговая текстура на шаре. Текстурные карты сгенерированы в программе CrazyBump
Итоговая текстура на шаре. Текстурные карты сгенерированы в программе CrazyBump

Если кому-то интересно увидеть в ленте заметку как накладывать такие текстуры в программе Blender (для картинки с пояснением про 3D на примере коры я именно там и сделал), напишите в комментариях - и я напишу заметку про это.