0

我需要相对于标量场可视化点云并显示标量条。对于这个任务,我使用 python 和 VTK。我可以成功地可视化点云。唯一的问题是标量条。我希望将颜色分别分类为绿色、黄色、红色、紫色和蓝色,其中绿色显示最小标量值,蓝色显示最大标量值。我尝试了几种色调、饱和度和范围的组合,如下所示,但每次都不成功。

lookupTable.SetHueRange(0.666667,0.0)
lookupTable.SetSaturationRange(0.75,0.75)
lookupTable.SetValueRange(1.0,1.0)

你可以在下面找到我的代码。你能帮我定制标量条吗?我期待着您的回音

提前致谢

import vtk
def main(argv):
   file_name = "Him_021_ALLPOINTS_VTK.xyz"
   #TLS gösteren kup cizimi
   #colors = vtk.vtkNamedColors()
   ##CUBE PROPERTIES
   TLS = vtk.vtkCubeSource()
   TLS.SetXLength (0.7)
   TLS.SetYLength (0.7)
   TLS.SetZLength (0.7)
   TLSMapper = vtk.vtkPolyDataMapper()
   TLSMapper.SetInputConnection(TLS.GetOutputPort())
   TLSActor = vtk.vtkActor()
   TLSActor.SetMapper(TLSMapper)
   TLSActor.GetProperty().SetColor(25,25,25)
   TLSActor.GetProperty().SetDiffuseColor(0.5,0.5, 0.5)
   TLSActor.SetPosition(15.135215, - 24.626631, - 1.43235)
   ## VISUALIZE THE POINT CLOUD
   point_cloud_reader = vtk.vtkParticleReader()
   point_cloud_reader.SetFileName(file_name)
   point_cloud_reader.SetDataByteOrderToBigEndian()
   point_cloud_reader.Update()
   mapper_POINT_CLOUD = vtk.vtkPolyDataMapper()
   mapper_POINT_CLOUD.SetInputConnection(point_cloud_reader.GetOutputPort())
   mapper_POINT_CLOUD.SetScalarRange(2, 25)
   POINT_CLOUD_ACTOR = vtk.vtkActor()
   POINT_CLOUD_ACTOR.SetMapper(mapper_POINT_CLOUD)
   POINT_CLOUD_ACTOR.GetProperty().SetPointSize(1)
   ## SCALAR BAR PROPERTIES
   scalarBar = vtk.vtkScalarBarActor()
   scalarBar.SetLookupTable(mapper_POINT_CLOUD.GetLookupTable())
   scalarBar.SetWidth(0.05)
   scalarBar.SetNumberOfLabels(5)   
   ##SET LOOK UP TABLE
   lookupTable = vtk.vtkLookupTable()
   #lookupTable.SetHueRange(0.3666, 0.9977)
   lookupTable.SetHueRange(0.666667,0.0)
   lookupTable.SetSaturationRange(0.75,0.75)
   lookupTable.SetValueRange(1.0,1.0)
   lookupTable.SetNumberOfColors(50)
   lookupTable.Build()
   mapper_POINT_CLOUD.SetLookupTable(lookupTable)
   scalarBar.SetLookupTable(lookupTable)
   ren1 = vtk.vtkRenderer()
   #add cube
   ren1.AddActor(TLSActor)
   #add point cloud
   ren1.AddActor(POINT_CLOUD_ACTOR)
   #add sclar bar
   ren1.AddActor(scalarBar)
   #set background color
   ren1.SetBackground(155, 155, 155)
   renWin = vtk.vtkRenderWindow()
   renWin.AddRenderer(ren1)
   renWin.SetSize(900, 900)
   iren = vtk.vtkRenderWindowInteractor()
   iren.SetRenderWindow(renWin)
   style = vtk.vtkInteractorStyleTrackballCamera()
   iren.SetInteractorStyle(style)
   iren.Initialize()
   iren.Start()

if __name__ == '__main__':
    import sys

    main(sys.argv)
4

0 回答 0