我正在尝试通过pymeshlab处理一批STL文件。我使用了两个过滤器,即"remeshing_isotropic_explicit_remeshing“和"mls_projection_apss”。过滤器"mls_projection_apss“出现了问题,默认情况下,控制网格和代理网格都使用网格id =0,导致算法在所有未来迭代中始终使用id为0的网格。
请告诉我如何定义网格集中当前网格的ID是用作控制和代理网格,而不是默认的"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))发布于 2021-10-15 10:36:10
这对我来说很有效,但我不确定这是否是你想要的。我检测到的一个问题是,ms.mls_projection_apss()似乎将current_mesh更改为0,因此ms.save_current_mesh()保存的是原始网格,而不是最小二乘滤波的结果。
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))https://stackoverflow.com/questions/69494994
复制相似问题