带连通信息的VTK着色管滤波器

2024-05-19 07:07:55 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个分子,我想用球体和管子连接它们。我想根据连接信息给管子上色。这意味着我有各种断开连接的区域或断开连接的组件,我希望每个区域的颜色不同。到目前为止,我已经在python中找到了这个,它可以工作。我已经评论了我为实现这一目标所做的努力。avariabledata是一个包含点、标量和具有连通性信息的单元的PolyData数组。在

tube = vtk.vtkTubeFilter()
tube.SetInput(data)
tube.SetNumberOfSides(5);
#tube.SetVaryRadiusToVaryRadiusByAbsoluteScalar()
tube.SetVaryRadiusToVaryRadiusOff()
tube.SetRadius(0.1)

"""appendFilter = vtk.vtkAppendPolyData()
appendFilter.AddInputConnection(tube.GetOutputPort())
appendFilter.Update()

connectivityFilter = vtk.vtkPolyDataConnectivityFilter()
connectivityFilter.SetInputConnection(appendFilter.GetOutput())
connectivityFilter.ScalarConnectivityOn()
connectivityFilter.FullScalarConnectivityOn()
connectivityFilter.SetExtractionModeToAllRegions()
connectivityFilter.ColorRegionsOn()
connectivityFilter.Update()
"""
#print (connectivityFilter.GetNumberOfExtractedRegions())

tubeMapper = vtk.vtkPolyDataMapper()
tubeMapper.SetInputConnection(tube.GetOutputPort())
tubeMapper.Update()

这就是目前为止的情况 enter image description here


Tags: 信息区域颜色组件update分子球体vtk
1条回答
网友
1楼 · 发布于 2024-05-19 07:07:55

我确实有一些工作,但我不确定连接定义是否有问题。我只是忘了getOutputPort中的“端口”一词。答案是原子半径和其他选项无关

tube = vtk.vtkTubeFilter()
tube.SetInput(data)
tube.SetVaryRadiusToVaryRadiusOff()
tube.SetRadius(tuberad)

appendFilter = vtk.vtkAppendPolyData()
appendFilter.AddInputConnection(tube.GetOutputPort())
appendFilter.Update()

connectivityFilter = vtk.vtkPolyDataConnectivityFilter()
connectivityFilter.SetInputConnection(appendFilter.GetOutputPort())
connectivityFilter.SetExtractionModeToAllRegions()
connectivityFilter.ColorRegionsOn()
connectivityFilter.Update()

tubeMapper = vtk.vtkPolyDataMapper()
tubeMapper.SetInputConnection(connectivityFilter.GetOutputPort())
tubeMapper.SetScalarRange(connectivityFilter.GetOutput().GetPointData().GetArray("RegionId").GetRange())
tubeMapper.Update()

它最终看起来不错,但你可能会注意到一些明显连接的组件仍然是不同的颜色,我仍然想知道为什么。在

enter image description here

相关问题 更多 >

    热门问题