Normally, this should do the trick.
There are a few examples at http://www.cmake.org/Wiki/VTK/Examples --> Adding
Colors to Polydata
Did you try to switch the two lines? Maybe the Update() call overwrites the
celldata.
This example does just that: .
http://www.cmake.org/Wiki/VTK/Examples/PolyData/ColorCells
Regards,
Jochen
Von: Tangi Meyer [mailto:[email protected]]
Gesendet: Mittwoch, 2. Juni 2010 16:45
An: Engel Markus
Cc: [email protected]
Betreff: [mitk-users] Digest, Vol 48, Issue 13
Hi Markus,
If I understand correctly, the goal is to associate a value (corresponding) to
a color to each face of the object, then define a LookUpTable difining the
value association with a rgba color.
So the 4 first points are ok for me but the 5th "Setup node-properties" is not
clear to me: I do not see where/how the CellScalars are associated with the
LookUpTable.
I tried to set the CellScalar value:
output->GetCellData()->SetScalars(scalars);
output->Update();
but nothing is visible.
How can I "associate" my color face array with the LookUpTable?
Thank you.
Best regards,
Tangi
-------------------------------------
Tangi MEYER
Virtual and Augmented Reality
System and Software Engineer
Leuvensesteenweg 325
B-1932 Zaventem - Belgium
Telephone: +32 (0) 2 721 54 84
Fax: +32 (0) 2 721 54 44
-------------------------------------
________________________________
From: "Engel Markus" <[email protected]>
To: "[email protected]" <[email protected]>,
"[email protected]" <[email protected]>
Sent: Monday, 31 May, 2010 10:32:48 AM
Subject: AW: mitk-users Digest, Vol 48, Issue 13
Hi Tangi,
If you want to color different parts of your surface with different colors, you
can use CellScalars and a LookupTable.
1. Create your surface-composition as proposed by Jochen.
2. create a vtkUnsignedCharArray that has as many elements as the surface has
triangles.
vtkUnsignedCharArray* scalars = vtkUnsignedCharArray::New();
scalars->SetNumberOfValues( surfaceComp->GetNUmberOfCells() );
3. For each triangle that belongs to one arrow set one scalar
- For int i=0; i<size of red arrow; i++
Scalars->SetValue( id, 0 );
Same for other two arrows as well. Consider that the Cell-Ids change
due to the surface-composition!
4. Create LookupTable
vtkLookupTable *vtkLUT = lookupTable->GetVtkLookupTable();
vtkLUT->SetNumberOfTableValues( 2 );
vtkLUT->SetRange(0.0, 3.0);
vtkLUT->SetTableValue( 0, rgb-red );
vtkLUT->SetTableValue( 1, rgb-blue );
vtkLUT->SetTableValue( 2, rgb-green );
vtkLUT->Build();
mitk::LookupTable::Pointer lookupTable = mitk::LookupTable::New();
lookupTable->SetVtkLookupTable(vtkLUT);
mitk::LookupTableProperty* lookupTableProperty =
mitk::LookupTableProperty::New(lookupTable);
5. Setup node-properties
node->SetProperty( "LookupTable", lookupTableProperty );
node->SetBoolProperty("scalar visibility", true);
node->SetFloatProperty("ScalarsRangeMaximum", 3);
node->SetBoolProperty("color mode", true);
node->Update();
That should do the trick. You can also set the ScalarType-Property to cellData
but cellData should be used automatically if nothing else is defined.
I hope this could help you in your attempt.
Bests,
Markus
------------------------------------------------------------------------------
ThinkGeek and WIRED's GeekDad team up for the Ultimate
GeekDad Father's Day Giveaway. ONE MASSIVE PRIZE to the
lucky parental unit. See the prize list and enter to win:
http://p.sf.net/sfu/thinkgeek-promo
_______________________________________________
mitk-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/mitk-users