[vtk-developers] How to use QVTKWidget & vtkChartXYZ correctly ?

kimtaikee at gmail.com kimtaikee at gmail.com
Fri Feb 13 04:12:39 EST 2015







Hey Guys,? ? I want to display vtkChartXYZ in a QVTKWidget, ?how could I accomplish that ? I tried the following code, but I get some errors, but the 3D graph could be shown.
// Code:int TestLinePlot3D(int argc, char * argv[]){    // Create the data.    QApplication app(argc, argv);    QVTKWidget* widget = new QVTKWidget;    vtkNew<vtkTable> varXSolution;    vtkNew<vtkFloatArray> arrX0;    arrX0->SetName("X");    varXSolution->AddColumn(arrX0.GetPointer());    vtkNew<vtkFloatArray> arrX1;    arrX1->SetName("Y");    varXSolution->AddColumn(arrX1.GetPointer());    vtkNew<vtkFloatArray> arrX2;    arrX2->SetName("Z");    varXSolution->AddColumn(arrX2.GetPointer());    const unsigned int numberOfTimePoints = 1000;    varXSolution->SetNumberOfRows(numberOfTimePoints);    float varX[3];    varX[0] = 0.0f;    varX[1] = 1.0f;    varX[2] = 1.05f;    float varXDerivative[3];    const float deltaT = 0.01f;    for (unsigned int ii = 0; ii < numberOfTimePoints; ++ii)    {        varXSolution->SetValue(ii, 0, varX[0]);        varXSolution->SetValue(ii, 1, varX[1]);        varXSolution->SetValue(ii, 2, varX[2]);        lorenz(varX, varXDerivative);        varX[0] += varXDerivative[0] * deltaT;        varX[1] += varXDerivative[1] * deltaT;        varX[2] += varXDerivative[2] * deltaT;    }
    // Set up a 3D scene and add an XYZ chart to it.    vtkNew<vtkContextView> view;    view->GetRenderWindow()->SetSize(400, 300);    vtkNew<vtkChartXYZ> chart;    chart->SetGeometry(vtkRectf(10.0, 20.0, 250, 260));    view->GetScene()->AddItem(chart.GetPointer());
    // Add a line plot.    vtkNew<vtkPlotLine3D> plot;    plot->SetInputData(varXSolution.GetPointer());    plot->GetPen()->SetColorF(0.1, 0.2, 0.8, 1.0);    chart->AddPlot(plot.GetPointer());
    // Finally render the scene and compare the image to a reference image.    view->GetRenderWindow()->SetMultiSamples(0);    view->GetRenderer()->SetBackground(0, 110, 0);    chart->SetFitToScene(true);//    widget->SetRenderWindow(view->GetRenderWindow());//    view->SetInteractor(widget->GetInteractor());    view->GetInteractor()->Initialize();//    view->GetInteractor()->Start(); // shouldn't be calling this 
    view->SetRenderWindow(widget->GetRenderWindow());    widget->show();    return app.exec();}
// Errors:ERROR: In E:\open\vtk\vtkvc32\VTK-6.1.0\Rendering\Context2D\vtkOpenGLContextDevice2D.cxx, line 1244

vtkOpenGL2ContextDevice2D (074DB1B8): failed after PopMatrix 1 OpenGL errors detected

  0 : (1284) Stack underflow

ERROR: In E:\open\vtk\vtkvc32\VTK-6.1.0\Rendering\Context2D\vtkOpenGLContextDevice2D.cxx, line 177

vtkOpenGL2ContextDevice2D (074DB1B8): failed after End 1 OpenGL errors detected

  0 : (1284) Stack underflow
Any help would be appreciated.
P.S. I am using Qt5.4.0 & VTK 6.1.0
Thanks.Jason Zhang.

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://public.kitware.com/pipermail/vtk-developers/attachments/20150213/1246a512/attachment.html>


More information about the vtk-developers mailing list