[vtk-developers] Bug in vtkCompositeDataPipeline?
Bill McGrory
mcgrory at aerosft.com
Fri May 26 09:41:39 EDT 2006
I'm not sure I understand what you're saying.
I understand that vtkStructuredGridOutlineFilter only accepts
vtkStructuredGrid as input.
It is my understanding that vtkMultiGroupDataGeometryFilter handles the
the case of a simple filter, and sends the children of a
multigroupdataset one at a time. I don't think the problem is with the
pipeline after the dataset, but with the pipeline getting the data from
a source.
I'm attaching my test code.
there is a #if loop on line 113 used to switch back and forth.
On Fri, 2006-05-26 at 08:45 -0400, Jeff Lee wrote:
> So is this right, you are setting the input of the
> vtkStructuredGridOutlineFilter with a vtkMultiBlockDataSet? If not,
> can you post a prototype pipeline? vtkStructuredGridOutlineFilter
> doesn't accept any input other than vtkStructuredGrid.
> FillInputPortInformation could take a dataset and do the appropriate
> thing for a multiblock dataset consisting of structured grids, or just
> process the structured grids. But this should probably be another
> filter along the lines of vtkMultiGroupDataGeometryFilter...
> -Jeff
>
> Bill McGrory wrote:
> > Yes, that is correct.
> > I have two datasets constructed from two custom sources.
> > I put these two datasets into a multiblock dataset.
> >
> > multiblock dataset is then fed to a structuredgridoutline filter.
> >
> > this is fed to a vtkMultiGroupDataGeometry filter and mapped.
> >
> > Before adding the patches listed below, the vtkStructuredGridSource
> > never receives a ExecuteData call.
> >
> > If I fill the two datasets by hand, before adding them to the multiblock
> > dataset then everything works as expected.
> >
> > Likewise, if I simply feed the vtkStructuredGridSource->GetOutput()
> > directly to the Outline filter (bypass the multiblock dataset) then the
> > source correctly gets the ExecuteData call as well.
> >
> > Regards
> > Bill
> >
> > On Thu, 2006-05-25 at 16:55 -0400, Berk Geveci wrote:
> >
> >> I am not sure I understand. You have a few datasets, you add these to
> >> a multiblock dataset, you process this multiblock dataset with a
> >> filter. Is that right?
> >>
> >> On 5/25/06, Bill McGrory <mcgrory at aerosft.com> wrote:
> >> I've been trying to get a
> >> vtkMultiBlockDataSet to work properly with vtkStructuredGrid's
> >> which are
> >> output from a vtkStructuredGridSource
> >>
> >> >From what I can tell, it appears that the
> >> the vtkCompositeDataPipeline
> >> is unaware of child vtkDataObject->Source, so none of the data
> >> ever gets
> >> loaded.
> >>
> >> I have constructed a work-around which appears (superficially
> >> at least)
> >> to work for my particular case, which is basically, if a
> >> Source exists
> >> for the original vtkDataObject in the *ForBlock() routines,
> >> call the
> >> relevant Update's before performing the ShallowCopy
> >>
> >> patch is as follows
> >>
> >> Index: vtkCompositeDataPipeline.cxx
> >> ===================================================================
> >> RCS
> >> file: /cvsroot/VTK/VTK/Filtering/vtkCompositeDataPipeline.cxx,v
> >> retrieving revision 1.34
> >> diff -u -r1.34 vtkCompositeDataPipeline.cxx
> >> --- vtkCompositeDataPipeline.cxx 7 Dec 2005 16:21:29
> >> -0000 1.34
> >> +++ vtkCompositeDataPipeline.cxx 25 May 2006 19:48:48
> >> -0000
> >> @@ -35,6 +35,8 @@
> >> #include "vtkStructuredGrid.h"
> >> #include "vtkUniformGrid.h"
> >>
> >> +#include "vtkSource.h"
> >> +
> >> vtkCxxRevisionMacro(vtkCompositeDataPipeline, "$Revision: 1.34
> >> $");
> >> vtkStandardNewMacro(vtkCompositeDataPipeline);
> >>
> >> @@ -46,6 +48,28 @@
> >>
> >> vtkInformationKeyMacro(vtkCompositeDataPipeline,INPUT_REQUIRED_COMPOSITE_DATA_TYPE, String);
> >> vtkInformationKeyMacro(vtkCompositeDataPipeline,UPDATE_BLOCKS,
> >> ObjectBase);
> >>
> >> +class vtkCompositeDataPipelineToDataObjectFriendship
> >> +{
> >> +public:
> >> + static void UpdateDataObject(vtkDataObject* obj)
> >> + {
> >> + if(obj->Source)
> >> + {
> >> + obj->Source->Update();
> >> + }
> >> +
> >> + }
> >> +
> >> + static void UpdateInformation(vtkDataObject* obj)
> >> + {
> >> + if(obj->Source)
> >> + {
> >> + obj->Source->UpdateInformation();
> >> + }
> >> +
> >> + }
> >> +};
> >> +
> >> //----------------------------------------------------------------------------
> >> vtkCompositeDataPipeline::vtkCompositeDataPipeline()
> >> {
> >> @@ -490,6 +514,7 @@
> >> info->Get(vtkDataObject::DATA_OBJECT());
> >> if (dobj && dobjCopy)
> >> {
> >> +
> >> vtkCompositeDataPipelineToDataObjectFriendship::UpdateInformation(dobj);
> >> dobjCopy->ShallowCopy(dobj);
> >> dobjCopy->CopyInformation(dobj);
> >> }
> >> @@ -1089,6 +1114,7 @@
> >>
> >> if (dobj && dobjCopy)
> >> {
> >> +
> >> vtkCompositeDataPipelineToDataObjectFriendship::UpdateDataObject(dobj);
> >> dobjCopy->ShallowCopy(dobj);
> >> }
> >> }
> >>
> >>
> >> Is this really a bug, and is this an appropriate fix?
> >> Or am I doing something wrong up the pipeline, such that I
> >> shouldn't
> >> need to do this?
> >>
> >> Regards
> >> Bill
> >> _______________________________________________
> >> vtk-developers mailing list
> >> vtk-developers at vtk.org
> >> http://www.vtk.org/mailman/listinfo/vtk-developers
> >>
> >>
> >
> >
> > _______________________________________________
> > vtk-developers mailing list
> > vtk-developers at vtk.org
> > http://www.vtk.org/mailman/listinfo/vtk-developers
> >
> >
> >
>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: test.cxx
Type: text/x-c++src
Size: 7651 bytes
Desc: not available
URL: <http://public.kitware.com/pipermail/vtk-developers/attachments/20060526/c9b7d40d/attachment-0001.cxx>
More information about the vtk-developers
mailing list