[vtkusers] Only flat shading with VRML data

Bill Lorensen bill.lorensen at gmail.com
Fri Jul 6 09:59:42 EDT 2012


OK, so the culprit is clean polydata.

On Fri, Jul 6, 2012 at 9:56 AM, Mika Fischer <mika.fischer at zoopnet.de>wrote:

> If I leave out the normals filter, I get flat shading *and* broken
> textures.
>
> So:
> vtkPolyDataMapper: flat shading, good texture
> vtkPolyDataNormals -> vtkPolyDataMapper: flat shading, good texture
> vtkCleanPolyData -> vtkPolyDataMapper: flat shading, broken texture
> vtkCleanPolyData -> vtkPolyDataNormals -> vtkPolyDataMapper: smooth
> shading, broken texture
>
> Best,
>  Mika
>
> On Fri, Jul 6, 2012 at 3:50 PM, Bill Lorensen <bill.lorensen at gmail.com>
> wrote:
> > Leave out the normals filter. Let's see you is messing with the texture
> > coordinates.
> >
> >
> > On Fri, Jul 6, 2012 at 9:38 AM, Mika Fischer <mika.fischer at zoopnet.de>
> > wrote:
> >>
> >> Unfortnuately, that yields exactly the same results...
> >>
> >> On Fri, Jul 6, 2012 at 3:33 PM, Bill Lorensen <bill.lorensen at gmail.com>
> >> wrote:
> >> > on the normals filter try
> >> > ->SplittingOff();
> >> >
> >> > On Fri, Jul 6, 2012 at 9:22 AM, Mika Fischer <mika.fischer at zoopnet.de
> >
> >> > wrote:
> >> >>
> >> >> Ok, unfortunately now I get a problem when mapping the texture on the
> >> >> surface. There are strage "seams" in some places:
> >> >> http://zoopnet.de/vrml2.png
> >> >>
> >> >> Without vtkCleanPolyData the texture mapping worked fine. I think the
> >> >> problem might be caused by the vertices of the polygons being changed
> >> >> by vtkCleanPolyData. Is there something I can do to transform the
> >> >> texture in the same way?
> >> >>
> >> >> The code used for texturing is below.
> >> >>
> >> >> Thanks a lot in advance!
> >> >>
> >> >> Best,
> >> >>  Mika
> >> >>
> >> >> ------------------------------------------------------------
> >> >> vtkSmartPointer<vtkBMPReader> bmpReader =
> >> >> vtkSmartPointer<vtkBMPReader>::New();
> >> >> bmpReader->SetFileName(fileBmp.c_str());
> >> >> bmpReader->Update();
> >> >>
> >> >> vtkImageData* image = bmpReader->GetOutput();
> >> >> vtkTexture *texture = vtkTexture::New();
> >> >> texture->SetInputConnection(bmpReader->GetOutputPort());
> >> >> texture->InterpolateOn();
> >> >>
> >> >> [...]
> >> >>
> >> >> solidActor->SetTexture(texture);
> >> >>
> >> >>
> >> >> On Fri, Jul 6, 2012 at 3:06 PM, Mika Fischer <
> mika.fischer at zoopnet.de>
> >> >> wrote:
> >> >> > 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
> >> >> >>
> >> >
> >> >
> >> >
> >> >
> >> > --
> >> > Unpaid intern in BillsBasement at noware dot com
> >> >
> >
> >
> >
> >
> > --
> > Unpaid intern in BillsBasement at noware dot com
> >
>



-- 
Unpaid intern in BillsBasement at noware dot com
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.vtk.org/pipermail/vtkusers/attachments/20120706/96ddcca4/attachment.htm>


More information about the vtkusers mailing list