[vtkusers] write vtkPolyData with colors from vtkPolyDataMapper

Andrew Maclean andrew.amaclean at gmail.com
Mon Jun 23 02:02:17 EDT 2014


Hi Jan,
 I may not be reading the question correctly but you can map the colours
from the vtkLookupTable as follows in the attached code.
Essentially you use an unsigned char array and calculate the colour for
each cell by interpolating using the vtkLookupTable, then you set the array
as a scalar in your polydata. VTK will then treat it as the cell colour.
This will allow you to save the colours of your cells.

Attached is a zip file with the code based on your code and a
CMakeLists.txt file.

Regards
   Andrew



> ---------- Forwarded message ----------
> From: Bill Lorensen <bill.lorensen at gmail.com>
> To: Jian Cheng <jian.cheng.1983 at gmail.com>
> Cc: VTK Users <vtkusers at vtk.org>
> Date: Fri, 20 Jun 2014 14:45:29 -0400
> Subject: Re: [vtkusers] write vtkPolyData with colors from
> vtkPolyDataMapper
> The lut is only used for rendering. The cell data contains scalar
> values that are mapped through the lut to provide r,g,b for display.
> If youo want to save r,g,b colors in the file, you must create r,g,b
> cell data.
>
> See for example:
> http://vtk.org/Wiki/VTK/Examples/Cxx/PolyData/ColorCellsWithRGB
>
>
> On Tue, Jun 17, 2014 at 6:28 PM, Jian Cheng <jian.cheng.1983 at gmail.com>
> wrote:
> > Hi,
> >
> > I would like to write a vtkPolydata into .vtk file with the colors from
> > vtkPolyDataMapper.
> > However the written .vtk file has  incorrect color which is different
> > from the rendered color.
> > Please see the following small code.
> > Your help will be appreciated.
> >
> > best,
> > Jian Cheng
> >
> > #include <vtkSmartPointer.h>
> > #include <vtkPolyDataMapper.h>
> > #include <vtkActor.h>
> > #include <vtkRenderWindow.h>
> > #include <vtkRenderer.h>
> > #include <vtkRenderWindowInteractor.h>
> >
> > #include <vtkLookupTable.h>
> > #include <vtkFloatArray.h>
> > #include <vtkCellData.h>
> > #include <vtkPolyData.h>
> > #include <vtkPlaneSource.h>
> >
> > #include <vtkPolyDataWriter.h>
> > #include <vtkSmartPointer.h>
> >
> > int main(int , char *[])
> > {
> >   // Provide some geometry
> >   int resolution = 3;
> >   vtkSmartPointer<vtkPlaneSource> aPlane =
> >     vtkSmartPointer<vtkPlaneSource>::New();
> >   aPlane->SetXResolution(resolution);
> >   aPlane->SetYResolution(resolution);
> >
> >   // Create cell data
> >   vtkSmartPointer<vtkFloatArray> cellData =
> >     vtkSmartPointer<vtkFloatArray>::New();
> >   for (int i = 0; i < resolution * resolution; i++)
> >     {
> >     cellData->InsertNextValue(i + 1);
> >     }
> >
> >   // Create a lookup table to map cell data to colors
> >   vtkSmartPointer<vtkLookupTable> lut =
> >     vtkSmartPointer<vtkLookupTable>::New();
> >   int tableSize = std::max(resolution*resolution + 1, 10);
> >   lut->SetNumberOfTableValues(tableSize);
> >   lut->Build();
> >
> >   // Fill in a few known colors, the rest will be generated if needed
> >   lut->SetTableValue(0     , 0     , 0     , 0, 1);  //Black
> >   lut->SetTableValue(1, 0.8900, 0.8100, 0.3400, 1); // Banana
> >   lut->SetTableValue(2, 1.0000, 0.3882, 0.2784, 1); // Tomato
> >   lut->SetTableValue(3, 0.9608, 0.8706, 0.7020, 1); // Wheat
> >   lut->SetTableValue(4, 0.9020, 0.9020, 0.9804, 1); // Lavender
> >   lut->SetTableValue(5, 1.0000, 0.4900, 0.2500, 1); // Flesh
> >   lut->SetTableValue(6, 0.5300, 0.1500, 0.3400, 1); // Raspberry
> >   lut->SetTableValue(7, 0.9804, 0.5020, 0.4471, 1); // Salmon
> >   lut->SetTableValue(8, 0.7400, 0.9900, 0.7900, 1); // Mint
> >   lut->SetTableValue(9, 0.2000, 0.6300, 0.7900, 1); // Peacock
> >
> >   aPlane->Update(); // Force an update so we can set cell data
> >   aPlane->GetOutput()->GetCellData()->SetScalars(cellData);
> >
> >   // Setup actor and mapper
> >   vtkSmartPointer<vtkPolyDataMapper> mapper =
> >     vtkSmartPointer<vtkPolyDataMapper>::New();
> >   mapper->SetInputConnection(aPlane->GetOutputPort());
> >   mapper->SetScalarRange(0, tableSize - 1);
> >   mapper->SetLookupTable(lut);
> >
> >   mapper->Update();
> >
> >   vtkSmartPointer<vtkPolyDataWriter> writer =
> > vtkSmartPointer<vtkPolyDataWriter>::New();
> >   writer->SetFileName( "aa.vtk" );
> >   writer->SetInputData( mapper->GetInput() );
> >   writer->Write();
> >
> >
> >   vtkSmartPointer<vtkActor> actor =
> >     vtkSmartPointer<vtkActor>::New();
> >   actor->SetMapper(mapper);
> >
> >   // Setup render window, renderer, and interactor
> >   vtkSmartPointer<vtkRenderer> renderer =
> >     vtkSmartPointer<vtkRenderer>::New();
> >   vtkSmartPointer<vtkRenderWindow> renderWindow =
> >     vtkSmartPointer<vtkRenderWindow>::New();
> >   renderWindow->AddRenderer(renderer);
> >   vtkSmartPointer<vtkRenderWindowInteractor> renderWindowInteractor =
> >       vtkSmartPointer<vtkRenderWindowInteractor>::New();
> >   renderWindowInteractor->SetRenderWindow(renderWindow);
> >   renderer->AddActor(actor);
> >   renderer->SetBackground(.1,.2,.3);
> >   renderWindow->Render();
> >   renderWindowInteractor->Start();
> >
> >   return EXIT_SUCCESS;
> > }
> >
> > _______________________________________________
> > Powered by www.kitware.com
> >
> > Visit other Kitware open-source projects at
> http://www.kitware.com/opensource/opensource.html
> >
> > Please keep messages on-topic and check the VTK FAQ at:
> http://www.vtk.org/Wiki/VTK_FAQ
> >
> > Follow this link to subscribe/unsubscribe:
> > http://public.kitware.com/mailman/listinfo/vtkusers
>
>
>
> --
> Unpaid intern in BillsBasement at noware dot com
>
>
> _______________________________________________
> vtkusers mailing list
> vtkusers at vtk.org
> http://public.kitware.com/mailman/listinfo/vtkusers
>
>


-- 
___________________________________________
Andrew J. P. Maclean

___________________________________________
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://public.kitware.com/pipermail/vtkusers/attachments/20140623/cbc6b3ff/attachment.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: ColourFromLUT.zip
Type: application/zip
Size: 2015 bytes
Desc: not available
URL: <http://public.kitware.com/pipermail/vtkusers/attachments/20140623/cbc6b3ff/attachment.zip>


More information about the vtkusers mailing list