Что такое текстуры и как они работают в 3D-графике
Когда смоделировать объект слишком сложно, в ход идут текстуры. Разбираемся, как с их помощью создают реалистичные модели, не тратя ресурсов.
![](https://248006.selcdn.ru/main/iblock/5c9/5c925de34c1befe82a9ca423dd2e83cd/63c804016f90a76fe8e5e232dca17c13.png)
![](https://248006.selcdn.ru/main/iblock/5c9/5c925de34c1befe82a9ca423dd2e83cd/63c804016f90a76fe8e5e232dca17c13.png)
vlada_maestro / shutterstock
За точную передачу геометрии 3D-объекта отвечает количество полигонов — тех самых векторных многоугольников, из которых состоит модель и с которыми работает дизайнер при её создании.
![](https://248006.selcdn.ru/main/upload/setka_images/11043122072020_27e9aa5bdf801f94f7728fe14d1ac08405e5a691.png)
Очевидно, что чем их больше, тем выше будет уровень детализации готовой модели. Но нельзя добавлять их до бесконечности — создание и отрисовка займут слишком много времени.
Сделать цифровой образ реалистичным, сохранив минимальное количество полигонов, позволяют текстуры и материалы.
Текстура (иногда её называют картой) — это растровое изображение, накладываемое на поверхность модели для придания ей цвета, свойств окраски или иллюзии рельефа.
Процесс создания текстур называется текстурированием или 3D-мэппингом (от англ. map — карта).
Как используются текстуры
Допустим, нам нужно визуализировать деревянный куб. Для этого мы можем создать простой куб и изменить его геометрию, чтобы придать ему вид дерева. Вместо этого лучше добавить карту цвета (англ. color map) — растровое изображение, которое будет наложено на полигоны. Именно её чаще всего имеют в виду, когда говорят о текстурах.
![](https://248006.selcdn.ru/main/upload/setka_images/11043322072020_6a4e9b3ae3023faad72ace61e6264ce47ed78056.png)
Изображение будет наложено на модель, но геометрия останется неизменной. Так мы создадим видимость рельефа, не тратя много ресурсов на моделирование и компьютерную отрисовку.
![](https://248006.selcdn.ru/main/upload/setka_images/11043122072020_c3d4b76cd89b05f2c8e5da53f69c6d45806e9160.png)
Готовая модель выглядит неплохо, но на ней нет микрорельефа — небольших трещин, впадин и выпуклостей, которые видны на текстуре. Особенно сильно это заметно, если взглянуть на углы — они абсолютно прямые.
Исправить это — придать рельефность — можно, добавив больше полигонов, но гораздо быстрее будет воспользоваться картой высот (англ. height map), которую также иногда называют картой рельефа. Это чёрно-белая текстура, которая позволяет сделать рельеф реалистичным.
Существует несколько видов карт высот, у каждой свои особенности:
- Bump map (англ. bump — кочка, выпуклость) создаёт иллюзию рельефа, но не меняет геометрию объекта. Для этого на цветовую текстуру компьютер накладывает небольшие искажения, чтобы создать иллюзию неровностей.
- Parallax map (параллакс — иллюзия движения объекта относительно фона, которая видна движущемуся наблюдателю) меняет положение отдельных участков текстуры при отрисовке. То есть при отрисовке parallax map меняется положение отдельных пикселей, а не вершин.
- Displacement map (англ. displacement — смещение) меняет геометрию объекта.
Вот пример displacement map:
![](https://248006.selcdn.ru/main/upload/setka_images/11043322072020_7b64da46b2dc4329c15be64aeef9e636261e678c.png)
При отрисовке модели с такой текстурой добавляются новые вершины, которые смещаются относительно полигона — поднимаются или опускаются. И мы получаем следующий результат:
![](https://248006.selcdn.ru/main/upload/setka_images/11043122072020_d58f50d1222620cd1cfe95da3a91221bd0d26e65.png)
Количество полигонов исходной модели не меняется, но геометрия объекта всё же становится более сложной во время отрисовки, поэтому здесь виден реальный рельеф, а не его иллюзия.
Карта смещений — одна из самых реалистичных карт высот. Но она и более затратная, так как во время отрисовки добавляются новые вершины. По этой причине displacement map используют не всегда, по возможности заменяя её другими текстурами. Например, комбинацией bump map и карты нормалей (англ. normal map) или parallax map — в зависимости от того, какого эффекта нужно добиться.
Процедурно генерируемые текстуры
На объект можно накладывать не только готовые текстуры, но и генерируемые компьютером. Например, можно создать текстуру шума (англ. noise texture) — изображение, содержащее визуальный мусор (шум).
![](https://248006.selcdn.ru/main/upload/setka_images/11043322072020_e3ea06ecc4efe66fd609360c227a5daace25eda6.png)
Текстура шума нужна, чтобы поверхность модели не выглядела слишком идеальной — в реальной жизни практически не встречаются безупречно ровные или идеально окрашенные предметы. Всегда есть какие-то потёртости, пятна, шероховатости и другие небольшие дефекты.
![](https://248006.selcdn.ru/main/upload/setka_images/11043222072020_93b8888c66d5103a8bb4f5fd89e04622d16558ec.png)
Использование шума помогает добиться различных визуальных эффектов. Например, если наложить его на цветовую карту, можно создать эффект разводов, мазков кистью, выцветания или потёртости.
Если использовать шум в качестве displacement map, это поможет быстро создать реалистичную штукатурку, глину, цедру апельсина, поверхность Солнца, плавленый сыр, панировку, тесто для пиццы и многое другое.
Практически любые поверхности можно имитировать с помощью шума, если подобрать правильные параметры.
Заключение
Существуют и другие виды текстур. Вот некоторые из них:
- Карты бликов (англ. specular map) позволяют указать, от каких частей свет должен отражаться, а от каких нет.
- Карты теней (англ. shadow map) позволяют заранее определить, как будет падать тень на модель. В основном карты теней используются в играх, потому что значительно ускоряют отрисовку.
- Диффузные текстуры (англ. diffuse map) — карта цвета без бликов.
- Карта смешивания (англ. stencil map) содержит информацию о распределении других текстур на поверхности.
Использование текстур значительно ускоряет работу 3D-художника. Даже если вы создаёте модели в мультяшном стиле, без текстур не обойтись, потому что для этого понадобится как минимум указать цвета разных частей объекта.
![](https://248006.selcdn.ru/main/upload/setka_images/11043222072020_db52642fc67f6c7c46657360f234a883af322464.png)
Если интересуетесь 3D-графикой и хотите профессионально заниматься моделированием и текстурированием, вам поможет наш курс
для 3D-художников.