[vtkusers] unable to run example/tutorial code Cone.cxx
eric lamar
ec_lamar at yahoo.com
Thu Apr 23 15:14:55 EDT 2015
Hello!
I am attempting to run VTK 6.2's example/tutorial code Cone.cxx. It compiles, however I get a segmentation fault.
My environment: iMac i7 quad coe, oS X 10.10, VTK 6.2
-------------The listing:-------------
/*=========================================================================
Program: Visualization Toolkit Module: Cone.cxx
Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen All rights reserved. See Copyright.txt or http://www.kitware.com/Copyright.htm for details.
This software is distributed WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the above copyright notice for more information.
=========================================================================*///// This example creates a polygonal model of a cone, and then renders it to// the screen. It will rotate the cone 360 degrees and then exit. The basic// setup of source -> mapper -> actor -> renderer -> renderwindow is// typical of most VTK programs.//
// First include the required header files for the VTK classes we are using.#include "vtkConeSource.h"#include "vtkPolyDataMapper.h"#include "vtkRenderWindow.h"#include "vtkCamera.h"#include "vtkActor.h"#include "vtkRenderer.h"
int main(){ // // Next we create an instance of vtkConeSource and set some of its // properties. The instance of vtkConeSource "cone" is part of a // visualization pipeline (it is a source process object); it produces data // (output type is vtkPolyData) which other filters may process. // vtkConeSource *cone = vtkConeSource::New(); cone->SetHeight( 3.0 ); cone->SetRadius( 1.0 ); cone->SetResolution( 10 );
// // In this example we terminate the pipeline with a mapper process object. // (Intermediate filters such as vtkShrinkPolyData could be inserted in // between the source and the mapper.) We create an instance of // vtkPolyDataMapper to map the polygonal data into graphics primitives. We // connect the output of the cone souece to the input of this mapper. // vtkPolyDataMapper *coneMapper = vtkPolyDataMapper::New(); coneMapper->SetInputConnection( cone->GetOutputPort() );
// // Create an actor to represent the cone. The actor orchestrates rendering // of the mapper's graphics primitives. An actor also refers to properties // via a vtkProperty instance, and includes an internal transformation // matrix. We set this actor's mapper to be coneMapper which we created // above. // vtkActor *coneActor = vtkActor::New(); coneActor->SetMapper( coneMapper );
// // Create the Renderer and assign actors to it. A renderer is like a // viewport. It is part or all of a window on the screen and it is // responsible for drawing the actors it has. We also set the background // color here. // vtkRenderer *ren1= vtkRenderer::New(); ren1->AddActor( coneActor ); ren1->SetBackground( 0.1, 0.2, 0.4 );
// // Finally we create the render window which will show up on the screen. // We put our renderer into the render window using AddRenderer. We also // set the size to be 300 pixels by 300. // vtkRenderWindow *renWin = vtkRenderWindow::New(); renWin->AddRenderer( ren1 ); renWin->SetSize( 300, 300 );
// // Now we loop over 360 degreeees and render the cone each time. // int i; for (i = 0; i < 360; ++i) { // render the image renWin->Render(); // rotate the active camera by one degree ren1->GetActiveCamera()->Azimuth( 1 ); }
// // Free up any objects we created. All instances in VTK are deleted by // using the Delete() method. // cone->Delete(); coneMapper->Delete(); coneActor->Delete(); ren1->Delete(); renWin->Delete();
return 0;}
-------------I compile it:-------------g++ -g -O0 Cone.cxx -I /Users/Eric/VTK/include/vtk-6.2/ -L /Users/Eric/VTK/lib -lvtkFiltersSources-6.2 -lvtkRenderingOpenGL-6.2 -lvtkRenderingCore-6.2 -lvtkCommonExecutionModel-6.2
------------And run it:------------./a.outGeneric Warning: In /Users/Eric/Work/VTK-6.2.0/Rendering/Core/vtkPolyDataMapper.cxx, line 28Error: no override found for 'vtkPolyDataMapper'.
Segmentation fault: 11
---------------And debug it:---------------lldb a.out(lldb) target create "a.out"Current executable set to 'a.out' (x86_64).(lldb) runProcess 64007 launched: '/Users/Eric/Work/VTK-6.2.0/Examples/Tutorial/Step1/Cxx/a.out' (x86_64)Generic Warning: In /Users/Eric/Work/VTK-6.2.0/Rendering/Core/vtkPolyDataMapper.cxx, line 28Error: no override found for 'vtkPolyDataMapper'.
Process 64007 stopped* thread #1: tid = 0x42e799, 0x0000000100000d3e a.out`main + 142 at Cone.cxx:51, queue = 'com.apple.main-thread', stop reason = EXC_BAD_ACCESS (code=1, address=0x0) frame #0: 0x0000000100000d3e a.out`main + 142 at Cone.cxx:51 48 // connect the output of the cone souece to the input of this mapper. 49 // 50 vtkPolyDataMapper *coneMapper = vtkPolyDataMapper::New();-> 51 coneMapper->SetInputConnection( cone->GetOutputPort() ); 52 53 // 54 // Create an actor to represent the cone. The actor orchestrates rendering(lldb) p coneMapper(vtkPolyDataMapper *) $0 = 0x0000000000000000(lldb)
-----------So, why does the code complain about "no override found ..."? Why does the 'codeMapper' get assigned NULL? What am I missing? What do I need to change?
Thank you,Eric.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://public.kitware.com/pipermail/vtkusers/attachments/20150423/f4d19bb5/attachment.html>
More information about the vtkusers
mailing list