Какой взять тексель и сколько текстурных групп?

Информация нацелена на новичка, который без ТЗ делает работу в портфель.

Плотность текселя (Texel Density, далее TD) величина, которая показывает сколько пикселей будет содержать размерная единица модели px/см. Чем больше значение, тем больше пикселей будет выделено на отрисовку деталей, соответственно тем выше качество картинки. Обратной стороной высокого качества является высокий вес текстур, и как следствие движок будет дольше просчитывать отрисовку. Так вот чтобы вес текстур не был лишним, значение TD надо подбирать.

Выбор значения TD зависит от многих факторов, но для новичка достаточно этих:

1. Расстояние, с которого будет показана модель. Модель показана только целиком, общий, дальний план, то можешь сэкономить и взять от 4 до 10 px\см, тут чем дальше объект от камеры, тем меньше берешь значение. Если собираешься делать крупным планом рендеры модели, то TD лучше взять повыше, от 10 до 15 px\см, но тогда будет больше текстурных групп, тяжелее будет идти процесс текстурирования. Примеры:

1.jpg

2. Уровень детализации. Если модель имеет много мелких деталей и нужно чтобы они были как следует прорисованы, бери TD повыше, на 3-4 px/см, не забывая про расстояние до камеры. Если есть возможность, то стоит собрать мелкие детали в отдельную текстурную группу и взять высокий TD, а остальные группы сделать с меньшим TD. Если деталей совсем мало, на нормальную UV не наберется, то можно в общей развертке с нормальным TD перед упаковкой апскейлить нужные острова (к примеру увеличить в два раза), чтобы только для них поднять TD.

3. Акценты. То, что будет в первую очередь привлекать внимание зрителя, стоит также отнести в группу с более высоким TD. Например лицо (тут ещё и детализация), фары авто, приборная панель и т.д. Днище автомобиля едва ли будет видно на твоей презентации, его напротив стоит отнести в отдельную группу, где TD будет в районе 3 px/см. Тоже самое касается задних стенок многих стационарных объектов, которые не будут показаны. Если у тебя сцена, где есть главная модель — центр внимания зрителя, и есть пропсы, то можно сэкономить, сделав пропсы с TD меньшим на 2-4 px/см, да и как правило, пропсы будут дальше расположены чем главный объект, что ещё позволяет уменьшить TD. Тоже самое касается всего окружения. Примеры далее будут.

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

Делать это лучше после того, как будет готова подетальная развертка, чтобы было понятно какие элементы будут оверлапнуты. В гугле не нашел формулу, но имея понимание, труда вывести самому не составило:

2.jpg

где S - площадь поверхности геометрии за вычетом оверлапнутых частей, см2;

a - сторона текстуры (..1024, 2048, 4096, 8192..), px;

TD - плотность текселя для которой ищем количество текстурных групп, px/см;

% - доля заполнения UV пространства после упаковки, так как до упаковки ты ещё не знаешь насколько плотно упакуешь, то для расчёта можно взять среднее наиболее вероятное значение - 0,7;

n - искомое количество текстурных сетов, шт.

Давай на примере покажу, чтобы наглядней.

Методика ниже может кому-то показаться сложной, но это не так — стоит один раз попробовать и потом этот процесс будет занимать несколько минут. Сложный взят пример с 4етыремя разными TD, чаще всего TD один на всю модель и всё вообще очень просто.

1) Есть Jeep Wrangler, сначала хочу убедиться, что его размеры соответствуют правде, иначе расчёт даст фейковые значения.

3.jpg

Всё верно, 3,8 м длина кузова. Выделяю всё, применяю скейл.

2) Делаю копию, удаляю (не применяю!) все зеркала и прочие модификаторы, которые остались для оверлапов на UV:

4.jpg

3) Группирую предварительно по TD. К слову, далеко не всегда нужно для одной модели брать разный TD, но в случае статичного авто, есть днище, где грех не сэкономить, и есть салон, который показывается крупным планом. Поэтому тут чаще всего лучше использовать 3-4 разных TD.

— Стекло фар, лобовое, стекло с приборки, иначе говоря всё, что имеет прозрачность, мы выносим в отдельную группу, чтобы только для этой группы у нас был альфа-канал, в целях экономии общего веса всех текстур. Будем рассчитывать на TD 10-12 px/см.

— Салон, приборка, зеркала, содержимое салона, тут мелкие детали, мелкие фаски, и рендер с близкого расстояния, поэтому TD в диапазоне 10-15 px/см.

— Кузов, колёса и всё что на нём есть, что не попадает в крупный кадр салона, хотим чтобы имело TD не менее 8 px/см.

— Днище, всё что есть под ним будет едва ли видно, будет в темноте, поэтому тут можно сэкономить ресурсы, выделим 3-4 px/см.

5.jpg

