[vtkusers] need help: how to let different isosurfaces and cutting planes(slices) have different colors?
boyeggplant110
boyeggplant110 at gmail.com
Wed Oct 3 01:08:45 EDT 2012
Hi all,
I am a beginner of VTK and I want to show several isosurfaces and slices at
the same time. The number of isosurfaces and slices depends on the input
from users . I want to inquiry
how to let different isosurfaces and slices have different colors according
to their inputted values which are used to the function of SetValue() in
vtkContourFilter and vtkCutter.
I attach my code in the following:
isosurfacenum=int(input("please enter how many isosurfaces you want: "))
cuttingsliceindex=list()
isosurfacevalue=list()
count=0
while isosurfacenum>0:
count+=1
input_isosurfacevalue=int(input("please enter the isosurface
value"+str(count)+": "))
isosurfacevalue.append(input_isosurfacevalue)
if count>=isosurfacenum:
break
count=0
cuttingplanenum=int(input("please enter how many cutting plane you want(up
to 4)"))
while cuttingplanenum>0:
count+=1
input_cuttingsliceindex=int(input("please enter the cuttingslice
value(up to 90)"+str(count)+": "))
if input_cuttingsliceindex>=90:
count-=1
print("your enter exceed the max value,please enter again")
continue
cuttingsliceindex.append(input_cuttingsliceindex)
if count>=cuttingplanenum:
break
reader=vtk.vtkStructuredPointsReader()
reader.SetFileName(input_data_name)
print("1")
# vtk isosurface
iso = vtk.vtkContourFilter()
iso.SetInputConnection(reader.GetOutputPort())
lenght_isosurfacevalue=len(isosurfacevalue)
while 1:
iso.SetValue(lenght_isosurfacevalue,
float(isosurfacevalue[lenght_isosurfacevalue-1]))
lenght_isosurfacevalue-=1
if lenght_isosurfacevalue==0:
break
normals = vtk.vtkPolyDataNormals()
normals.SetInputConnection(iso.GetOutputPort())
normals.SetFeatureAngle(45)
isoMapper = vtk.vtkPolyDataMapper()
isoMapper.SetInputConnection(normals.GetOutputPort())
isoActor = vtk.vtkLODActor()
isoActor.SetMapper(isoMapper)
outline = vtk.vtkStructuredGridOutlineFilter()
outline.SetInputConnection(reader.GetOutputPort())
outlineMapper = vtk.vtkPolyDataMapper()
outlineMapper.SetInputConnection(outline.GetOutputPort())
outlineActor = vtk.vtkActor()
outlineActor.SetMapper(outlineMapper)
print("2")
print("3")
print("4")
#cutting plane
print("5")
plane = vtk.vtkPlane()
plane.SetNormal(-0.287, 0, 0.9579)
plane = vtk.vtkPlane()
plane.SetNormal(-0.287, 0, 0.9579)
planeCut = vtk.vtkCutter()
planeCut.SetInputConnection(reader.GetOutputPort())
planeCut.SetCutFunction(plane)
lenght_cuttingsliceindex=len(cuttingsliceindex)
while 1:
planeCut.SetValue(lenght_cuttingsliceindex,
float(cuttingsliceindex[lenght_cuttingsliceindex-1]))
lenght_cuttingsliceindex-=1
if lenght_cuttingsliceindex==0:
break
cutMapper = vtk.vtkPolyDataMapper()
cutMapper.SetInputConnection(planeCut.GetOutputPort())
cutActor = vtk.vtkActor()
cutActor.SetMapper(cutMapper)
thanks!
JIE
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.vtk.org/pipermail/vtkusers/attachments/20121003/39e39548/attachment.htm>
More information about the vtkusers
mailing list