资料
原理
代码参考:
- compas
- pymeshlab
- pytorch-3d
- loop_subdivision
- (mesh-subdivision)[https://github.com/ozkanyumsak/mesh-subdivision]
python代码
推荐使用pymeshlab
首先根据github中pymeshlab的readme安装好pymeshlab
def mesh_subdivision(obj_path):
ms = ml.MeshSet()
ms.load_new_mesh(obj_path)
# butterfly subdivision
# ms.meshing_surface_subdivision_butterfly()
threshold = ml.Percentage(0)
ms.meshing_surface_subdivision_loop(loopweight=0, iterations=1, threshold=threshold)
# select faces with edge longer than
# ms.compute_selection_by_edge_length(threshold=0.2)
m = ms.current_mesh()
print(dir(m));exit()
# print(m.selected_face_number())
vert = m.vertex_matrix()
face = m.face_matrix()
# edge = m.edge_matrix()
return vert, face # edge
其中threshold控制是否细分,如果mesh的最长的边小于threshold,就不分割。
实际效果
以上代码和用meshlab GUI的loop算法一样