Развертка 3D-модели в обычном понимании вписана в область квадрата 1001, где каждая часть UV имеет свои текстурные координаты относительно осей X и Y. А при переносе развертки на другой квадрат с такими же координатами относительно самого квадрата, например 1002, ничего не изменится. Это относится только к «классическому» УФ.
Таким образом, не имеет значения, в какой текстурной панели вы будете использовать модель. Главное, чтобы он был вписан в границы такого квадрата.
С мозаичными (бесшовными) текстурами, которые повторяются по вертикали и горизонтали и не имеют швов на переходах между панелями, эта необходимость отпадает. Оболочки можно размещать где угодно, в том числе по краям различных УФ-квадратов. Но это только в случае тайловых текстур. Если вы планируете запекать дополнительные карты текстур, этот способ не подойдет. Оболочки всегда должны соответствовать границам пространства.
При «классическом» пайплайне создания 3D-модели и ее текстурирования создается уникальная УФ-развертка в координатах текстуры 1001. Затем запекаются технические карты, которые в дальнейшем используются для текстурирования. Это может быть Substance 3D Painter, Mari, Quixel или другой пакет текстур. Далее идет экспорт в набор текстур для использования в движке рендеринга или реального времени. Например, при использовании шейдера PBR «Шерховатость металла» он будет включать в себя набор текстур: «Базовый цвет», «Металл», «Шерховатость», «Нормальный» и, при необходимости, «Амбиентное затенение.
Но в этом подходе есть ограничение на разрешение текстуры. Вы не можете увеличивать разрешение бесконечно, чтобы увеличить плотность пикселей сканирования (Texel Density). Скорее всего, вы будете ограничены разрешением 8K (8192x8192px). У Substance 3D Painter такой «потолок», он просто не может работать с разрешением более 8К. В такой ситуации есть выход – использовать УФ-сканирование UDIM.
Но при увеличении разрешения в 2 раза, например с 4К до 8К, количество пикселей на текстуре увеличивается в 4 раза. Что, естественно, скажется на производительности. Да, если вы создаете проект для рендера и не ограничены во времени, плюс у вас топовое железо, то это для вас не проблема. Но плохая оптимизация — это не выход, когда проект коммерческий.
UDIM-Workflow имеет возможность разбивать извлеченные оболочки на разные текстурные квадраты (1001, 1002, 1003 и так далее), благодаря чему вы увеличиваете плотность точек UV-элементов и получаете модель с более высоким разрешением текстуры. При этом будет иметь значение квадрат, в котором лежат ракушки, а количество текстур умножается на количество таких квадратов. То есть, если вы расширили сетку до 4 квадратов — 1001..1004, у вас будет 4 набора текстур и 16 файлов текстур (Base Color, Metal, Roughness, Normal). Делая это, вы увеличиваете разрешение модели не за счет увеличения разрешения самих текстур, а за счет увеличения их количества. Более наглядно процесс можно представить следующим образом. На примере грузовика выше. Вы разделили его на несколько самостоятельных частей - отдельных масок (кабина, кузов и рама с колесами).
Разворачивается и текстурируется отдельно, при этом у каждой модели могут быть свои текстурные координаты. В конце у вас будет 3 модели с 3 наборами текстур. Но этот вариант не всегда практичен. Поэтому использование UDIM и работа с ними в едином текстурном пространстве.
Сегодня UDIM можно найти только в фильмах или других продуктах компьютерной графики. Из-за ограниченной производительности железа обычных пользователей они не используются в современных играх. Однако стоит помнить, что многие технологии пришли в геймдев из кинопроизводства.
Больше интересных статей здесь: Технологии.
Источник статьи: UDIM UV-развертка.