<div dir="ltr"><div>Hi Jan,</div> I may not be reading the question correctly but you can map the colours from the vtkLookupTable as follows in the attached code. <div>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.</div>
<div>This will allow you to save the colours of your cells.</div><div><br></div><div>Attached is a zip file with the code based on your code and a CMakeLists.txt file.</div><div><br></div><div>Regards</div><div>   Andrew<br>
<div class="gmail_extra"><br><br><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><br>---------- Forwarded message ----------<br>From: Bill Lorensen <<a href="mailto:bill.lorensen@gmail.com" target="_blank">bill.lorensen@gmail.com</a>><br>
To: Jian Cheng <<a href="mailto:jian.cheng.1983@gmail.com" target="_blank">jian.cheng.1983@gmail.com</a>><br>
Cc: VTK Users <<a href="mailto:vtkusers@vtk.org" target="_blank">vtkusers@vtk.org</a>><br>Date: Fri, 20 Jun 2014 14:45:29 -0400<br>Subject: Re: [vtkusers] write vtkPolyData with colors from vtkPolyDataMapper<br>The lut is only used for rendering. The cell data contains scalar<br>


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