[vtkusers] question ? [Generate the colors for each cell based on color map]
Agata Krasoń
agatakrason at gmail.com
Fri Aug 24 08:43:33 EDT 2012
Hi ;)
I have already implemented generation the colors for each point based on
color map.
Now I need to generate the colors for each cell(triangle) based on color
map.
For points : I have like this : It works good ;)
vtkSmartPointer<vtkPointData> pd = grid->GetPointData();
pd->SetScalars(fd);
pd->Update();
vtkSmartPointer<vtkPolyData> polydata =
vtkSmartPointer<vtkPolyData>::New();
polydata->SetPoints(points);
polydata->SetPolys(polys);
polydata->GetPointData()->SetScalars(fd);
double bounds[6];
polydata->GetBounds(bounds);
// Find min and max z
double minz = bounds[4];
double maxz = bounds[5];
// Create the color map
vtkSmartPointer<vtkLookupTable> colorLookupTable =
vtkSmartPointer<vtkLookupTable>::New();
colorLookupTable->SetTableRange(minz, maxz);
colorLookupTable->Build();
// Generate the colors for each point based on the color map
vtkSmartPointer<vtkUnsignedCharArray> colors =
vtkSmartPointer<vtkUnsignedCharArray>::New();
colors->SetNumberOfComponents(3);
colors->SetName("Colors");
for(int i = 0; i < polydata->GetNumberOfPoints(); i++)
{
double p[3];
polydata->GetPoint(i,p);
double dcolor[3];
colorLookupTable->GetColor(p[2], dcolor);
unsigned char color[3];
for(unsigned int j = 0; j < 3; j++)
{
color[j] = static_cast<unsigned char>(255.0 *
dcolor[j]);
}
colors->InsertNextTupleValue(color);
}
polydata->GetPointData()->SetScalars(colors);
polydata->Update();
// Save mesh with attributes
vtkSmartPointer<vtkPolyDataWriter> pointAttrWriter =
vtkSmartPointer<vtkPolyDataWriter>::New();
pointAttrWriter->SetInput(polydata);
pointAttrWriter->SetFileName("meshWithPoints24.08.vtk");
pointAttrWriter->Write();
*
But for cells, I have made something like this : It doesn't create a
colors ?*
*There is something wrong with this code ? *
vtkSmartPointer<vtkCellData> pd = grid->GetCellData();
pd->SetScalars(fd);
pd->Update();
vtkSmartPointer<vtkPolyData> polydata =
vtkSmartPointer<vtkPolyData>::New();
polydata->SetPoints(points);
polydata->SetPolys(polys);
polydata->GetCellData()->SetScalars(fd);
double bounds[6];
polydata->GetBounds(bounds);
// Find min and max z
double minz = bounds[4];
double maxz = bounds[5];
// Create the color map
vtkSmartPointer<vtkLookupTable> colorLookupTable =
vtkSmartPointer<vtkLookupTable>::New();
colorLookupTable->SetTableRange(minz, maxz);
colorLookupTable->Build();
// Generate the colors for each cell based on color map
vtkSmartPointer<vtkUnsignedCharArray> attributes =
vtkSmartPointer<vtkUnsignedCharArray>::New();
attributes->SetNumberOfComponents(3);
attributes->SetName("Colors");
* for(int i = 0; i < polydata->GetNumberOfCells(); i++) //
here ???
{
double p[3];
polydata->GetCell(i); //
double dcolor[3];
colorLookupTable->GetColor(p[2], dcolor);
unsigned char color[3];
for(unsigned int j = 0; j < 3; j++)
{
color[j] = static_cast<unsigned char>(255.0 *
dcolor[j]);
}
attributes->InsertNextTupleValue(color);
}
polydata->GetCellData()->SetScalars(attributes);
polydata->Update();
*
// Save mesh with attributes - cells
vtkSmartPointer<vtkPolyDataWriter> cellAtrrWriter =
vtkSmartPointer<vtkPolyDataWriter>::New();
cellAtrrWriter->SetInput(polydata);
cellAtrrWriter->SetFileName("Celltest.vtk");
cellAtrrWriter->Write();
I would appreciate for any help please ;)
------------------------------
agatte
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.vtk.org/pipermail/vtkusers/attachments/20120824/2ee1fe6a/attachment.htm>
More information about the vtkusers
mailing list