|
@@ -0,0 +1,219 @@
|
|
|
+#include "mainwindow.h"
|
|
|
+#include "ui_mainwindow.h"
|
|
|
+
|
|
|
+#include <iostream>
|
|
|
+
|
|
|
+#include <QFileDialog>
|
|
|
+#include <QTimer>
|
|
|
+
|
|
|
+
|
|
|
+MainWindow::MainWindow(QWidget *parent)
|
|
|
+ : QMainWindow(parent)
|
|
|
+ , ui(new Ui::MainWindow)
|
|
|
+{
|
|
|
+ ui->setupUi(this);
|
|
|
+ vtkSmartPointer<vtkRenderer> renderer = vtkSmartPointer<vtkRenderer>::New();
|
|
|
+ vtkSmartPointer<vtkGenericOpenGLRenderWindow> renderWindow = vtkSmartPointer<vtkGenericOpenGLRenderWindow>::New();
|
|
|
+ renderWindow->AddRenderer(renderer);
|
|
|
+ view.reset(new pcl::visualization::PCLVisualizer(renderer,renderWindow,"viewer",false));
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+#if VTK890
|
|
|
+ view->setupInteractor(ui->vtk->interactor(),ui->vtk->renderWindow());
|
|
|
+#else
|
|
|
+ view->setupInteractor(ui->vtk->GetInteractor(),ui->vtk->GetRenderWindow());
|
|
|
+#endif
|
|
|
+
|
|
|
+#if VTK890
|
|
|
+ this->ui->vtk->setRenderWindow(renderWindow);
|
|
|
+#else
|
|
|
+ this->ui->vtk->SetRenderWindow(renderWindow);
|
|
|
+#endif
|
|
|
+
|
|
|
+ DrawAxis();
|
|
|
+
|
|
|
+ QTimer * timer1 = new QTimer();
|
|
|
+ connect(timer1,SIGNAL(timeout()),this,SLOT(onTimer()));
|
|
|
+ timer1->start(10);
|
|
|
+
|
|
|
+ mprecv = new ars548recv();
|
|
|
+
|
|
|
+ setWindowTitle("ARS548 Viewer");
|
|
|
+
|
|
|
+}
|
|
|
+
|
|
|
+MainWindow::~MainWindow()
|
|
|
+{
|
|
|
+ delete ui;
|
|
|
+}
|
|
|
+
|
|
|
+void MainWindow::DrawAxis()
|
|
|
+{
|
|
|
+
|
|
|
+ bool bGrid = false;
|
|
|
+
|
|
|
+ pcl::PointXYZ p1(-300,0,0);
|
|
|
+ pcl::PointXYZ p2(300,0,0);
|
|
|
+ view->addLine(p1,p2,1.0f,1.0f,0.0f,"axis_x");
|
|
|
+
|
|
|
+ p1.x = 0;p1.y = -300;
|
|
|
+ p2.x= 0;p2.y = 300;
|
|
|
+ view->addLine(p1,p2,1.0f,1.0f,0.0f,"axis_y");
|
|
|
+
|
|
|
+ int i;
|
|
|
+
|
|
|
+ if(bGrid)
|
|
|
+ {
|
|
|
+ for(i=-30;i<=30;i++)
|
|
|
+ {
|
|
|
+ if(i==0)continue;
|
|
|
+ p1.x = -300;p1.y = i*10;
|
|
|
+ p2.x = 300; p2.y = i*10;
|
|
|
+ char strname[256];
|
|
|
+ snprintf(strname,256,"axisgx_%d",i);
|
|
|
+ view->addLine(p1,p2,1.0f,1.0f,1.0f,strname);
|
|
|
+
|
|
|
+
|
|
|
+ p1.x = i*10;p1.y = -300;
|
|
|
+ p2.x = i*10; p2.y = 300;
|
|
|
+ snprintf(strname,256,"axisgy_%d",i);
|
|
|
+ view->addLine(p1,p2,1.0f,1.0f,1.0f,strname);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ for(i=-30;i<=30;i++)
|
|
|
+ {
|
|
|
+ if(i==0)continue;
|
|
|
+ p1.x = 0;p1.y = i*10;
|
|
|
+ p2.x = 1; p2.y = i*10;
|
|
|
+ char strname[256];
|
|
|
+ snprintf(strname,256,"axisgx_%d",i);
|
|
|
+ view->addLine(p1,p2,1.0f,1.0f,1.0f,strname);
|
|
|
+
|
|
|
+
|
|
|
+ p1.x = i*10;p1.y = 0;
|
|
|
+ p2.x = i*10; p2.y = 1;
|
|
|
+ snprintf(strname,256,"axisgy_%d",i);
|
|
|
+ view->addLine(p1,p2,1.0f,1.0f,1.0f,strname);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ for(i=-6;i<=6;i++)
|
|
|
+ {
|
|
|
+ char strname[256];
|
|
|
+ char strtext[256];
|
|
|
+ double orientation[3];
|
|
|
+ orientation[0] = 1.0;orientation[1] = 0.0;orientation[2] = 0.0;
|
|
|
+ p1.x = i*50;p1.y = 1;
|
|
|
+ snprintf(strname,256,"textx_%d",i);
|
|
|
+ snprintf(strtext,256,"%d",i*50);
|
|
|
+ if(i%2 == 0)
|
|
|
+ view->addText3D(strtext,p1,orientation,1.0,1.0,1.0,1.0,strname);
|
|
|
+ else
|
|
|
+ view->addText3D(strtext,p1,orientation,0.5,1.0,1.0,1.0,strname);
|
|
|
+
|
|
|
+ if(i== 0)continue;
|
|
|
+
|
|
|
+ orientation[0] = 1.0;orientation[1] =0.0;orientation[2] = 0.0;
|
|
|
+ p1.x = 1;p1.y = i*50+1;
|
|
|
+ snprintf(strname,256,"texty_%d",i);
|
|
|
+ snprintf(strtext,256,"%d",i*50);
|
|
|
+ if(i%2 == 0)
|
|
|
+ view->addText3D(strtext,p1,orientation,1.0,1.0,1.0,1.0,strname);
|
|
|
+ else
|
|
|
+ view->addText3D(strtext,p1,orientation,0.5,1.0,1.0,1.0,strname);
|
|
|
+ }
|
|
|
+
|
|
|
+ double base_size = 0.2;
|
|
|
+ double base_height = 0.2;
|
|
|
+ double sigx = 15;
|
|
|
+ double sigy = 15;
|
|
|
+ double sigz = 1.0;
|
|
|
+ view->addCube(sigx-base_size/2.0,sigx + base_size/2.0,sigy-base_size/2.0,sigy+base_size/2.0,sigz-base_height/2.0,sigz + base_height/2.0,1.0,0.0,0.0,"cube1");
|
|
|
+
|
|
|
+ view->setCameraPosition(0,0,100,0,0,0,0,1,0);
|
|
|
+ view->resetCamera(); //视角
|
|
|
+// view->addText("300",300,5,10,1.0f,0.0f,0.0f,"txt1");
|
|
|
+
|
|
|
+
|
|
|
+}
|
|
|
+
|
|
|
+void MainWindow::resizeEvent(QResizeEvent *event)
|
|
|
+{
|
|
|
+
|
|
|
+ (void)event;
|
|
|
+ QSize sizemain = ui->centralwidget->size();
|
|
|
+
|
|
|
+ ui->vtk->setGeometry(0,0,sizemain.width()-0,sizemain.height()-0);
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+void MainWindow::onTimer()
|
|
|
+{
|
|
|
+
|
|
|
+ static bool bSetCam = false;
|
|
|
+ if(bSetCam == false)
|
|
|
+ {
|
|
|
+ bSetCam = true;
|
|
|
+ view->setCameraPosition(0,30,130,0,30,0,0,1,0);
|
|
|
+// view->resetCamera(); //视角
|
|
|
+ }
|
|
|
+ static int nindex = 0;
|
|
|
+ nindex++;
|
|
|
+ if(nindex>1000)nindex = 0;
|
|
|
+ double base_size = 0.5;
|
|
|
+ double base_height = 0.5;
|
|
|
+ double sigx = 15;
|
|
|
+ double sigy = 15 + nindex * 0.01;
|
|
|
+ double sigz = 1.0;
|
|
|
+ view->removeShape("cube1");
|
|
|
+ view->addCube(sigx-base_size/2.0,sigx + base_size/2.0,sigy-base_size/2.0,sigy+base_size/2.0,sigz-base_height/2.0,sigz + base_height/2.0,1.0,0.0,0.0,"cube1");
|
|
|
+
|
|
|
+#if VTK890
|
|
|
+ ui->vtk->renderWindow()->Render();
|
|
|
+#else
|
|
|
+ ui->vtk->GetRenderWindow()->Render();
|
|
|
+#endif
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+void MainWindow::on_actionReset_Camera_triggered()
|
|
|
+{
|
|
|
+ view->setCameraPosition(0,0,100,0,0,0,0,1,0);
|
|
|
+ view->resetCamera(); //视角
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+void MainWindow::on_actionFull_Screem_triggered()
|
|
|
+{
|
|
|
+ showFullScreen();
|
|
|
+ ui->menubar->setVisible(false);
|
|
|
+ ui->statusbar->setVisible(false);
|
|
|
+ ui->toolBar->setVisible(false);
|
|
|
+ mbFull = true;
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+void MainWindow::keyReleaseEvent(QKeyEvent *event)
|
|
|
+{
|
|
|
+ if((event->key() == Qt::Key_Escape)||(event->key() == Qt::Key_F11))
|
|
|
+ {
|
|
|
+ if(mbFull)
|
|
|
+ {
|
|
|
+ showNormal();
|
|
|
+ ui->menubar->setVisible(true);
|
|
|
+ ui->statusbar->setVisible(true);
|
|
|
+ ui->toolBar->setVisible(true);
|
|
|
+ mbFull = false;
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|
|
|
+
|