[vtkusers] Only flat shading with VRML data
Mika Fischer
mika.fischer at zoopnet.de
Fri Jul 6 09:06:29 EDT 2012
Yes, that fixed it! Thanks a lot!
Best,
Mika
On Fri, Jul 6, 2012 at 3:01 PM, Bill Lorensen <bill.lorensen at gmail.com> wrote:
> Try running vtkCleanPolyData before the normals calculation. The data may
> duplicate the points for each triangle. clean polydata will remove duplicate
> points.
>
> On Fri, Jul 6, 2012 at 5:21 AM, Mika Fischer <mika.fischer at zoopnet.de>
> wrote:
>>
>> Hi,
>>
>> first of all I have to say that is the first time that I use vtk and I
>> don't have much experience with 3D graphics.
>>
>> I have a 3d triangle mesh of a face in wrl format. I also managed to
>> display it. However the shading of the triangles seems to be flat.
>> Calling SetInterpolationToGouraud() or SetInterpolationToFlat() seems
>> to make no difference.
>>
>> The code used to load the data and display it is below. Am I missing
>> an important step here?
>>
>> Also, if I load the file in ParaView, it has the same issue and
>> switching from Flat to Gouraud makes no visible difference. However if
>> I use a CylinderSource, the shading is smooth as I would expect it
>> (and switching to flat makes a huge difference).
>>
>> Here's a screenshot of the data in paraview: http://zoopnet.de/vrml.png
>>
>> Any tips would be very much appreciated!
>>
>> Best,
>> Mika
>>
>> -------------------------------------
>> vtkSmartPointer<vtkVRMLImporter> importer =
>> vtkSmartPointer<vtkVRMLImporter>::New();
>> importer->SetFileName(fileWrl.c_str());
>> importer->Read();
>> importer->Update();
>>
>> vtkActorCollection* actors = importer->GetRenderer()->GetActors();
>> actors->InitTraversal();
>> vtkDataSet* pDataset = actors->GetNextActor()->GetMapper()->GetInput();
>>
>> vtkPolyData* polyData = vtkPolyData::SafeDownCast(pDataset);
>> polyData->Update();
>>
>> vtkSmartPointer<vtkPolyDataNormals> skinNormals =
>> vtkSmartPointer<vtkPolyDataNormals>::New();
>> skinNormals->SetFeatureAngle(90.0);
>> skinNormals->SetInput(polyData);
>> skinNormals->Update();
>>
>> vtkSmartPointer<vtkPolyDataMapper> solidMapper =
>> vtkSmartPointer<vtkPolyDataMapper>::New();
>> solidMapper->SetInputConnection(skinNormals->GetOutputPort());
>> solidMapper->ScalarVisibilityOff();
>>
>> vtkSmartPointer<vtkActor> solidActor = vtkSmartPointer<vtkActor>::New();
>> solidActor->SetMapper(solidMapper);
>> solidActor->GetProperty()->SetInterpolationToGouraud();
>>
>> -------------------------------------
>> _______________________________________________
>> 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 VTK FAQ at:
>> http://www.vtk.org/Wiki/VTK_FAQ
>>
>> Follow this link to subscribe/unsubscribe:
>> http://www.vtk.org/mailman/listinfo/vtkusers
>
>
>
>
> --
> Unpaid intern in BillsBasement at noware dot com
>
More information about the vtkusers
mailing list