[vtk-developers] Should vtkClipPolyData keep the normals?
Mathieu Coursolle
mcoursolle at rogue-research.com
Tue Sep 9 17:08:36 EDT 2008
Hi,
Thanks for the precisions. I am still trying to understand that code,
but
basically my concern is: Should the output have the same normals as
the input?
Thanks.
MAthieu
On 9-Sep-08, at 4:44 PM, Berk Geveci wrote:
> Something is fishy there. The line you added is copying the point data
> onto itself.
>
> vtkPointData *inPD=input->GetPointData(), *outPD = output-
> >GetPointData();
> ....
> output->GetPointData()->PassData(outPD);
>
> That PassData() should not do anything at best and may corrupt the
> output data at worst. Can you post a small example demonstrating the
> issue?
>
> -berk
>
>
> 2008/9/9 Mathieu Coursolle <mcoursolle at rogue-research.com>:
>> Hi VTK developers,
>> I am using vtkClipPolyData to clip a vtkPolyData with an implicit
>> function
>> (vtkBox).
>> The origin vtkPolyData has specific normals I want to keep for the
>> resulting
>> polydata.
>> Unfortunately, the normals are not the same in the output polydata.
>> I looked at the code, and I have a question regarding the creation
>> of the
>> output polydata:
>> For the Clipped Output, the PassData() method and the Squeeze()
>> method are
>> called one
>> the points, lines, polys, strips are set. This is not true for the
>> standard
>> output. Is there a reason?
>> Shouldn't the code be:
>> if (newVerts->GetNumberOfCells())
>> {
>> output->SetVerts(newVerts);
>> }
>> newVerts->Delete();
>> if (newLines->GetNumberOfCells())
>> {
>> output->SetLines(newLines);
>> }
>> newLines->Delete();
>> if (newPolys->GetNumberOfCells())
>> {
>> output->SetPolys(newPolys);
>> }
>> newPolys->Delete();
>>
>>
>>
>> output->GetPointData()->PassData(outPD); <<<<<<<<<< ADDED CODE
>> <<<<<<<<<<<<
>> output->Squeeze(); <<<<<<<<<< ADDED CODE
>> <<<<<<<<<<<<
>> if ( this->GenerateClippedOutput )
>> {
>> this->GetClippedOutput()->SetPoints(newPoints);
>> if (clippedVerts->GetNumberOfCells())
>> {
>> this->GetClippedOutput()->SetVerts(clippedVerts);
>> }
>> clippedVerts->Delete();
>> if (clippedLines->GetNumberOfCells())
>> {
>> this->GetClippedOutput()->SetLines(clippedLines);
>> }
>> clippedLines->Delete();
>> if (clippedPolys->GetNumberOfCells())
>> {
>> this->GetClippedOutput()->SetPolys(clippedPolys);
>> }
>> clippedPolys->Delete();
>>
>>
>>
>> this->GetClippedOutput()->GetPointData()->PassData(outPD);
>> this->GetClippedOutput()->Squeeze();
>> }
>> It seems to work alright with that fix, but I am not too sure of
>> what it is
>> doing...
>> Thanks!
>> Mathieu
>> _______________________________________________
>> vtk-developers mailing list
>> vtk-developers at vtk.org
>> http://www.vtk.org/mailman/listinfo/vtk-developers
>>
>>
>
More information about the vtk-developers
mailing list