[Paraview] PassData() question

Utkarsh Ayachit utkarsh.ayachit at kitware.com
Wed Oct 6 08:57:53 EDT 2010


Can you post screenshots with the modified shading so that we can compare?

Thanks
Utkarsh

On Wed, Oct 6, 2010 at 8:47 AM, Fred Fred <stan1313 at hotmail.fr> wrote:
> Hello,
> I was just showing to my students how to write a very basic filter, for them
> to concentrate on the different steps rather than on the algorithm itself
> but... my example did not work!
> The filter was supposed just to withdraw the X components of the normal of a
> PolyData and the students were asked to show a cylinder before and after the
> filter so as to compare the shading.
> Looking at the code of the PassData() function, it seems that it really
> copies everything but when I apply my filter, the shading is modified both
> in the output and the input.
> So where is the problem and how should I do it?
>
> int vtkPbPassData::RequestData(
>   vtkInformation *vtkNotUsed(request),
>   vtkInformationVector **inputVector,
>   vtkInformationVector *outputVector)
> {
>   // get the info objects
>   vtkInformation *inInfo = inputVector[0]->GetInformationObject(0);
>   vtkInformation *outInfo = outputVector->GetInformationObject(0);
>
>   // get the input and output
>   vtkPolyData *input = vtkPolyData::SafeDownCast(
>     inInfo->Get(vtkDataObject::DATA_OBJECT()));
>   vtkPolyData *output = vtkPolyData::SafeDownCast(
>     outInfo->Get(vtkDataObject::DATA_OBJECT()));
>
>   // pass all associated data to output dataset
>   output->CopyStructure(input);
>   output->GetPointData()->PassData(input->GetPointData());
>   output->GetFieldData()->PassData(input->GetFieldData());
>
>   // modify the normals
>   vtkPointData *pd = output->GetPointData();
>   if (pd ==NULL) {
>     vtkErrorMacro(<<"No point data");
>     return 1;
>   }
>   vtkFloatArray *norms = (vtkFloatArray *)pd->GetNormals();
>   if (norms == NULL) {
>     vtkErrorMacro(<<"Normals must be defined for this filter to work");
>     return 1;
>   }
>   float *coords = norms->GetPointer(0);
>
>   for (int i=0 ; i<output->GetNumberOfPoints() ; i++,coords+=3)
>     *coords = 0;
>
>   return 1;
> }
>
>
> _______________________________________________
> 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://www.paraview.org/mailman/listinfo/paraview
>
>


More information about the ParaView mailing list