Все объекты с одинаковым TD объединяю в один меш, итого 4 меша у меня. Если у тебя один TD на всю модель, то соответственно объединяй всю модель в один меш. Это нужно для того, чтобы аддон посчитал площадь поверхности.

4) Включаю в настройках аддон 3D-Print Toolbox.

6.jpg

5) По очереди выбираю получившиеся меши, узнаю с помощью аддона площадь каждого: 3D-Print > Analyze > Area, записываю.

7.jpg

6) Cчитаем итоговое количество текстурных групп: — стекла тут сильно мало чтобы делать 4к группу на него, поэтому, подставил в расчёт размер текстуры a — 1024px, вышло чётко 10 px

8.jpg

— для салона, при TD 10 px/см, получилось 0,87 текстурные группы, округляем до 1, в итоге TD будет чуть больше, что нам на руку.

9.jpg

— для кузова с колесами получил 1,5 группы, округляю в бОльшую сторону, чтобы получить выше качество, а не ниже, итого 2 группы.

10.jpg

— с днищем тоже пришлось по экспериментировать, 4к оказалось сильно много, а 1к мало, в итоге остановился на одной 2к группе.

11.jpg

Можно сходу пересчитать, какой TD получится у днища, если мы запакуем его в 2к — 5,1 px/см.

12.jpg

Итого на весь джип 5 текстурных групп (1 — 1024, 1 — 2048, 3 — 4096). Я бы сказал, что это скорее много, чем мало, в реальном проекте, скорее всего, были бы более жесткие ограничения. Но это работа для портфеля, тут хочется иметь высокое качество текстур. Главное не ленись делать больше оверлапов!)

В качестве примера модель ученика Кайно — Романова Дмитрия

665 0 850 17
15
2022-04-24
Спасибо. Давно хотел прочитать что-то подобное.
2022-04-25
Вот это интересно
2022-04-25
Спасибо большое внимательно прочитал и осмыслил.
2022-04-25
Спасибо! Очень полезная и хорошо сделанная статья!
2022-04-25
Тексель вроде нужен только для бесшовных текстур
2022-04-26
А для игр это применимо? И в каких применяется, например в играх с видом сверху(арпг, ртс) ?
2022-04-26
а как задать нужный тексель, например в максе? в блендере есть вроде аддон, в максе вродь тож есть но как это применимо? или например: есть задание тексель 10.24 одна текстурная карта 4к, входные данные)) и как это применить?)) или ток бить по сетам?
2022-04-26
Николай, нет
2022-04-26
Николай, вовсе нет. Плотность текселя также должна быть одинаковой вдоль линий шва. Хорошая практика при развёртке - представлять себе, что ваша модель или будет склеиваться из бумаги, или изготовлена ковкой/штамповкой из плоского листа. Ну, или представляйте себе кусочки фольги, в которую вы заворачиваете деталь.
2022-04-26
Александр, UV Layout - в нём есть тул, который позволяет скейлить тайлсеты по максимальной, минимальной или усредненной плотности. Сшиваете тайлсет объекта, убираете максимально потяжки и нормализуете, потом скейлите по детальке, выбранной за эталон (лучше для этого взять самую крупную цельную деталь). Потом перед упаковкой тайлсетов в атлас можете вручную увеличить или уменьшить плотность детали сообразно желаемому результату на модели. А так, иметь плагин, позволяющий разворачивать объекты с фиксированным, жестко заданным текселем - это было бы оч круто...
2022-04-26
Дмитрий, это понятно и автоматически делается, а для моделей с разверткой и запеченными текстурами, мне кажется не важно какой тексель, текстуры ведь сделаны и покрашены по развертке хоть в 4к, хоть ты измени их до 2к они это этого не изменятся. Тексель нужен только для экономии места и материалов с бесшовными текстурами, чтобы на всех простых моделях был одинаковый размер текстуры, а для нормальных моделей там пофиг какой тексель, у них свой материал
2022-04-26
Николай, нет. Если ты красишь шелл в один цвет без детализации - то в этом случае не важно какой тексель. Если ты хочешь накинуть грязь на модель - то чем меньше тексель тем ниже разрешение текстуры будет. Грубо говоря тексель (складывается из двух слов "текстурный элемент") означает сколько пикселей на карте можно покрасить. А каждый пиксель можно покрасить только в один цвет
2022-04-26
Дмитрий, Благодарю
2022-04-28
Роман, Это в первую очередь применяется для игр. Конкретные цифры я хз как указывать, т.к. в статье приводятся цифры странные. Может, блендер так считает, но если смотреть в майке или RizomUV, то в играх с видом от третьeго лица тексель ~250 px\unit. Для игр от первого больше тысячи. Но зависит от того, пропс это или модель оружия в руках ГГ (в пропсах поменьше, в оружии больше). Как и указано в статье - всё зависит от того, насколько далеко объект удалён от камеры.
2022-04-28
🤦 учеников у него будет не много
RENDER.RU