gpt4 book ai didi

python - python中的网格抽取

转载 作者:行者123 更新时间:2023-11-28 22:35:24 26 4
gpt4 key购买 nike

我有一个包含大约 200 万个三角形的高分辨率三角形网格。我想将三角形​​和顶点的数量减少到大约 10000 个左右,同时尽可能地保留其一般形状。

我知道这可以在 Matlab 中使用 reducepatch 来完成。另一种选择是 qslim 包。在具有 python 接口(interface)的 VTK 中也有抽取功能,因此从技术上讲,它在 python 中也是可能的。 Meshlab 可能也可以在 Python 中使用(?)。

如何在 python 中进行这种网格抽取?示例将不胜感激。

最佳答案

这是一个最小的 python 原型(prototype),从它的 c++ 等效 vtk 示例 (http://www.vtk.org/Wiki/VTK/Examples/Cxx/Meshes/Decimation) 翻译而来,如 MrPedru22很好的建议。

from vtk import (vtkSphereSource, vtkPolyData, vtkDecimatePro)


def decimation():
sphereS = vtkSphereSource()
sphereS.Update()

inputPoly = vtkPolyData()
inputPoly.ShallowCopy(sphereS.GetOutput())

print("Before decimation\n"
"-----------------\n"
"There are " + str(inputPoly.GetNumberOfPoints()) + "points.\n"
"There are " + str(inputPoly.GetNumberOfPolys()) + "polygons.\n")

decimate = vtkDecimatePro()
decimate.SetInputData(inputPoly)
decimate.SetTargetReduction(.10)
decimate.Update()

decimatedPoly = vtkPolyData()
decimatedPoly.ShallowCopy(decimate.GetOutput())

print("After decimation \n"
"-----------------\n"
"There are " + str(decimatedPoly.GetNumberOfPoints()) + "points.\n"
"There are " + str(decimatedPoly.GetNumberOfPolys()) + "polygons.\n")


if __name__ == "__main__":
decimation()

关于python - python中的网格抽取,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38197212/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com