Есть несколько факторов, которые способствуют тому, как геометрия сохраняется и обрабатывается в различных средах (программы, форматы файлов, API). Я реализовал несколько коммерческих программ анализа геометрии, поэтому у меня есть некоторый опыт в этом.
Во-первых, я уверен, что это не имеет ничего общего с Unity, упрощающим что-либо. Но в случае, если есть, есть несколько алгоритмов прореживания, которые могут быть реализованы, но я уверен, это не так, поскольку игровой движок не должен изменять форму (геометрические свойства меша), но обычно может изменять его связность. чтобы соответствовать его оптимальной структуре.
Вот некоторые из этих факторов:
Что делает вершину уникальной?
Это может сильно различаться в зависимости от того, как программа, API или формат файла работает с вершиной. Вершина может быть уникальной, если она имеет уникальную позицию, но в других случаях она уникальна, если у нее есть какой-либо уникальный атрибут. Например, если две вершины разделяют одну и ту же позицию, но имеют разные нормали, их следует «дублировать» в случае OpenGL, это особенно очевидно в случае упомянутого вами куба.
Хард против гладких краев.
Нормальные значения могут определять, считается ли ребро жестким или гладким, если вершина вносит вклад в резкое ребро, то ее необходимо дублировать, чтобы текущие API-интерфейсы рендеринга могли понять, как правильно визуализировать (заштриховать) эту грань.
индексы
Многие форматы файлов позволяют вершинам грани иметь несколько индексов для позиции вершины / texCoords / normals, это не относится к текущим API рендеринга. Прекрасным примером этого является файл Obj, который заставит Unity перестроить индексы и часто дублировать многие атрибуты, чтобы соответствовать индексам вершин.
связь
Многие вершины, которые на самом деле связаны и являются уникальными, сохраняются многократно, это связано с тем, как оригинальный обработчик файлов обрабатывал и сохранял сетку. Unity уменьшит количество дублирующихся вершин (помните, если у него другой атрибут, тогда он не уникален), чтобы сделать его более эффективным для хранения и обработки без ущерба для качества.
Это также связано с тем, сколько сторон многоугольника разрешает исходный файл, например, Obj разрешает многоугольники N-стороны, чего не хочет ни один здравомыслящий игровой движок, так что в итоге он триангулирует сетку и пересчитывает многие из его атрибутов, которые часто изменить количество вершин.