[vtkusers] Marching Contours Error
Mathieu Malaterre
mathieu.malaterre at kitware.com
Wed Jun 9 15:25:05 EDT 2004
Jamie,
Do you want the good or the bad news ?
The good one I could reproduce the bug
The bad one I could reproduce the bug :)
Ok, now that I have an example, I'll try to see what is wrong.
Thanks for report
Mathieu
gcope at engin.umich.edu wrote:
> Mathieu,
>
> I also tried writing with the StructuredPoints method and got files much closer
> to the size of my data (162 Mb), but they were both still identical for the
> input to MarchingContours that works and the one that doesn't.
>
> Thanks,
> Jamie
>
> Quoting Mathieu Malaterre <mathieu.malaterre at kitware.com>:
>
>
>>Jamie,
>>
>> Could you please send us the dataset you are using just before the
>>vtkMarchingContourFilter ? For example use vtkStructuredPointsWriter or
>>vtkXMLImageDataWriter.
>>
>>Thanks
>>Mathieu
>>
>>gcope at engin.umich.edu wrote:
>>
>>>Mathieu,
>>>
>>>Thanks for the response. My code is a little verbose, so I'll try to
>>
>>pseudocode
>>
>>>it down to the relevant parts. Let me know if it's missing anything you
>>
>>need to
>>
>>>see.
>>>
>>>- Jamie
>>>
>>>
>>>Code:
>>>
>>>//In headers:
>>>vtkImageData *Contours;
>>>vtkMarchingContourFilter *surface;
>>>
>>>Contours = vtkImageData::New();
>>>surface = vtkMarchingContourFilter::New();
>>>
>>>//Read Data via Itk()
>>>
>>>//Itk Thresholding & Zero Crossing Filters()
>>>
>>>//ConnectItktoVtk()
>>>
>>>//In function mapping data to 2d Actor
>>>vtkOImporter->Update(); <----Importer used in ItktoVtk above
>>>Contours->ShallowCopy(vtkOImporter->GetOutput());
>>>
>>>//Marching Contour Function
>>>void
>>>ItkPipeline
>>>::MarchingCubes()
>>>{
>>> surface->SetInput(vtkOImporter->GetOutput());
>>> surface->SetValue(0,255);
>>>}
>>>
>>>Later on in the pipeline, an "Update" is called and the error occurs on the
>>>update of the above function.
>>>
>>>
>>>
>>>
>>>
>>>
>>>Quoting Mathieu Malaterre <mathieu.malaterre at kitware.com>:
>>>
>>>
>>>
>>>>Could not reproduce the problem using mcubes.tcl:
>>>>
>>>>vtkImageData img
>>>> img ShallowCopy [v16 GetOutput]
>>>>
>>>>so please send us the code you were using, thanks.
>>>>
>>>>Mathieu
>>>>Script used:
>>>>
>>>>package require vtk
>>>>package require vtkinteraction
>>>>package require vtktesting
>>>>
>>>>
>>>># Create the RenderWindow, Renderer and both Actors
>>>>#
>>>>vtkRenderer ren1
>>>>vtkRenderWindow renWin
>>>> renWin AddRenderer ren1
>>>>vtkRenderWindowInteractor iren
>>>> iren SetRenderWindow renWin
>>>>
>>>># create pipeline
>>>>#
>>>>vtkVolume16Reader v16
>>>> v16 SetDataDimensions 64 64
>>>> [v16 GetOutput] SetOrigin 0.0 0.0 0.0
>>>> v16 SetDataByteOrderToLittleEndian
>>>> v16 SetFilePrefix "$VTK_DATA_ROOT/Data/headsq/quarter"
>>>> v16 SetImageRange 1 93
>>>> v16 SetDataSpacing 3.2 3.2 1.5
>>>> v16 Update
>>>>
>>>>vtkImageData img
>>>> img ShallowCopy [v16 GetOutput]
>>>>
>>>>vtkMarchingContourFilter iso
>>>> iso SetInput img
>>>> iso SetValue 0 1125
>>>>
>>>>vtkPolyDataMapper isoMapper
>>>> isoMapper SetInput [iso GetOutput]
>>>> isoMapper ScalarVisibilityOff
>>>>
>>>>vtkActor isoActor
>>>> isoActor SetMapper isoMapper
>>>> eval [isoActor GetProperty] SetColor $antique_white
>>>>
>>>>vtkOutlineFilter outline
>>>> outline SetInput [v16 GetOutput]
>>>>vtkPolyDataMapper outlineMapper
>>>> outlineMapper SetInput [outline GetOutput]
>>>>vtkActor outlineActor
>>>> outlineActor SetMapper outlineMapper
>>>> outlineActor VisibilityOff
>>>>
>>>># Add the actors to the renderer, set the background and size
>>>>#
>>>>ren1 AddActor outlineActor
>>>>ren1 AddActor isoActor
>>>>ren1 SetBackground 0.2 0.3 0.4
>>>>renWin SetSize 200 200
>>>>[ren1 GetActiveCamera] Elevation 90
>>>>[ren1 GetActiveCamera] SetViewUp 0 0 -1
>>>>[ren1 GetActiveCamera] Dolly 1.5
>>>>
>>>>
>>>>ren1 ResetCameraClippingRange
>>>>
>>>>renWin Render
>>>>
>>>># render the image
>>>>#
>>>>iren AddObserver UserEvent {wm deiconify .vtkInteract}
>>>>
>>>># prevent the tk window from showing up then start the event loop
>>>>wm withdraw .
>>>>
>>>>
>>>>gcope at engin.umich.edu wrote:
>>>>
>>>>
>>>>>Hi,
>>>>>
>>>>>I don't seem to have much luck getting responses, but here goes:
>>>>>
>>>>>I am getting an "Update Extent does not lie within Whole Extent" error
>>
>>upon
>>
>>>>>execution of a Marching Contours filter. This also results in a memory
>>>>
>>>>access
>>>>
>>>>
>>>>>error in vtkImageMarchingCubes.cxx at the line "g[2] = (float)(ptr[inc2])
>>
>>-
>>
>>>>>(float)(ptr[-inc2]);"
>>>>>
>>>>>What caused the error is attempting to use a ShallowCopy of a filters
>>>>
>>>>output as
>>>>
>>>>
>>>>>the input to the MarchingContour filter rather than directly connecting
>>>>
>>>>them.
>>>>
>>>>
>>>>>When they are directly connected, everything works fine. Does doing a
>>>>>ShallowCopy modify the data extent somehow?
>>>>>
>>>>>Any ideas would be appreciated.
>>>>>
>>>>>Thanks,
>>>>>Jamie
>>>>>
>>>>>
>>>>>_______________________________________________
>>>>>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