python - 如何获取多个多数据中的点

标签 python 3d vtk

我使用vtkAppendPolyData将多个多数据合并为一个多数据,并使用vtkSelectEnheldPoints获取多数据内的点。

这是使用tvtk.api的Python代码:

from tvtk.api import tvtk

# create some random points

points = np.random.randn(9999, 3)
pd_points = tvtk.PolyData()
pd_points.points = points
pd_points.verts = np.arange(len(points)).reshape(-1, 1)

# create two polydata

cube1 = tvtk.CubeSource()
cube1.update()
cube2 = tvtk.CubeSource()
cube2.center = (0.5, 0, 0)
cube2.update()

# merge the two polydata into one:

append = tvtk.AppendPolyData()
append.add_input_data(cube1.output)
append.add_input_data(cube2.output)
append.update()

# select points inside polydata

sep = tvtk.SelectEnclosedPoints()
sep.set_input_data(pd_points)
sep.set_surface_data(append.output)
sep.update()


# remove outside points

tp = tvtk.ThresholdPoints()
tp.threshold_by_upper(0.5)
tp.set_input_data(sep.output)
tp.update()
res = tp.output
res.point_data.remove_array(0)

结果如下:

enter image description here

如您所见,两个多数据内的点都不包括在内。

我不想使用 for 循环,因为我有很多多数据来剪辑数据。

最佳答案

您创建的曲面不是流形,vtkSelectEnclosurePoints 仅适用于流形。 尝试将 vtkBooleanOperationPolyDataFilterSetOperationToUnion() 一起使用,而不是 vtkAppendPolyData

关于python - 如何获取多个多数据中的点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31577220/

相关文章:

python - 如何使用 fft 创建音频低通滤波器

.net - 关于 WPF 中的 3D 效果

c++ - 了解 vtu 文件大小

c++ - 在一个窗口中显示多个 MRI 切片

python - 将 bmp 图像转换为 DICOM

python - 检测何时将新属性添加到 Python 中的对象?

python - 如何更改 Seaborn 中 regplot 的绘图大小?

python - 在 python 中将字符串值拆分为整数

ios - iOS:需要3D Touch吗?

c++ - 如何从其回调函数中删除节点?