Геймдев
#статьи

Что такое текстуры и как они работают в 3D-графике

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

 vlada_maestro / shutterstock

За точную передачу геометрии 3D-объекта отвечает количество полигонов — тех самых векторных многоугольников, из которых состоит модель и с которыми работает дизайнер при её создании.

Полигональная сетка модели стула состоит из множества многоугольников, которые определяют форму предмета

Очевидно, что чем их больше, тем выше будет уровень детализации готовой модели. Но нельзя добавлять их до бесконечности — создание и отрисовка займут слишком много времени.

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

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

Процесс создания текстур называется текстурированием или 3D-мэппингом (от англ. map — карта).

Как используются текстуры

Допустим, нам нужно визуализировать деревянный куб. Для этого мы можем создать простой куб и изменить его геометрию, чтобы придать ему вид дерева. Вместо этого лучше добавить карту цвета (англ. color map) — растровое изображение, которое будет наложено на полигоны. Именно её чаще всего имеют в виду, когда говорят о текстурах.

Пример цветовой карты — имитация деревянной поверхности

Изображение будет наложено на модель, но геометрия останется неизменной. Так мы создадим видимость рельефа, не тратя много ресурсов на моделирование и компьютерную отрисовку.

Визуализированный куб с наложенной текстурой

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

Исправить это — придать рельефность — можно, добавив больше полигонов, но гораздо быстрее будет воспользоваться картой высот (англ. height map), которую также иногда называют картой рельефа. Это чёрно-белая текстура, которая позволяет сделать рельеф реалистичным.

Существует несколько видов карт высот, у каждой свои особенности:

  • Bump map (англ. bump — кочка, выпуклость) создаёт иллюзию рельефа, но не меняет геометрию объекта. Для этого на цветовую текстуру компьютер накладывает небольшие искажения, чтобы создать иллюзию неровностей.
  • Parallax map (параллакс — иллюзия движения объекта относительно фона, которая видна движущемуся наблюдателю) меняет положение отдельных участков текстуры при отрисовке. То есть при отрисовке parallax map меняется положение отдельных пикселей, а не вершин.
  • Displacement map (англ. displacement — смещение) меняет геометрию объекта.

Вот пример displacement map:

Светлые области — выпуклости, а тёмные — впадины

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

Куб с наложенной картой смещения

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

Карта смещений — одна из самых реалистичных карт высот. Но она и более затратная, так как во время отрисовки добавляются новые вершины. По этой причине displacement map используют не всегда, по возможности заменяя её другими текстурами. Например, комбинацией bump map и карты нормалей (англ. normal map) или parallax map — в зависимости от того, какого эффекта нужно добиться.

Процедурно генерируемые текстуры

На объект можно накладывать не только готовые текстуры, но и генерируемые компьютером. Например, можно создать текстуру шума (англ. noise texture) — изображение, содержащее визуальный мусор (шум).

Пример текстуры шума

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

Три шара с разными материалами

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

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

Практически любые поверхности можно имитировать с помощью шума, если подобрать правильные параметры.

Заключение

Существуют и другие виды текстур. Вот некоторые из них:

  • Карты бликов (англ. specular map) позволяют указать, от каких частей свет должен отражаться, а от каких нет.
  • Карты теней (англ. shadow map) позволяют заранее определить, как будет падать тень на модель. В основном карты теней используются в играх, потому что значительно ускоряют отрисовку.
  • Диффузные текстуры (англ. diffuse map) — карта цвета без бликов.
  • Карта смешивания (англ. stencil map) содержит информацию о распределении других текстур на поверхности.

Использование текстур значительно ускоряет работу 3D-художника. Даже если вы создаёте модели в мультяшном стиле, без текстур не обойтись, потому что для этого понадобится как минимум указать цвета разных частей объекта.

Модель без текстур (слева) и с текстурами (справа)

Если интересуетесь 3D-графикой и хотите профессионально заниматься моделированием и текстурированием, вам поможет наш курс
для 3D-художников.

Попробуйте новую профессию в геймдеве — бесплатно

Доступ к курсам за 0 р.

Я не знаю, с чего начать
Кто вы в мире геймдева? Узнайте на бесплатном курсе ➞
Вы на практике попробуете 3 профессии: геймдизайнера, 2D-художника и разработчика на Unity. Создадите свою первую игру в стиле Mario. Подробности — по клику.
Узнать больше
Понравилась статья?
Да

Пользуясь нашим сайтом, вы соглашаетесь с тем, что мы используем cookies 🍪

Ссылка скопирована