[vtkusers] RGB colours for many lines in vtkPolyData
Arkadiusz Zychewicz
azychew at ippt.gov.pl
Wed Oct 14 04:22:11 EDT 2009
Hi,
I have to display many lines (~10000) and each one must have different
colour. For now I use scalar colour for that, but I cannot represent
black or white colour. I want to adopt the lookupTable but I cannot
figure out how it works.
vtkPoints* m_points = vtkPoints::New();
vtkCellArray*m_lines = vtkCellArray::New();
vtkFloatArray* m_lineScalars = vtkFloatArray::New();
vtkLookupTable* m_lookupTable = vtkLookupTable::New();
int m_curPointID = 0
for(int i = 0; i < lines.size(); i++){
m_lineScalars->SetNumberOfComponents(1);
m_points->InsertNextPoint(lines.getStart());
m_lineScalars->InsertNextTuple1(scalar); //this gives colour
// exp.: (r*256*256+g*256+b)/0xffffff
m_points->InsertNextPoint(lines.getEnd());
m_lineScalars->InsertNextTuple1(scalar);
m_lines->InsertNextCell(2);
m_lines->InsertCellPoint(m_curPointID);
m_lines->InsertCellPoint(m_curPointID + 1);
m_curPointID += 2;
}
m_lookupTable->SetNumberOfColors(0xffffff);
m_lookupTable->SetNumberOfTableValues(0xffffff);
m_lookupTable->Build();
int size = 0xff;
for (int ir = 0; ir < size; ir++) {
for (int ig = 0; ig < size; ig++) {
for (int ib = 0; ib < size; ib++) {
double r = ir / (double) size;
double g = ig / (double) size;
double b = ib / (double) size;
m_lookupTable->SetTableValue(ir * size * size + ig *
size + ib, r, g, b);
}
}
}
m_lookupTable->SetTableRange(0, 1);
// Create poly data
vtkPolyData* polyData = vtkPolyData::New();
polyData->SetPoints(m_points);
polyData->SetLines(m_lines);
polyData->GetPointData()->SetScalars(m_lineScalars);
More information about the vtkusers
mailing list