[vtk-developers] Bug in vtkCompositeDataPipeline?

Jeff Lee jeff at cdnorthamerica.com
Fri May 26 08:45:42 EDT 2006


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
>
>
>   



More information about the vtk-developers mailing list