[Paraview] MapDataArrayToVertexAttribute question

Utkarsh Ayachit utkarsh.ayachit at kitware.com
Fri Nov 14 22:29:28 EST 2014


Florian,

MapDataArrayToVertexAttribute expects the data array to be present in
the input data going into the mapper itself. I see you're creating a
new `darr`, but I don't see it being added to a dataset and then that
being passed on to the mapper. Are you doing that?

Having said that, you should look into adding a filter to add this
data array to your dataset, vtkProperty/vtkPointSpriteProperty isn't a
the best place to change input dataset being fed to the mapper.

Utkarsh

On Thu, Nov 13, 2014 at 7:19 AM, Florian Hoffmann
<florian.hoffmann at inutech.de> wrote:
> Dear all,
>
> I am trying to reuse some code from the point sprites plugin.
> I would like to pass some size information onto some shader code for nine
> different points like this:
>
> void vtkPointSpriteProperty::Render(vtkActor *act, vtkRenderer *ren)
>
> {
>
>
>
>    vtkPainterPolyDataMapper* mapper =
>
>           vtkPainterPolyDataMapper::SafeDownCast(act->GetMapper());
>
>
>    vtkSmartPointer<vtkDoubleArray> darr =
> vtkSmartPointer<vtkDoubleArray>::New();
>
>         darr->SetNumberOfTuples(9);
>
>         darr->SetName("testArray");
>
>         double size_tuple[1] = {0.2};
>
>         darr->SetNumberOfComponents(1);
>
>
>         darr->SetTupleValue(0, size_tuple);
>
>         darr->SetTupleValue(1, size_tuple);
>
>         darr->SetTupleValue(2, size_tuple);
>
>         darr->SetTupleValue(3, size_tuple);
>
>         darr->SetTupleValue(4, size_tuple);
>
>         darr->SetTupleValue(5, size_tuple);
>
>         darr->SetTupleValue(6, size_tuple);
>
>         darr->SetTupleValue(7, size_tuple);
>
>         darr->SetTupleValue(8, size_tuple);
>
>
>
>    mapper->RemoveVertexAttributeMapping("SizeParam1");
>    mapper->MapDataArrayToVertexAttribute("SizeParam1", darr->GetName(),
>
>             vtkDataObject::FIELD_ASSOCIATION_POINTS, 0);
>
>
>
>   glPushAttrib(GL_ALL_ATTRIB_BITS);
>
>   glEnable(vtkgl::VERTEX_PROGRAM_POINT_SIZE_ARB);
>
>   this->Superclass::Render(act, ren);
> }
>
> shader code :
>
> attribute float SizeParam1;
>
> attribute float SizeParam2;
>
> attribute float SizeParam3;
>
>
> vec3 GetSizeParams()
>
> {
>
>   vec3 sizeparams=vec3(0.0,0.5,0.8);
>
>     sizeparams.x = SizeParam1;
>
> //  sizeparams.y = SizeParam2;
> //  sizeparams.z = SizeParam3;
>
>
>   return sizeparams;
>
> }
>
>
>
> Question: How is the 0.2 stored in the tuple modified while passed to the
> shader code ?
>
> Because the value arriving in the
> shader code seems to be different from the value 0.2 which is stored in the
> tuples.
> I noticed, because if I hardwire 0.2 in the shader code like this
>
>
> vec3 GetSizeParams()
>
> {
>
>  vec3 sizeparams=vec3(0.2,0.5,0.8);
>
>   return sizeparams;
> }
>
> I see a different rendering.
>
> Could anyone please cast a light into this issue and tell me what I am doing
> wrong or rather which settings influencing the mapping I should draw my
> attention to ?
>
> Thanks.
>
> Best regards,
>
> Florian
>
> _______________________________________________
> 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 ParaView Wiki at:
> http://paraview.org/Wiki/ParaView
>
> Follow this link to subscribe/unsubscribe:
> http://public.kitware.com/mailman/listinfo/paraview
>


More information about the ParaView mailing list