[vtkusers] about vtkMarchingCubes
Mathieu Malaterre
mathieu.malaterre at kitware.com
Thu Apr 29 12:58:49 EDT 2004
Vetria,
[You should change the subject of your mail to reflect the topic of
your question, thanks]
I believe you can do:
actor.SetBackfaceProperty( vtk.vtkProperty() )
actor.GetBackfaceProperty().SetColor(1,0,0)
HTH
Mathieu
Vetria Byrd wrote:
> I want to show which vertices are found to be inside and outside the object
> by displaying those vertices and edges in different colors: red (inside)
> and blue (outside).
>
> How do I do this?
>
> Thanks,
> Vetria
>
> -----Original Message-----
> From: vtkusers-admin at vtk.org [mailto:vtkusers-admin at vtk.org] On Behalf Of
> Vetria Byrd
> Sent: Wednesday, April 28, 2004 8:49 AM
> To: 'Mathieu Malaterre'
> Cc: vtkusers at vtk.org
> Subject: RE: [vtkusers] about vtkMarchingCubes
>
> Mathieu,
>
> Thanks for all of your help.
> Vetria
>
> -----Original Message-----
> From: Mathieu Malaterre [mailto:mathieu.malaterre at kitware.com]
> Sent: Tuesday, April 27, 2004 2:41 PM
> To: byrdv at cis.uab.edu
> Cc: vtkusers at vtk.org
> Subject: Re: [vtkusers] about vtkMarchingCubes
>
> Vetria,
>
> Your code is /almost/ perfect, so the problem comes from your files.
>
> When using vtkImageReader2 you should use
>
> SetDataExtent(0,5,0,5,0,5);
>
> Otherwise your extent will be different...obviously, as you want a 5x5x5
> picture. Anyway I included a c++ code that show you how to achieve what
> you are looking for. You can play with this code and write the
> vtkIamgeData using vtkImageWriter and then load that file again using
> vtkImageReader2 + proper SetDataExtent and you'll see it will work.
>
> HTH
> Mathieu
> Ps: For god sake, please avoid static cast like:
>
> objExtractor->SetInput((vtkDataSet *) volReader->GetOutput() );
>
> instead do #include "vtkDataSet.h" top of your c++ file.
>
>
> Vetria Byrd wrote:
>
>>Here's the code (please see note after code):
>>
>>
>>
>>vtkRenderer *ren = vtkRenderer::New();
>>
>> vtkRenderWindow *renWin = vtkRenderWindow::New();
>>
>> renWin->AddRenderer(ren);
>>
>> vtkRenderWindowInteractor *iren = vtkRenderWindowInteractor::New();
>>
>> iren->SetRenderWindow(renWin);
>>
>>
>>
>> vtkImageReader2 *volReader = vtkImageReader2::New();
>>
>> volReader->SetDataOrigin(0.0,0.0,0.0);
>>
>> volReader->SetDataExtent(0,6,0,5,0,5);
>>
>> volReader->SetDataByteOrderToLittleEndian();
>>
>> volReader->SetFilePrefix("C:/src/VolumeData/slice");
>>
>>
>>
>> volReader->SetDataSpacing(1,1,1);
>>
>> volReader->Update();
>>
>>
>>
>> vtkMarchingCubes *iso = vtkMarchingCubes::New();
>>
>> iso->SetInput(volReader->GetOutput() );
>>
>> iso->SetValue(0,0.5);
>>
>>
>>
>> vtkContourFilter *objExtractor = vtkContourFilter::New();
>>
>> objExtractor->SetInput((vtkDataSet *) volReader->GetOutput() );
>>
>> objExtractor->SetValue(0,0.5);
>>
>>
>>
>> vtkPolyDataNormals *isoNormals = vtkPolyDataNormals::New();
>>
>> isoNormals->SetInput(iso->GetOutput());
>>
>> isoNormals->SetFeatureAngle(60.0);
>>
>>
>>
>> vtkStripper *objStripper = vtkStripper::New();
>>
>> objStripper->SetInput(isoNormals->GetOutput());
>>
>>
>>
>> vtkPolyDataMapper *isoMapper = vtkPolyDataMapper::New();
>>
>> isoMapper->SetInput(objStripper->GetOutput() );
>>
>> //isoMapper->SetInput(isoNormals->GetOutput() );
>>
>> isoMapper->ScalarVisibilityOff();
>>
>>
>>
>> vtkActor *isoActor = vtkActor::New();
>>
>> isoActor->SetMapper(isoMapper);
>>
>>
>>
>> // An outline provides context around the data.
>>
>> vtkOutlineFilter *outlineData = vtkOutlineFilter::New();
>>
>> outlineData->SetInput((vtkDataSet *) volReader->GetOutput());
>>
>> vtkPolyDataMapper *mapOutline = vtkPolyDataMapper::New();
>>
>> mapOutline->SetInput(outlineData->GetOutput());
>>
>> vtkActor *outline = vtkActor::New();
>>
>> outline->SetMapper(mapOutline);
>>
>> outline->GetProperty()->SetColor(0,0,0);
>>
>>
>>
>> // Add the actors to the renderer, set the background and size
>>
>> ren->AddActor(outline);
>>
>> ren->AddActor(isoActor);
>>
>>
>>
>> ren->SetBackground(1,1,1);
>>
>> renWin->SetSize(450,450);
>>
>>
>>
>> iren->Initialize();
>>
>>
>>
>> // render the image
>>
>> iren->Start();
>>
>>
>>
>>
>>
>>Note: when I change volReader->SetDataExtent(0,6,0,5,0,5); to
>>
>>volReader->SetDataExtent(0,5,0,5,0,5);
>>
>>I get this:
>>
>>
>>
>>-----Original Message-----
>>From: Mathieu Malaterre [mailto:mathieu.malaterre at kitware.com]
>>Sent: Tuesday, April 27, 2004 11:54 AM
>>To: byrdv at cis.uab.edu
>>Cc: vtkusers at vtk.org
>>Subject: Re: [vtkusers] about vtkMarchingCubes
>>
>>
>>
>>Vetria,
>>
>>
>>
>> Could you send us the c++ demo file you are using, I suspect you are
>>
>>reading your file improperly (data extent is wrong).
>>
>>
>>
>>Thanks
>>
>>Mathieu
>>
>>
>>
>>Vetria Byrd wrote:
>>
>>
>>> In the data files slices 0,1,3,4 and 5 contain all zero's.
>>
>>> In slice 2, cell [2][2][2] = 1 all other cell values are zero's.
>>
>>> Vetria
>>
>>> -----Original Message-----
>>
>>> From: Mathieu Malaterre [mailto:mathieu.malaterre at kitware.com]
>>
>>> Sent: Tuesday, April 27, 2004 10:50 AM
>>
>>> To: byrdv at cis.uab.edu
>>
>>> Cc: vtkusers at vtk.org
>>
>>> Subject: Re: [vtkusers] about vtkMarchingCubes
>>
>>> Vetria,
>>
>>> Can you send us a screenshot of your problem ?
>>
>>> Thanks
>>
>>> Mathieu
>>
>>> Vetria Byrd wrote:
>>
>>>> The dataset consists of 5 files/slices, all containing zero's and
>
> one's.
>
>>>> The goal is to take a 5x5x5 volume that contains an object in the
>
> center
>
>>>> cell and extract that object.
>>
>>>> Data Spacing is set to: volReader->SetDataSpacing(1,1,1);
>>
>>>> Thanks,
>>
>>>> Vetria
>>
>>>> -----Original Message-----
>>
>>>> From: Mathieu Malaterre [mailto:mathieu.malaterre at kitware.com]
>>
>>>> Sent: Monday, April 26, 2004 5:26 PM
>>
>>>> To: Vetria Byrd
>>
>>>> Cc: vtkusers at vtk.org
>>
>>>> Subject: Re: [vtkusers] about vtkMarchingCubes
>>
>>>> Vetria,
>>
>>>> What type of image are you reading ? Is it possible that you have
>
> a
>
>>>> negative spacing ? You might to avoid this.
>>
>>>> HTH
>>
>>>> Mathieu
>>
>>>> Vetria Byrd wrote:
>>
>>>>>I am having a similiar problem with vtkMarchingCubes as posted at
>>
>>>>>http://public.kitware.com/pipermail/vtkusers/2003-March/017033.html
>>
>>>>>but I have not been able to find the reply or answer to the problem.
>>
>>>>>I am reading several data files and using vtkMarchingCubes to
>>
>>display the
>>
>>
>>>>>reconstructed object, but the positioning of the rendered object
>>
>>seems to
>>
>>
>>>>>be off. It shoud be centered within the view but no matter what I
>>
>>do it's
>>
>>
>>>>>always off center.
>>
>>>>>Can anyone give me an idea of what could be causing this?
>>
>>>>>Thank you,
>>
>>>>>Vetria
>>
>>>>>_______________________________________________
>>
>>>>>This is the private VTK discussion list.
>>
>>>>>Please keep messages on-topic. Check the FAQ at:
>>
>>>> <http://public.kitware.com/cgi-bin/vtkfaq>
>>
>>>>>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://public.kitware.com/cgi-bin/vtkfaq>
> 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://public.kitware.com/cgi-bin/vtkfaq>
> Follow this link to subscribe/unsubscribe:
> http://www.vtk.org/mailman/listinfo/vtkusers
>
More information about the vtkusers
mailing list