Trim sheet: одна текстура на целый корабль
Один мой друг-окруженец показал скриншот: космический корабль, 40 объектов, один материал, одна текстура. Я открыл UV-редактор и минут пять молчал, потому что мозг отказывался понимать, как вся эта геометрия натянута на одну полоску 2048×256. Это была trim sheet — и после неё мои уровни стали дешевле вдвое.
Что такое trim sheet простыми словами
Обычная текстура — это «кожа» на конкретный объект: развернул UV, нарисовал, натянул. Trim sheet — это линейка: длинная полоса материала, где вдоль идут разные зоны — клёпанная броня, панель с швом, решётка вентиляции, скоба, граница двух цветов. Объекты не «обтягиваются» уникальной текстурой, а прижимаются к этой линейке: ребро панели совмещается с линией шва на полосе, плоская стена — с ровной зоной.
Аналогия из жизни: обои-багет. Потолок, стены, плинтус — разные поверхности, но молдинг один, и им обшит весь дом.
Почему это экономит деньги движка
- Один материал = один draw call. Корпус, башня, рубка, люки рисуются за один проход GPU вместо десяти. На слабых устройствах это разница между 60 и 25 кадрами.
- Одна текстура вместо двадцати. 2048×256 в памяти почти ничего не весит против набора 1K-карт на каждый объект.
- Переиспользование до бесконечности. Собрал из trim sheet коридор — та же полоса тянет ангар, снаружи, даже другой корабль. Художник нарисовал один раз, уровень-дизайнер строит неделю.
Как это делается технически
- Рисуется полоса (обычно 2048×256 или 4096×512) с чёткими вертикальными «линейками» — границами зон. Между зонами — переходы: заклёпки, буфер из тени, пара пикселей размытия, чтобы стык не резал глаз.
- В Blender UV всего объекта сжимается в одну полосу по вертикали (масштаб Y в нуль, практически) и растягивается по горизонтали так, чтобы рёбра попадали в нужные зоны. Ключевой инструмент — масштабирование UV-островов по одной оси и Snap к границам зон.
- Жёсткие грани по зонам не нужны: trim sheet рассчитывает, что геометрия простая, а детализацию рисует текстура.
Грабли, о которых молчат туториалы
- Растяжения на скосах. Любая грань под углом к «линейке» растягивает текстуру. Решение: фаски делать параллельными зонам или ставить на стык мелких деталей, где глаз не цепляется.
- Текстура мылится вблизи. Trim sheet — это про средний и дальний план. Герой-объект, к которому подпустят камеру на метр, всё равно хочет уникальную карту. Золотое правило: окружение — на trim, героя — индивидуально.
- Совпадающие пиксели на стыках объектов. Два блока рядом могут взять один и тот же участок полосы — и шов станет невидимым, а деталь задублируется. Лечится смещением UV-островов на несколько пикселей.
- Не забудьте normal/roughness ту же полосу. Trim sheet без нормал-карты — плоская раскраска. Клёпки и швы должны ловить свет.
Когда trim sheet — перебор
Один уникальный объект, органика, всё, что гнётся или деформируется на анимации. Trim живёт на жёстких поверхностях: техника, здания, корабли, вагоны, роботы-цехи. Именно поэтому из него строят космические корабли и промышленные уровни — там геометрия сама просится на линейку.
Попробуйте собрать один кубический коридор на полосе 2048×256. После третьего блока вы перестанете рисовать текстуры «под объект» навсегда.
Комментарии (0)
Форма для гостей комментариев пока не принимается — писать можно автору (expeot@outlook.com) или через владельца блога. Все записи выше настоящие, никто их не модерирует молча.