问题描述
我正在尝试显示圆柱源 table.whitelist
的每个单元格的法线。
我正在使用 vtkCylinderSource
类和 vtkpolyDatanormals
但法线没有显示在 QT 视图中。
我不明白我做错了什么。
这是我现在使用的代码
vtkGlyph3D
解决方法
如果您使用此 example 中的字形配置并将比例因子设置为 1.0,则它会起作用。
在此处查看修改后的函数 draw_Electrode():
def draw_Electrode(self):
source = vtk.vtkCylinderSource()
source.SetCenter(0,0)
source.SetRadius(20)
source.SetResolution(100)
source.SetHeight(10)
trans = vtk.vtkTransform()
trans.PostMultiply()
trans.RotateX(90)
trans.RotateY(0)
trans.Translate(0,0)
trans_filter = vtk.vtkTransformPolyDataFilter()
trans_filter.SetInputConnection(source.GetOutputPort())
trans_filter.SetTransform(trans)
mapper = vtk.vtkPolyDataMapper()
mapper.SetInputConnection(trans_filter.GetOutputPort())
actor = vtk.vtkActor()
actor.SetMapper(mapper)
actor.GetProperty().SetColor(1,1,1)
actor.GetProperty().SetOpacity(0.5)
self.ren.AddActor(actor)
normals = vtk.vtkPolyDataNormals()
normals.SetInputConnection(trans_filter.GetOutputPort())
arrow= vtk.vtkArrowSource()
glyph = vtk.vtkGlyph3D()
glyph.SetInputConnection(normals.GetOutputPort())
glyph.SetSourceConnection(arrow.GetOutputPort())
glyph.SetVectorModeToUseNormal()
glyph.SetScaleModeToScaleByVector()
glyph.SetScaleFactor(1)
mapper2 = vtk.vtkPolyDataMapper()
mapper2.SetInputConnection(glyph.GetOutputPort())
actor2 = vtk.vtkActor()
actor2.SetMapper(mapper2)
actor2.GetProperty().SetColor(1,0)
self.ren.AddActor(actor2)
self.set_center()
self.Render()