При экспорте сетки не удается создать читаемый файл слоя
Я написал небольшой скрипт, который загружает сетку (слой), затем применяет некоторые фильтры и, наконец, экспортирует все это обратно в виде слоя.
Все идет нормально. Но полученный ply-файл оказывается нечитаемым. Если я пытаюсь открыть его в MeshLab, он говорит: «Лицо с более чем 3 вершинами».
вот часть кода, которая касается pymeshlab (очищена):
import pymeshlab as ml
ms = ml.MeshSet()
ms.load_new_mesh(path + mesh_name)
ms.apply_filter('convert_pervertex_uv_into_perwedge_uv')
ms.apply_filter('transfer_color_texture_to_vertex')
ms.save_current_mesh(path + 'AutomatedGeneration3.ply')
Я что-то пропустил? На самом деле при выполнении этого сценария нет сообщения об ошибке. Я также пробовал использовать некоторые параметры для фильтра сохранения, но он ничего не изменил.
Как мне это исправить?
1 ответ
Похоже, это ошибка в экспортере .ply, используемом внутри метода
ms.save_current_mesh()
.
Метод пытается сохранить всю информацию, хранящуюся в сетке, которой на данный момент являются texture_per_vertex, texture_per_wedge и color_per_vertex, и что-то там не так.
Я нашел обходной путь, отключив сохранение texture_per_wedge (что необходимо только для
transfer_color_texture_to_vertex
фильтр.
import pymeshlab as ml
ms = ml.MeshSet()
#Load a mesh with texture per wedge
ms.load_new_mesh('input_pervertex_uv.ply')
m = ms.current_mesh()
print("Input mesh has", m.vertex_number(), 'vertex and', m.face_number(), 'faces' )
ms.apply_filter('convert_pervertex_uv_into_perwedge_uv')
ms.apply_filter('transfer_color_texture_to_vertex')
#Export mesh with color_per_vertex but without texture
ms.save_current_mesh('output.ply',save_wedge_texcoord=False,save_vertex_coord=False )
Список допустимых аргументов для
save_current_mesh
можно прочитать здесь https://pymeshlab.readthedocs.io/en/latest/filter_list.html#save-parameters
Обратите внимание, что
save_vertex_coord
относится к координатам текстуры на вершину !!!