2016-11-08 5 views
1

분자와 연결하고있는 구체와 튜브로 표현하고 싶은 분자가 있습니다. 연결 정보에 따라 튜브를 채색하고 싶습니다. 다양한 연결이 끊긴 영역 또는 연결이 끊긴 구성 요소가 있다는 의미로 지역마다 다르게 색을 지정하고 싶습니다. 지금까지 파이썬으로이 작업을 수행하고 있습니다. 나는 이것을하기 위해 무엇을하려고했는지 논평했다. 가변적 인 data은 점, 스칼라 및 연결 정보가있는 셀을 포함하는 PolyData 배열입니다.VTK 착색 튜브 필터 (연결 정보 포함)

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

답변

0

실제로 작동하는 무언가를 가지고 있지만, 연결 정의에 문제가 있는지 확실하지 않다 모습입니다. 나는 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