Использование

Полигонаж и оптимизация 3D-ассетов

23 июля 2026 г.7 мин чтения

Первое, что нужно понять про полигонаж: сам по себе он давно не главный ограничитель. Современная видеокарта переваривает миллионы треугольников; кадр чаще убивают вызовы отрисовки, количество материалов и объём текстур в видеопамяти. Полигонаж важен, но это одна метрика из четырёх, и смотреть на неё в отрыве бессмысленно.

Тем не менее ориентиры нужны — хотя бы чтобы отличить game-ready модель от меша, экспортированного из рендера.

Ориентировочные бюджеты

Цифры ниже — практические ориентиры, а не нормативы. Реальный бюджет зависит от того, сколько объектов одновременно в кадре и какой у вас целевой fps.

Платформа Главный персонаж Обычный проп Треугольников в кадре
Мобильные (средний Android/iOS) 5 000 – 15 000 200 – 1 500 100 000 – 300 000
ПК и консоли текущего поколения 30 000 – 100 000 1 000 – 10 000 миллионы
VR 10 000 – 30 000 500 – 3 000 жёстко ограничен: кадр рендерится дважды при 72–90 fps

Что из этого следует практически:

  • Пак «реалистичных пропсов» по 50 000 треугольников на бочку в мобильный проект не поедет, даже если по цене он выглядит выгодно.
  • Персонаж на 200 000 треугольников — это не «очень качественная модель», а модель, не подготовленная для игры. Такие делают под рендер и запекание.
  • В VR запас нужно закладывать втрое: то, что даёт 60 fps на мониторе, в шлеме превратится в тошноту.

Почему draw calls важнее треугольников

Один меш на 20 000 треугольников с одним материалом рисуется быстрее, чем двадцать мешей по 1 000 треугольников с двадцатью разными материалами. Каждый материал — это отдельный вызов отрисовки, а вызовы стоят процессорного времени.

Отсюда практическое правило при выборе ассета: смотрите не только на полигонаж, но и на количество материалов. Пак, где сорок пропсов используют один общий атлас, на порядок полезнее пака, где у каждой бочки собственный набор из четырёх текстур.

Проверить это в проекте просто:

  • Unity — окно Stats в Game View (Batches, SetPass calls), дальше Frame Debugger.
  • Unreal — консольные команды stat rhi и stat scenerendering.
  • Godot 4 — вкладка Monitors в профайлере, счётчики Draw Calls и Vertices.

LOD: как это работает и что должно быть в паке

LOD (Level of Detail) — набор упрощённых версий модели, между которыми движок переключается по размеру объекта на экране. Стандартная схема:

  • LOD0 — исходная модель, вблизи.
  • LOD1 — примерно 50% треугольников.
  • LOD2 — 25%.
  • LOD3 — 10% или меньше, часто уже силуэт.

Переключение задаётся долей экрана, которую объект занимает: в Unity это LODGroup с процентами Screen Relative Transition Height, в Unreal — настройки LOD в Static Mesh Editor, в Godot 4 упрощённые уровни для мешей генерируются автоматически при импорте.

Что важно при покупке: уточните, есть ли LOD в комплекте. Автоматическая генерация выручает для простых пропсов, но на персонажах и растительности даёт кашу — там LOD должен делать художник. Если в описании пака про LOD не сказано ни слова, скорее всего, их нет. В карточках 3D-моделей в нашем каталоге наличие LOD и полигонаж мы выносим в характеристики — специально чтобы не приходилось гадать по скриншотам.

Отдельно про растительность: трава и листва — почти всегда самое дорогое, что есть в сцене, из-за прозрачности (alpha test). Даже низкополигональный куст с alpha-маской обходится дороже, чем цельный камень втрое большего полигонажа.

Атласы текстур

Текстуры почти всегда занимают больше видеопамяти, чем геометрия. Одна карта 4096×4096 в несжатом виде — это десятки мегабайт, и таких карт в паке может быть по четыре на объект.

Что действительно помогает:

  • Общий атлас на группу объектов. Один материал на весь набор пропсов вместо материала на каждый — минус десятки draw calls.
  • Упаковка по каналам. Occlusion, Roughness и Metallic не нуждаются в цвете, их складывают в R, G и B одной текстуры (ORM/RMA). Вместо трёх файлов — один.
  • Адекватное разрешение. 4K-карта на бочку, которая на экране занимает 60 пикселей, — чистая трата памяти. Для мобильных проектов 1024 обычно достаточно, 2048 — потолок.
  • Сжатие под платформу. ASTC на мобильных, BC7/DXT на ПК. Несжатые PNG в билде — распространённая ошибка при импорте купленных паков.

Практический вывод: «8K PBR textures» в описании ассета — это не преимущество, а предупреждение. Скорее всего, пак делали под архвиз-рендер, и в игровой проект его придётся ужимать вручную.

Что делает Nanite в UE5

Nanite — система виртуализированной геометрии в Unreal Engine 5. Меш разбивается на кластеры треугольников, и движок подгружает ровно ту детализацию, которая видна на экране в текущем разрешении. Дерево на 500 000 треугольников вдалеке рисуется как несколько сотен — без ручных LOD и без ручного переключения.

Что это меняет на практике:

  • Для непрозрачной статичной геометрии LOD больше делать не нужно. Скалы, здания, каменные пропсы, кинематографичные меши — включили Nanite и забыли.
  • Полигонаж исходной модели перестаёт быть решающим критерием при выборе такого ассета.

Чего Nanite не делает:

  • Не уменьшает объём текстур. Память под карты остаётся вашей заботой, тут работают Virtual Textures и разумное разрешение.
  • Плохо дружит с прозрачностью. Материалы с alpha-blend вне его логики, masked-материалы стоят дороже обычных.
  • Имеет фиксированные накладные расходы. На простой сцене с малым числом треугольников Nanite может оказаться медленнее классического рендера — включать его «на всякий случай» не нужно.
  • Скелетную анимацию и растительность освоил позже и постепенно — поддержка скелетных мешей и Nanite Foliage появлялись как экспериментальные фичи в поздних версиях UE5. Перед тем как строить пайплайн на них, проверьте статус в документации вашей версии движка.

И главное: Nanite — это Unreal. Ассет, купленный «под Nanite», в Unity или Godot остаётся обычным высокополигональным мешем, которому нужны честные LOD. Разбивка каталога по движкам — на странице движков.

Чеклист перед покупкой 3D-ассета

  1. Указан ли полигонаж — и треугольниками, а не «полигонами» (квады считаются вдвое).
  2. Есть ли LOD и сколько уровней.
  3. Сколько материалов на пак и есть ли общий атлас.
  4. Разрешение текстур и формат карт (есть ли ORM-упаковка).
  5. Есть ли скриншот сетки (wireframe). Его отсутствие у 3D-пака — плохой знак.
  6. Триангулирована ли модель, нет ли n-гонов — иначе движок сделает это сам, иногда некрасиво.
  7. Развёртка UV: перекрывающиеся острова не позволят запечь лайтмапу.
  8. Для персонажей — есть ли скелет, к какой схеме привязан (Humanoid в Unity требует совместимого рига).

Если пак берётся под Unity, дальше пригодится гайд по импорту и настройке материалов. Что разрешает лицензия на модификацию модели — в разборе лицензий. А как оплатить покупку из России, чтобы лицензия осталась на вашем аккаунте, — здесь.

Готовы выбрать ассет?

Перейти в каталог