スカラ値による濃淡ではなく、RGB値によるフルカラー表示を行う際は、RGB各値を3成分のUnsigned Char型ベクトル値として定義する必要がある。CSVなどのテーブル形式データからTable To Pointsフィルタで点群化した色付き点群は、通常RGB値がそれぞれInt型スカラ値として独立しているため、以下のコードによりRGB値を変換・結合することでフルカラー表示を実現する。
Programmable Filter適用後、Object Inspector上のPropertiesタブにて‘Map Scalars’のチェックを外す。
動作確認バージョン
ParaView 4.2.0
Output Data Set Type
vtkPolyData
Script
pdi = self.GetInput()
pdo = self.GetOutput()
c = vtk.vtkUnsignedCharArray()
c.SetName('Colors')
c.SetNumberOfComponents(3)
c.SetNumberOfTuples(pdi.GetNumberOfPoints())
r = pdi.GetPointData().GetArray(0)
g = pdi.GetPointData().GetArray(1)
b = pdi.GetPointData().GetArray(2)
for i in range(pdi.GetNumberOfPoints()):
c.SetTuple3(i, r.GetValue(i), g.GetValue(i), b.GetValue(i))
pdo.GetPointData().AddArray(c)
コメントを残す