При подготовке АГР (АКГ) моделей для сдачи в МКА, несколько лет назад возникла идея создания скрипта GeoAGR, очень облегчающего все этапы этой подготовки. К настоящему времени скрипт научился делать много чего. Решил сделать несколько обзоров работы с ним.
Один из сложных этапов работы состоит в создании правильной развертки моделей. А правильная развертка базируется на измерениях плотностей текселей, которые должны входить в требуемые диапазоны.
Сначала приведу немного теории, которая в многочисленных интернет-обзорах упускается из виду, ввиду того, что описывают ее вовсе не программисты, которые пишут формулы в программах, а опытные пользователи. Формулы они приводят совсем не те, которые соотвестсвуют моменту. Итак, формулы:
Причем, не зная первую полную формулу, из второй упрощенной формулы совсем непонятно, причем тут вообще тексель! Это вводит людей в заблуждение.
Эта упрощенная формула удобна для нарезки геометрии на лоскуты под дальнейшую развертку. Причем, если текстура тайлится и много полигонов, далеких от одинаковых квадратов, то она не будет тайлится в один UDIM целиком и надо заранее нарезать поверхность чаще, подбирая шаг нарезки.
Однако, реализация первой формулы в скриптах, утилитах и программах различна. Площади развертки могут считаться различными способами.
Если не используется проекция на плоскость UV, т. е. координата глубины W не равна нулю, то рекомендуется в редакторе развертки включать перед расчетами плотности текселя, развертку UW и VW, чтобы видеть как спроецирована развертка на плоскость UV, т. е. смотреть на развертку сбоку, а не сверху. Если вы видите не линию, а какую-то фигуру, то это увеличивает площадь Suv.
Площади полигона тоже могут считать разными способами. Если площадь полигона оказывается равна нулю (полигон стянут в точку или в линию), то значение плотности текселя превращается в ∞, часто используют разные методы обхода этого.
Кроме того, для набора полигонов могут использовать различные методы подсчета плотностей группы текселей: среднее арифметическое плотностей каждого полигона, могут вносить в первую формулу суммы всех площадей полигонов и текселей (например, в рамках одного UDIM), комбинированные методы, методы, «притягивающие за уши» эти определения, лишь бы получить что-то похожее, приблизительно получая значения численными методами или сильно округляя значения.
Итак, скрипты и программы:
GeoAGR для 3ds max.
- Для своего скрипта использую функцию подсчета формулы из утилиты Texel density tool (ниже).
- Подсчет плотностей происходит СРАЗУ НА ВСЕ выделенные тексели (полигоны), а не по одному выбранному текселю. Представьте себе модель на несколько сотен тысяч полигонов, которые надо перещелкать по одному текселю другими скриптами. Здесь - "по одному клику".
- В этом ключевое отличие от остальных скриптов.
- Выводится таблица с сортировкой и сопутствующими значениями из формулы и диапазоном плотностей.
- Ошибочные или близкие к ошибочным, тексели указываются разными цветами
- Так же можно считать плотность на группу.
- Выделение текселей может быть:
- все тексели модели (с указанием ID, UDIM),
- или выбранные по ID материала,
- или выбранные по номеру UDIM,
- или выбранные вручную в окне проекции или в редакторе развертки.
- Есть фильтрация по диапазонам: околонулевой площади (ошибочно развернутых) и по диапазонам требований МКА для АГР лоуполи и хайполи моделей.
- Есть просмотр нужных текселей из таблицы прямо на модели по клику.
- Есть возможность исправления плотности выбранных текселей под выбранное значение, по вариантам с разрывом ребер развертки или без.
- Есть инструменты для исправления ошибочной развертки или ошибочных полигонов.
Texel density tool для 3ds max
- Измеряет по полной (первой) формуле,
- подсчет площади текселя использует глубину развертки W,
- для набора полигонов, плотность текселей считается внесением в формулу значений всех полигонов и текселей на основе выделения текселей в редакторе,
- для различных метрических единиц, используются множители для получения значения приведенного к эталону,
- если площадь полигона равна нулю, она принудительно не меняется на другое значение.
UV Tools для 3ds max
- исходный код не удалось посмотреть, но во всём похож по значениям на Texel density tool для 3ds max, особенности не знаю.
Инструмент мне нравится, пользовался им пока не было GeoAGR.
Advanced UV Normalizer для 3ds max
- метод подсчета через «притягивание за уши»,
- значение площади текселя в развертке считается через микширование каналов и переразмеривание копии полигона под измерение площади полигона.
- Не рекомендую считать им совсем, слишком большая ошибка.
TexTools для 3ds max
- плотности текселя не получают, но получают значения близкие по смыслу, однако, совсем другие по значениям.
Blender-Texel-Density-Checker-2023.2 для blender
- Комбинированный метод подсчета плотностей,
- используются проценты от площадей (лишние вычисления на мой взгляд),
- среднее арифметическое плотностей для нескольких текселей (результат может отличаться от других методов),
- как измеряется площадь развертки посмотреть не удалось (используется ли глубина развертки W),
- eсли площадь полигона равна нулю, ее умышленно делают очень маленькой (типа 0.00001),
- это накапливает ошибку на мелких полигонах и не дает правильный просчет на них. Это очень важно для АГР проектов, если встречаются мелкие полигоны, то обречены на ошибку.
RizomUV
- Схож с Texel density tool для 3ds max по значениям,
- учёт глубины W для площади развертки не измерял.
- Про вычисления при нулевых значениях не могу сказать, т. к. исходный код программы не посмотреть.
- Если встречаются полигоны с околонулевой площадью (или ошибочные), нет возможности исправления и отлова их, т. к. весь инструмент работает только с разверткой. Придется возвращаться в макс для работы с такими.
Скрин GeoAGR для 3ds max