[vtkusers] Isosurface Extraction
Bill Lorensen
bill.lorensen at gmail.com
Mon Apr 14 12:08:54 EDT 2008
Marcel,
You are talking about ambiguities.
The first description of this problem was by van Gelder and Wilhelms in 1990:
http://portal.acm.org/citation.cfm?id=99307.99325
followed up by a TOG article in 1994:
http://portal.acm.org/citation.cfm?id=195828
Nielson has a nice description and solution at IEEE Vis '91:
http://ieeexplore.ieee.org/xpl/freeabs_all.jsp?arnumber=175782
I don't know of any of any open source implementations of these papers however.
Bill
On Mon, Apr 14, 2008 at 11:56 AM, Marcel Weiss <mweiss at cbs.mpg.de> wrote:
> Dear Bill,
>
> you are right. "errors" was not the adequate word or description. I appologize for that.
>
> what I ment was, that it might happen (especially when there are thin structures), that using one of the isocontour extractors (e.g. vtkContourFilter, vtkMarchingContourFilter, vtkImageMarchingCubes, tkMarchingCubes) creates surfaces (poly meshes), that do not descibe the same volume as in my case the original zero level set. (this might be caused by different assumptions on the fore- and background neighborhoods - I have to check this).
>
> Any additional hints?
>
> Greetings
> M.Weiss
>
>
>
> ----- Original Message -----
> From: "Bill Lorensen" <bill.lorensen at gmail.com>
> To: "Marcel Weiss" <mweiss at cbs.mpg.de>
> Cc: "Amy Squillacote" <ahs at cfdrc.com>, vtkusers at vtk.org
> Sent: Monday, April 14, 2008 4:56:04 PM (GMT+0100) Europe/Berlin
> Subject: Re: [vtkusers] Isosurface Extraction
>
> There are no topological "errors" in the vtk implementation of Marching Cubes.
>
> Bill
>
> On Mon, Apr 14, 2008 at 10:46 AM, Marcel Weiss <mweiss at cbs.mpg.de> wrote:
> > there is only one scalar array (created from a level set result with spherical topology of the zero level set)
> >
> > the problem is the used algorithm. standard MC (as it is implemented in the used countour filter) is known to created topology "errors" in some regions.
> >
> > I am looking for on of the existing alternatives/extensions already implemented in VTK/ITK.
> >
> > m.weiss
> >
> >
> > ----- Original Message -----
> > From: "Amy Squillacote" <ahs at cfdrc.com>
> > To: "r jamieson" <r.jamieson at reading.ac.uk>
> > Cc: "vtkMailingList" <vtkusers at vtk.org>
> > Sent: Monday, April 14, 2008 3:24:06 PM (GMT+0100) Europe/Berlin
> > Subject: Re: [vtkusers] Isosurface Extraction
> >
> > Does your data set have more than one point scalar array? Is it possible
> > that the contour filter is actually operating on an array with a
> > different scalar range?
> >
> > - Amy
> >
> > r.jamieson at reading.ac.uk wrote:
> > > HI Bill,
> > >
> > > My values range from 1 to 562043.31.
> > >
> > > Ronan
> > >
> > >
> > > On Apr 13 2008, Bill Lorensen wrote:
> > >
> > >> What is the scalar range of your input?
> > >>
> > >> Bill
> > >>
> > >> On Sun, Apr 13, 2008 at 9:34 AM, ronan <r.jamieson at reading.ac.uk> wrote:
> > >>> Hi,
> > >>>
> > >>> I am trying to get my head around isosurfaces extraction and i have
> > >>> tried to write a c++ program to do a simple extraction, but i cannot
> > >>> see any isosurfaces, i have got a wireframe box around the
> > >>> space...but no isosurface, i have attached my code
> > >>>
> > >>> I would be greatful if some one could point out where i have gone
> > >>> wrong.
> > >>>
> > >>> Thanks in advance
> > >>>
> > >>> Ronan
> > >>>
> > >>> int main()
> > >>> {
> > >>>
> > >>> char *c1;
> > >>> // Setup standard rendering
> > >>>
> > >>> vtkRenderer *ren1 = vtkRenderer::New();
> > >>> ren1->SetBackground(0.8,0.8,0.8);
> > >>>
> > >>> vtkRenderWindow *renWin = vtkRenderWindow::New();
> > >>> renWin->AddRenderer(ren1);
> > >>> renWin->SetSize(400,300);
> > >>>
> > >>> vtkRenderWindowInteractor *iren = vtkRenderWindowInteractor::New();
> > >>> iren->SetRenderWindow(renWin);
> > >>>
> > >>> //Read data from office simulation data file
> > >>>
> > >>> vtkDataSetReader *dataSource = vtkDataSetReader::New();
> > >>> dataSource->SetFileName("/home/ronan/Develop/Data/office.vtk");
> > >>> dataSource->DebugOn();
> > >>> dataSource->SetScalarsName(c1);
> > >>> dataSource->Update();
> > >>>
> > >>> // Create and initialize a dataset outline
> > >>> // The outline of the data puts the data in context.
> > >>>
> > >>> vtkOutlineFilter *outline = vtkOutlineFilter::New();
> > >>> outline->SetInputConnection(dataSource->GetOutputPort());
> > >>>
> > >>> vtkPolyDataMapper *outlineMapper = vtkPolyDataMapper::New();
> > >>> outlineMapper->SetInputConnection(outline->GetOutputPort());
> > >>>
> > >>> vtkActor *outlineActor = vtkActor::New();
> > >>> outlineActor->SetMapper(outlineMapper);
> > >>> outlineActor->GetProperty()->SetColor(0, 0, 0);
> > >>>
> > >>> ren1->AddActor(outlineActor);
> > >>>
> > >>> //Create an iso-surface using Marching Cubes
> > >>> vtkContourFilter *iso = vtkContourFilter::New();
> > >>> iso->SetInputConnection(dataSource->GetOutputPort());
> > >>> iso->ComputeScalarsOn();
> > >>> iso->SetValue(0, 14);
> > >>> iso->Update();
> > >>>
> > >>> //vtkDataSetMapper *isoMapper = vtkDataSetMapper::New();
> > >>> vtkPolyDataMapper *isoMapper = vtkPolyDataMapper::New();
> > >>> isoMapper->SetInputConnection(iso->GetOutputPort());
> > >>> isoMapper->ScalarVisibilityOn();
> > >>> isoMapper->SetScalarModeToUsePointFieldData();
> > >>> isoMapper->SetScalarRange(0, 1200);
> > >>>
> > >>> vtkActor *isoActor = vtkActor::New();
> > >>> isoActor->SetMapper(isoMapper);
> > >>> isoActor->GetProperty()->SetColor(0.9804, 0.9216, 0.8431);
> > >>>
> > >>> ren1->AddActor(isoActor);
> > >>>
> > >>> renWin->Render();
> > >>> iren->Start();
> > >>> _______________________________________________
> > >>> This is the private VTK discussion list.
> > >>> Please keep messages on-topic. Check the FAQ at:
> > >>> http://www.vtk.org/Wiki/VTK_FAQ
> > >>> Follow this link to subscribe/unsubscribe:
> > >>> http://www.vtk.org/mailman/listinfo/vtkusers
> > >>>
> > >>
> > > _______________________________________________
> > > This is the private VTK discussion list.
> > > Please keep messages on-topic. Check the FAQ at:
> > > http://www.vtk.org/Wiki/VTK_FAQ
> > > Follow this link to subscribe/unsubscribe:
> > > http://www.vtk.org/mailman/listinfo/vtkusers
> > >
> > >
> >
> > --
> > Amy Squillacote Phone: (256) 726-4839
> > Computer Scientist Fax: (256) 726-4806
> > CFD Research Corporation Web: http://www.cfdrc.com
> > 215 Wynn Drive, Suite 501
> > Huntsville, AL 35805
> >
> >
> > _______________________________________________
> > This is the private VTK discussion list.
> > Please keep messages on-topic. Check the FAQ at: http://www.vtk.org/Wiki/VTK_FAQ
> > Follow this link to subscribe/unsubscribe:
> > http://www.vtk.org/mailman/listinfo/vtkusers
> >
> > _______________________________________________
> > This is the private VTK discussion list.
> > Please keep messages on-topic. Check the FAQ at: http://www.vtk.org/Wiki/VTK_FAQ
> > Follow this link to subscribe/unsubscribe:
> > http://www.vtk.org/mailman/listinfo/vtkusers
> >
>
>
More information about the vtkusers
mailing list