[Ves] How to color polydata with Scalars in VES

Aashish Chaudhary aashish.chaudhary at kitware.com
Tue Feb 25 13:11:33 EST 2014


Let me have a look at it. Will report back to you soon.

- Aashish



On Tue, Feb 25, 2014 at 10:26 AM, Bo Yu <yubo1983 at gmail.com> wrote:

> Thank you, Aashish, I tried to set name of a vtkDataArray, but that didn't
> make change,I still only see model with no color (or white color). if you
> have time could you please check my code below?
> I just create a simple triangle and try to paint it to red use
> colorByScale.
> However, It seems I can not change the color mode of "rep" in the last
> three lines. It always have the value as "Solid color"....
> Sorry, I just start to learn ves, and thank you so much for your reply and
> patient.
>
> Sincerely yours,
>
> Bo Yu
> /////////////////////
> /////testing
>     // Setup points
>     vtkSmartPointer<vtkPoints> points = vtkSmartPointer<vtkPoints>::New();
>     vtkSmartPointer<vtkCellArray> vertices =
> vtkSmartPointer<vtkCellArray>::New();
>     points->InsertNextPoint(0.0, 0.0, 0.0);
>     points->InsertNextPoint(1.0, 0.0, 0.0);
>     points->InsertNextPoint(0.0, 1.0, 0.0);
>
>     // Setup colors
>     unsigned char red[3] = {1, 0, 0};
>     vtkSmartPointer<vtkUnsignedCharArray> colors =
> vtkSmartPointer<vtkUnsignedCharArray>::New();
>     colors->SetNumberOfComponents(3);
>     colors->SetName("Colors");
>     colors->InsertNextTupleValue(red);
>
>     vtkDataArray *colorArray = vtkDataArray::SafeDownCast(colors);
>     colorArray->SetName("ColorsArray");  ////set color array name
>
>     vtkSmartPointer<vtkCellArray> triangles
> =vtkSmartPointer<vtkCellArray>::New();
>     vtkSmartPointer<vtkTriangle> triangle =
> vtkSmartPointer<vtkTriangle>::New();
>     triangle->GetPointIds()->SetId(0, 0);
>     triangle->GetPointIds()->SetId(1, 1);
>     triangle->GetPointIds()->SetId(2, 2);
>     triangles->InsertNextCell(triangle);
>
>     vtkSmartPointer<vtkPolyData> polydata =
> vtkSmartPointer<vtkPolyData>::New();
>
>     polydata->SetPoints(points);
>     polydata->SetPolys(triangles);
>     polydata->GetCellData()->SetScalars(colors);
>     ////////////
>
>     vesKiwiPolyDataRepresentation::Ptr rep =
> std::tr1::dynamic_pointer_cast<vesKiwiPolyDataRepresentation>(self->mKiwiApp->dataRepresentations()[0]);
>     rep->setPolyData(polydata);//(currentPolydata->getPolydata(),
> newColorLookupTable);
>     rep->colorByScalars("ColorsArray");  //colorArray->GetName()//(1.0,
> 0.0, 0.0, 1.0);
> ////////////////////////////////////////////
>
>
> -   -!  I forgot to cc to mail list.
>
>
> On Tue, Feb 25, 2014 at 11:37 PM, Aashish Chaudhary <
> aashish.chaudhary at kitware.com> wrote:
>
>> Bo,
>>
>> If I remember it correctly, you can name your scalar array "foo" and then
>> pass that array name to the Kiwi (have a look at the documentation for the
>> exact signature)
>>
>> vtkDataArray* da = ....;
>> da->SetArrayName("foo");
>>
>>
>>
>> On Tue, Feb 25, 2014 at 9:34 AM, Bo Yu <yubo1983 at gmail.com> wrote:
>>
>>> Hi, I am so sorry to interrupt again.
>>> This time I want to paint the polydata with different colors in each
>>> region. I found there is a method called
>>> void vesKiwiPolyDataRepresentation::colorByScalars(const std::string&
>>> arrayName)
>>> , which seem similar to the one I used before to set color of a polydata
>>> in VTK.
>>> polydata->GetCellData()->SetScalars(vtkDataArray *da).
>>>
>>> But why the input is a string called arrayName? If you know, Could you
>>> tell me how to use this method or give me some simple examples?
>>>
>>> Thanks in advance.
>>>
>>> Bo Yu
>>>
>>>
>>>
>>
>>
>> --
>> | Aashish Chaudhary
>> | R&D Engineer
>> | Kitware Inc.
>> | www.kitware.com
>>
>
>


-- 
| Aashish Chaudhary
| R&D Engineer
| Kitware Inc.
| www.kitware.com
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://public.kitware.com/pipermail/ves/attachments/20140225/d7f94ab9/attachment-0003.html>


More information about the Ves mailing list