[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