[vtkusers] Only flat shading with VRML data

Bill Lorensen bill.lorensen at gmail.com
Fri Jul 6 09:01:07 EDT 2012


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
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.vtk.org/pipermail/vtkusers/attachments/20120706/d8d0c934/attachment.htm>


More information about the vtkusers mailing list