[vtkusers] write vtkPolyData with colors from vtkPolyDataMapper
Andrew Maclean
andrew.amaclean at gmail.com
Wed Jun 25 19:06:15 EDT 2014
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>
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>
>> 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
>
> ___________________________________________
>
>
> _______________________________________________
> 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
>
>
>
--
___________________________________________
Andrew J. P. Maclean
___________________________________________
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://public.kitware.com/pipermail/vtkusers/attachments/20140626/105f851a/attachment.html>
More information about the vtkusers
mailing list