Иногда бывает полезно получить сводную информацию по объектам сцены в Blender в виде простейшей таблички, по которой можно быстро проинспектировать сцену и наметить объекты, требующие дальнейшего улучшения. Собрать такую статистику можно при помощи простого скрипта.
Давайте для примера соберем статистику по выделенным мешам. Мы запишем в табличку количество точек, ребер и полигонов каждого меша, что позволит быстро определить высокополигональные мешы, которые было бы неплохо доработать.
Определим список, в который мы будем заносить нашу статистику.
|
1 |
stat = [] |
Теперь пройдем в цикле по всем выделенным объектам сцены.
|
1 |
for obj in bpy.context.selected_objects: |
Через Blender Pthon API мы можем легко получить количество точек, ребер и полигонов для каждого текущего объекта. Однако перед получением статистики нам нужно “пересчитать” каждый объект, чтобы учесть изменения, которые добавляются объектам через модификаторы и ноды геометрии.
Мы можем получить указатель на “пересчитанный” объект при помощи глобального графа Depsgraf.
|
1 2 3 |
obj_data = obj.evaluated_get(bpy.context.evaluated_depsgraph_get()).data # bpy.data.meshes['Mesh'] |
Через полученный указатель считаем полную статистику по текущему объекту, его количество точек, ребер и полигонов, и добавим эти сведения в наш список статистики.
|
1 |
stat.append([obj.name, len(obj_data.vertices), len(obj.data.edges), len(obj_data.polygons)]) |
После заполнения списка статистики в цикле по объектам, отсортируем полученный список для удобства контроля. Например, по количеству точек (второй по порядку элемент в нашем списке статистики).
|
1 |
stat = sorted(stat, key = lambda item: item[1], reverse=True) |
Реверс нужен, чтобы в начале списка шли объекты с наибольшим количеством точек, которые мы в будущем будем оптимизировать.
Сохраним полученную таблицу в простой текстовый файл.
|
1 2 3 4 |
with open('_FILE_PATHNAME_.txt', 'w') as f: f.write('Name\tVerts\tEdges\tFaces\n') for item in stat: f.write(f'{item[0]}\t{item[1]}\t{item[2]}\t{item[3]}\n') |
Теперь можно открыть сохраненный файл для просмотра. Наиболее “тяжелые” меши будут расположены в первых строчках.
Кроме количества точек, полигонов и ребер, мы можем добавить в нашу статистическую таблицу любые нужные нам для контроля данные.
Использование табуляции как разделителей удобно тем, что такие данные легко переносятся в табличный редактор, например Excel, простым копированием (ctrl+c/ctrl+v).

.blend file on Patreon