[vtkusers] can't add PropAssembly to PropAssembly

Christopher.Moore at noaa.gov Christopher.Moore at noaa.gov
Thu Mar 17 17:47:01 EST 2005


The documentation says that a PropAssembly can contain other PropAssemblies, but
my code seg faults when I try this.

I create two PropAssemblies, one with a ConeSource and one with a SphereSource, 
add them to the render, this works.

I create two PropAssemblies, one with a ConeSource AND a SphereSource, and then 
add this to the second PropAssembly -> run-time error "segmentation fault".

Any ideas?  Short code segment below.

Cheers,
Chris

__________________________________________________________________
Christopher Moore                email: Christopher.Moore at noaa.gov
Research Scientist, Oceanography                 tel: 206.526.6779
University of Washington/JISAO/NOAA-PMEL         fax: 206.526.6744
------------------------------------------------------------------

#include "vtkConeSource.h"
#include "vtkSphereSource.h"
#include "vtkPolyDataMapper.h"
#include "vtkRenderWindow.h"
#include "vtkRenderWindowInteractor.h"
#include "vtkCamera.h"
#include "vtkPropAssembly.h"
#include "vtkActor.h"
#include "vtkRenderer.h"

int main( int argc, char *argv[] )
{

  vtkRenderer *ren1= vtkRenderer::New();
  vtkRenderWindowInteractor *iren = vtkRenderWindowInteractor::New();
  vtkRenderWindow *renWin = vtkRenderWindow::New();
  renWin->AddRenderer( ren1 );
  renWin->SetSize( 300, 300 );
  iren->SetRenderWindow( renWin );

  // make a cone
  vtkConeSource *cone = vtkConeSource::New();
  vtkPolyDataMapper *coneMapper = vtkPolyDataMapper::New();
  coneMapper->SetInput( cone->GetOutput() );
  vtkActor *coneActor = vtkActor::New();
  coneActor->SetMapper( coneMapper );

  // make a sphere
  vtkSphereSource *sphere = vtkSphereSource::New();
  vtkPolyDataMapper *sphereMapper = vtkPolyDataMapper::New();
  sphereMapper->SetInput( sphere->GetOutput() );
  vtkActor *sphereActor = vtkActor::New();
  sphereActor->SetMapper( sphereMapper );

  // this works:
//    ren1->AddProp( coneActor );
//    ren1->AddProp( sphereActor );


  // this works:
//   vtkPropAssembly *pa1 = vtkPropAssembly::New();
//   pa1->AddPart(coneActor);
//   vtkPropAssembly *pa2 = vtkPropAssembly::New();
//   pa2->AddPart(sphereActor);
//   ren1->AddProp(pa1);
//   ren1->AddProp(pa2);

  // this doesnt (seg faults):
   vtkPropAssembly *pa1 = vtkPropAssembly::New();
   pa1->AddPart(coneActor);
   pa1->AddPart(sphereActor);
   vtkPropAssembly *pa2 = vtkPropAssembly::New();
   pa2->AddPart(pa1);
   ren1->AddProp(pa2);


  iren->Start();

}




More information about the vtkusers mailing list