[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