[Ves] How to color polydata with Scalars in VES

Bo Yu yubo1983 at gmail.com
Tue Feb 25 10:26:14 EST 2014


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
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://public.kitware.com/pipermail/ves/attachments/20140226/35475fc2/attachment-0003.html>


More information about the Ves mailing list