PyMeshLab - проекция MLS APSS - идентификатор текущей и прокси-сетки для цикла
Я пытаюсь обработать пакет файлов STL через pymeshlab. Я использую два фильтра, то есть «remeshing_isotropic_explicit_remeshing» и «mls_projection_apss». Проблема возникает с фильтром «mls_projection_apss», который по умолчанию использует идентификатор сетки = 0 как для управляющей, так и для прокси-сетки, в результате чего алгоритм всегда использует сетку с идентификатором 0 для всех будущих итераций.
Пожалуйста, помогите мне с тем, как определить, что идентификатор текущей сетки в наборе сеток используется в качестве контрольной и прокси-сетки вместо «0» по умолчанию.
Текущий код:
for filename in os.listdir(inputdir):
if filename.endswith(".stl"):
ms.load_new_mesh (os.path.join(inputdir, filename))
print(os.path.join(filename))
ms.current_mesh_id()
print(ms.current_mesh_id())
ms.remeshing_isotropic_explicit_remeshing(targetlen=0.1, checksurfdist=True, maxsurfdist=0.1)
ms.mls_projection_apss(controlmesh=, proxymesh=, filterscale=2)
ms.save_current_mesh(os.path.join(outputdir_2, filename))
1 ответ
Это работает для меня, но я не уверен, что вы этого хотите. Одна проблема, которую я обнаружил, заключается в том, что
ms.mls_projection_apss()
похоже, меняет current_mesh на 0, поэтому
ms.save_current_mesh()
сохраняет исходную сетку, а не результат фильтра MLS.
import pymeshlab as ml
ms = ml.MeshSet()
for filename in os.listdir(inputdir):
if filename.endswith(".stl"):
ms.load_new_mesh (os.path.join(inputdir, filename))
m = ms.current_mesh()
print(os.path.join(filename), ms.current_mesh_id(), m.vertex_number(), 'vertex', m.face_number(), 'faces' )
ms.remeshing_isotropic_explicit_remeshing(targetlen=0.1, checksurfdist=True, maxsurfdist=0.1)
#Get the id of the last mesh in the set
last_id = ms.number_meshes()-1
ms.mls_projection_apss(controlmesh=last_id, proxymesh=last_id, filterscale=2)
#Ensure we select last mesh before saving result
ms.set_current_mesh(ms.number_meshes()-1)
m = ms.current_mesh()
print("Saving", os.path.join(outputdir_2, filename), m.vertex_number(), 'vertex', m.face_number(), 'faces' )
ms.save_current_mesh(os.path.join(outputdir_2, filename))