Почему PolyCount в Houdini и Unreal — это разные вещи?
Если вы смотрите только на PolyCount в Houdini — вы оптимизируете не то.
Знакомая ситуация: в Houdini ваш меш гордо показывает 10k полигонов, вы импортируете его в Unreal Engine 5, открываете статистику и видите... 20k, а то и все 30k «вертексов».
Где ошибка? Нигде. Просто PolyCount в DCC-софте и игровом движке — это две разные реальности. Давайте разберём, почему цифры расходятся и за чем на самом деле нужно следить Tech Artist-у.
1. Квады — это иллюзия
Houdini — мир процедурной логики, где мы обожаем Quads (четырёхугольники). Это удобно для топологии и деформаций. Но видеокарты работают только с треугольниками, поэтому любой движок триангулирует меш при импорте.
С чистыми квадами всё предсказуемо: 1 квад → 2 треугольника, поликаунт удваивается. Но если в вашей сетке есть нгоны (5+ рёбер) — будьте осторожны: алгоритм триангуляции в Houdini и в Unreal может разбить их по-разному. Итог — артефакты на поверхности или неожиданная топология уже в движке.
Золотое правило: триангулируйте меш сами в Houdini нодой divide перед экспортом — и вы точно знаете, что получите на той стороне. Если меш состоит из чистых квадов, треугольников станет ровно в 2 раза больше. Если есть нгоны — итоговое число зависит от сложности их разбиения.
2. Главный секрет: Points ≠ Vertices
Это фундаментальный момент, на котором строится вся оптимизация.
В Houdini Point — это просто точка в пространстве. В Unreal (и на уровне GPU) существует понятие GPU Vertex — уникальная комбинация данных:
- Позиция (XYZ)
- UV-координаты
- Нормали и тангенты
- Vertex Color
Если хотя бы один из этих параметров «разрывается» — видеокарта дублирует вершину.
UV Seams (Швы): точка на границе UV-островка превращается в две и более вершины, потому что у них разные UV-координаты.
Hard Edges (Жёсткие рёбра): нормали соседних полигонов смотрят в разные стороны — движок дробит одну точку на несколько, чтобы записать разные данные нормалей.
Классический пример — куб: