我需要相对于标量场可视化点云并显示标量条。对于这个任务,我使用 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)