I want to export the result, but there is always no correct color after opening it with ParaView. If you have any other suggestions please let me know.
polydata = vtkAppendPolyData()
reader = vtkNIFTIImageReader()
reader.SetFileName('Brats18_2013_10_1_seg.nii.gz')
for label,color,name in zip(labels,Colors,CC):
pointColors = vtkUnsignedCharArray()
pointColors.SetNumberOfComponents(3)
pointColors.SetName('Colors')
dmc = vtkDiscreteMarchingCubes()
dmc.SetInputConnection(reader.GetOutputPort())
dmc.SetValue(0, label)
smooth = smooth_functions(dmc, 1)
output = smooth.GetOutput()
for i in range(output.GetNumberOfPoints()):
pointColors.InsertNextTuple3(*color)
output.GetPointData().Update()
output.GetPointData().SetScalars(pointColors)
polydata.AddInputData(output)
mapper = vtkPolyDataMapper()
mapper.SetInputConnection(polydata.GetOutputPort())
actor = vtkActor()
actor.SetMapper(mapper)
ren = vtkRenderer()
ren.AddActor(actor)
renWin = vtkRenderWindow()
renWin.AddRenderer(ren)
iren = vtkRenderWindowInteractor()
iren.SetRenderWindow(renWin)
iren.Initialize()
iren.Start()
exporter = vtkVRMLExporter()
exporter.SetRenderWindow(renWin)
exporter.SetActiveRenderer(ren)
exporter.SetFileName("cylinders11.wrl")
exporter.Write()
I originally used multiple actors to display different parts, but the exported result cannot be opened by ParaView, so I used vtkAppendPolyData