[vtkusers] vtkBooleanOperationPolyDataFilter including disconnected faces

Fahlgren, Eric efahlgren at lifemodeler.com
Mon Jan 23 14:01:16 EST 2012


Cory,

Thanks, if there's anything I can do, just holler.  I'm building VTK off the git HEAD on Win 7 with MS VC++ 2010.  Should I convert my Python scripts to C++ so you can include them into the test suite?

Eric  


> -----Original Message-----
> From: Cory Quammen [mailto:cquammen at cs.unc.edu]
> Sent: Monday, January 23, 2012 10:22 AM
> To: Fahlgren, Eric
> Cc: vtkusers at vtk.org
> Subject: Re: [vtkusers] vtkBooleanOperationPolyDataFilter including
> disconnected faces
> 
> Hi Eric,
> 
> I am one of the main contributors of the boolean operation filters. I will
> take a look at this bug within the next couple days.
> 
> Thanks,
> Cory
> 
> On Mon, Jan 23, 2012 at 12:59 PM, Fahlgren, Eric
> <efahlgren at lifemodeler.com> wrote:
> > Here's another shot of a similar configuration (I think I've moved the
> spheres from the previous example).  This one clearly shows the odd
> shading on the stitching, which look to me to be normals pointed off to
> Mars or possibly Alpha Centauri.  Could they just be pointed 180 off, an
> inside/outside detection problem when generating those new faces that glue
> the surfaces together?
> >
> > http://www.lifemodeler.com/eric/badNormals.png
> >
> > Eric
> >
> >>
> >> Two problems, possibly related:
> >>
> >> 1) When I perform two successive Boolean operations, extraneous faces
> >> from the second solid of the final operation are left in the polydata.
> >>
> >> 2) Note the faces in the red box of the linked image.  The normals
> >> appear to be incorrect, there are occasional dark regions in odd
> >> places on the resulting polydata.
> >>
> >> Is there a filter I can add after the Boolean operations to eliminate
> >> the extra faces?  How about straightening up the normals?
> >>
> >> Thanks,
> >> Eric
> >>
> >> #!/usr/bin/env python
> >>
> >> import vtk
> >>
> >> LHS = vtk.vtkCubeSource()
> >> LHS.SetCenter((0.0, 0.0, 0.8))
> >>
> >> if 1:
> >>    triangle = vtk.vtkTriangleFilter()
> >>    triangle.SetInputConnection(LHS.GetOutputPort())
> >>    LHS = triangle
> >>
> >> if 1:
> >>    RHS = vtk.vtkSphereSource()
> >>    RHS.SetCenter((0.5, 0.0, 0.2))
> >>    RHS.SetRadius(1.0); RHS.SetPhiResolution(40);
> >> RHS.SetThetaResolution(40)
> >>
> >>    boolOp = vtk.vtkBooleanOperationPolyDataFilter()
> >>    boolOp.SetOperation(vtk.VTK_DIFFERENCE)
> >>    boolOp.SetInputConnection(0, LHS.GetOutputPort())
> >>    boolOp.SetInputConnection(1, RHS.GetOutputPort())
> >>    LHS = boolOp
> >>
> >> if 1:
> >>    RHS = vtk.vtkSphereSource()
> >>    RHS.SetCenter((-0.5, 0.0, 0.3))
> >>    RHS.SetRadius(1.0); RHS.SetPhiResolution(40);
> >> RHS.SetThetaResolution(40)
> >>
> >>    boolOp = vtk.vtkBooleanOperationPolyDataFilter()
> >>    boolOp.SetOperation(vtk.VTK_DIFFERENCE)
> >>    boolOp.SetInputConnection(0, LHS.GetOutputPort())
> >>    boolOp.SetInputConnection(1, RHS.GetOutputPort())
> >>    LHS = boolOp
> >>
> >> if 0:
> >>    fill = vtk.vtkFillHolesFilter()
> >>   #fill.SetHoleSize(1.0)
> >>    fill.SetInputConnection(LHS.GetOutputPort())
> >>    LHS = fill
> >>
> >> mapper = vtk.vtkPolyDataMapper()
> >> mapper.SetInputConnection(LHS.GetOutputPort(0))
> >> mapper.ScalarVisibilityOff()
> >>
> >> actor = vtk.vtkActor()
> >> actor.SetMapper(mapper)
> >>
> >> renderer = vtk.vtkRenderer()
> >> renderWindow = vtk.vtkRenderWindow()
> >> renderWindow.AddRenderer(renderer)
> >> renderWindow.SetSize(1024, 1024)
> >>
> >> renderer.AddActor(actor)
> >>
> >> interactor = vtk.vtkRenderWindowInteractor()
> >> interactor.SetRenderWindow(renderWindow)
> >> interactor.Initialize()
> >> renderWindow.Render()
> >> interactor.Start()
> >
> > _______________________________________________
> > 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
> 
> 
> 
> --
> Cory Quammen
> Research Associate
> Department of Computer Science
> The University of North Carolina at Chapel Hill





More information about the vtkusers mailing list