[vtkusers] write vtkPolyData with colors from vtkPolyDataMapper

Jian Cheng jian.cheng.1983 at gmail.com
Wed Jun 25 21:28:48 EDT 2014


Hi Andrew,

Good. It is helpful for the people who has the same question as me.
Thank you very much!!

best,
Jian Cheng

On 06/25/2014 07:06 PM, Andrew Maclean wrote:
> Hi Jian,
> Glad to be of help.
> I have also done a more comprehensive example that also uses color
> transfer functions in addition to a lookup table of predefined colors,
> it also writes and reads vtp files,
> see:  http://www.vtk.org/Wiki/VTK/Examples/Cxx/Visualization/AssignColorsFromLUT
>
>
> Regards
>    Andrew
>
>
> On Thu, Jun 26, 2014 at 2:31 AM, Jian Cheng <jian.cheng.1983 at gmail.com
> <mailto:jian.cheng.1983 at gmail.com>> wrote:
>
>     Hi Andrew,
>
>     Thank you very much for your help!
>     That is what I am looking for.
>     I will use this way for my codes.
>     Thank you!
>
>     best,
>     Jian Cheng
>
>
>     On 06/23/2014 02:02 AM, Andrew Maclean wrote:
>>     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
>>         <mailto:bill.lorensen at gmail.com>>
>>         To: Jian Cheng <jian.cheng.1983 at gmail.com
>>         <mailto:jian.cheng.1983 at gmail.com>>
>>         Cc: VTK Users <vtkusers at vtk.org <mailto: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
>>         <mailto: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 <http://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 <mailto:vtkusers at vtk.org>
>>         http://public.kitware.com/mailman/listinfo/vtkusers
>>
>>
>>
>>
>>     -- 
>>     ___________________________________________
>>     Andrew J. P. Maclean
>>
>>     ___________________________________________
>>
>>
>>     _______________________________________________
>>     Powered by www.kitware.com <http://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
>
>
>
>
> -- 
> ___________________________________________
> Andrew J. P. Maclean
>
> ___________________________________________

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://public.kitware.com/pipermail/vtkusers/attachments/20140625/22d8fc12/attachment.html>


More information about the vtkusers mailing list