VTKのpythonバインディングを使用して、ポイントの高さに基づいて大きなポイントクラウドに色付けしています。私はvtk.vtkLookupTable
を使用して正しく色付けすることができ、すべての点をループし、GetColor
関数を使用してz値に基づいて色を取得していますが、多数の点をループするのは非常に遅いです。VTKの高さ値を使用して大きなポイントクラウドに色を付ける
lookUpTable = vtk.vtkLookupTable()
lookUpTable.SetTableRange(minz,maxz)
lookUpTable.Build()
# Create a unsigned char array to color
uCharArray = vtk.vtkUnsignedCharArray()
uCharArray.SetNumberOfComponents(3)
uCharArray.SetName("colors")
我々が作成した後LookupTable
とUnsignedCharArray
、私はすべてのポイントをループして上記で定義された配列を埋めています: 下記のコードは、私が コードのことをやった方法を紹介します。
# Assign color by extracting each color
for i in range(outputPolyData.GetNumberOfPoints()):
point = outputPolyData.GetPoint(i)
# Get the color from lookup table
color = [0]*3
lookUpTable.GetColor(point[2],color)
# Convert each color to 255
for j in range(len(color)):
color[j] = int(255 * color[j])
uCharArray.InsertTypedTuple(i,color)
# # Set Scalars
outputPolyData.GetPointData().SetScalars(uCharArray)
になります。しかし1000000
ポイント、その服用3.180秒を着色します。私は実際に8000000ポイントを持っています。色を割り当てるには、すべての点をループすると時間がかかります。 私はこれを行うには他の方法があると確信しています。もし誰かが私を正しい方向に向けることができれば、私はうれしいでしょう。