UV-развёртка без садизма: швы, растяжения и pack
UV-развёртка — этап, который новички ненавидят, а профессионалы делают на автомате. Суть проста: трёхмерную шкуру надо разрезать и разложить на плоском листе так, чтобы текстура легла без искажений. Портняжное дело, ничего магического. И, как в портняжном деле, всё решают швы.
Что такое растяжение и откуда оно берётся
Представьте, что вы разворачиваете мандариновую кожуру. Целая сфера плоской не станет — где-то она порвётся или растянется. То же с 3D-сеткой: области с двойной кривизной (сфера, торс, морда) математически не разворачиваются без искажений. Можно только выбрать, где рвать (швы) и где терпимо растянуть.
Проверка — шахматная текстура (checker). В Blender: Assign Checker-материал → Edit Mode → Numpad 7 (вид сверху UV) → ортотекстура. Квадраты должны быть квадратами везде. Ромбы и прямоугольники = растяжение; чем сильнее, тем заметнее будет текстура на модели.
Правила швов
- Невидимость. Швы — подмышка, внутренняя сторона бедра, затылок, подошва, низ стола. Никогда — по центру лица, по передней стороне руки, по видному ребру брони.
- Меньше обреза. Каждый шов — это место, где две половины текстуры должны сойтись идеально. 30 швов на камне не нужны, хватит трёх.
- По направлениям формы. cylinders разрезаются одной продольной линией, сферы — «зубчиком» из нескольких долек. Буква L разворачивается лучше прямоугольника: меньше лоскутов.
Мой процесс в Blender
U→ Smart UV Project только для пропсов-расходников и блокетов. Для персонажей и героя-пропсов — никогда: автоматика нарезает сотню осколков и убивает плотность.- Ручной маршрут: выделить петли (
Alt+клик) →Mark Seam(Ctrl+E) → выделить всё (A) →U→ Unwrap. - Average Islands Scale (
UVменю) — выравнивает плотность всех островков. Без него рукав получит 500 px/m, а torso 150 — и текстура будет мыльной на одних частях, пиксельной на других. - Pack Islands с Margin 0.003–0.005: зазор между островками спасает от «кровотечения» текстур при фильтрации. Для атласов 2048 ставлю margin побольше.
Плотность (texel density) — слово, которое отличает профи
Texel density — сколько текстуры приходится на метр поверхности. Стандарт индустрии для героев ~1024 px на метр при атласе 2K, для окружения 512 px/м. Проверяю так: островок куба 1×1 м должен занимать на атласе квадрат «сторона атласа / метраж». Blender: аддон UV Toolkit или вручную — выделите остров, смотрите dims в UV-редакторе.
Разная плотность на одном атласе — это не катастрофа, если она осмысленная: лицо плотнее ботинок. Катастрофа — случайная.
Типовые грабли
- Островки друг на друге. Pack не сделал, вручную наложил — запёкшаяся нормаль покажет шов двойной линией. Проверяю Overlap: UV → Select Overlaying.
- Зеркалка без дублирования текстур. Зеркалю геометрию — получаю зеркальные надписи на логотипе. Либо отдельный UV, либо мириться.
- Шов на нормал-карте по видимому ребру. Один пиксель рассинхрона на шве — и на границе виден «стык пластыря». Сшиваю плотнее или переношу шов.
Хорошая развёртка невидима: текстура лежит ровно, плотность одинаковая, швов не видно. Видна только плохая — и тогда игрок вспоминает вашу фамилию нехорошими словами.
Комментарии (1)
Pack с контролем плотности и тест на растяжение checker-ом — применил в тот же вечер, мыло ушло.
Форма для гостей комментариев пока не принимается — писать можно автору (expeot@outlook.com) или через владельца блога. Все записи выше настоящие, никто их не модерирует молча.