From 2c2fdcc4308eaac842e6fb62291d8283e0b03041 Mon Sep 17 00:00:00 2001 From: Marco Callieri mcallieri Date: Wed, 2 Nov 2016 15:55:25 +0000 Subject: [PATCH] many changes in the RichPoint3m dialog parameter: - re-connected a missing signal - now "view pos." is the trackball view position, before it was not working - "camera pos." is now "raster camera pos." and gets the current raster camera position (if any). before it was not really working - added "trackball center" as possible choice --- src/meshlab/glarea.cpp | 12 +++++++++--- src/meshlab/glarea.h | 14 +++++++------- src/meshlab/stdpardialog.cpp | 27 ++++++++++++++++----------- src/meshlab/stdpardialog.h | 1 + src/meshlab/xmlstdpardialog.cpp | 27 ++++++++++++++++----------- src/meshlab/xmlstdpardialog.h | 1 + 6 files changed, 50 insertions(+), 32 deletions(-) diff --git a/src/meshlab/glarea.cpp b/src/meshlab/glarea.cpp index 64ea20750..0faf829ad 100644 --- a/src/meshlab/glarea.cpp +++ b/src/meshlab/glarea.cpp @@ -1695,8 +1695,14 @@ void GLArea::sendRasterShot(QString name) void GLArea::sendCameraPos( QString name ) { - Point3f dir= trackball.camera.ViewPoint(); - emit transmitCameraPos(name,dir); + Point3f pos = trackball.camera.ViewPoint(); + emit transmitCameraPos(name, pos); +} + +void GLArea::sendTrackballPos(QString name) +{ + Point3f pos = -trackball.track.tra; + emit transmitTrackballPos(name, pos); } Point3f GLArea::getViewDir() @@ -2271,7 +2277,7 @@ void GLArea::toggleOrtho() void GLArea::trackballStep(QString dir) { - float stepAngle = M_PI / 6.0; + float stepAngle = M_PI / 12.0; if (dir == tr("Horizontal +")) trackball.track.rot = Quaternionf(-stepAngle, Point3f(0.0, 1.0, 0.0)) * trackball.track.rot; diff --git a/src/meshlab/glarea.h b/src/meshlab/glarea.h index 6449348b9..f4e750a7f 100644 --- a/src/meshlab/glarea.h +++ b/src/meshlab/glarea.h @@ -341,11 +341,12 @@ public: // This mechanism is used to get the view direction/position and picking point on surface in the filter parameter dialog. // See the Point3fWidget code. signals : - void transmitViewDir(QString name, Point3m dir); - void transmitViewPos(QString name, Point3m dir); - void transmitSurfacePos(QString name, Point3m dir); - void transmitPickedPos(QString name, Point2m dir); - void transmitCameraPos(QString name, Point3m dir); + void transmitViewDir(QString name, Point3m dir); + void transmitViewPos(QString name, Point3m pos); + void transmitSurfacePos(QString name, Point3m pos); + void transmitPickedPos(QString name, Point2m pos); + void transmitCameraPos(QString name, Point3m pos); + void transmitTrackballPos(QString name, Point3m pos); void transmitShot(QString name, Shotm); void transmitMatrix(QString name, Matrix44m); void updateLayerTable(); @@ -361,8 +362,7 @@ public slots: void sendMeshMatrix(QString name); void sendViewerShot(QString name); void sendRasterShot(QString name); - - + void sendTrackballPos(QString name); public: diff --git a/src/meshlab/stdpardialog.cpp b/src/meshlab/stdpardialog.cpp index 1bb5723dd..74460aea6 100644 --- a/src/meshlab/stdpardialog.cpp +++ b/src/meshlab/stdpardialog.cpp @@ -277,10 +277,11 @@ Point3fWidget::Point3fWidget(QWidget *p, RichPoint3f* rpf, QWidget *gla_curr): M //this->addWidget(getPoint3Button,0,Qt::AlignHCenter); vlay->addWidget(getPoint3Button); QStringList names; - names << "View Dir"; - names << "View Pos"; - names << "Surf. Pos"; - names << "Camera Pos"; + names << "View Dir."; + names << "View Pos."; + names << "Surf. Pos."; + names << "Raster Camera Pos."; + names << "Trackball Center"; getPoint3Combo = new QComboBox(this); getPoint3Combo->addItems(names); @@ -293,10 +294,13 @@ Point3fWidget::Point3fWidget(QWidget *p, RichPoint3f* rpf, QWidget *gla_curr): M connect(gla_curr,SIGNAL(transmitViewDir(QString,Point3m)),this,SLOT(setValue(QString,Point3m))); connect(gla_curr,SIGNAL(transmitShot(QString,Shotm)),this,SLOT(setShotValue(QString,Shotm))); connect(gla_curr,SIGNAL(transmitSurfacePos(QString,Point3m)),this,SLOT(setValue(QString,Point3m))); + connect(gla_curr,SIGNAL(transmitCameraPos(QString, Point3m)),this,SLOT(setValue(QString, Point3m))); + connect(gla_curr,SIGNAL(transmitTrackballPos(QString, Point3m)),this,SLOT(setValue(QString, Point3m))); connect(this,SIGNAL(askViewDir(QString)),gla_curr,SLOT(sendViewDir(QString))); - connect(this,SIGNAL(askViewPos(QString)),gla_curr,SLOT(sendMeshShot(QString))); + connect(this,SIGNAL(askViewPos(QString)),gla_curr,SLOT(sendViewerShot(QString))); connect(this,SIGNAL(askSurfacePos(QString)),gla_curr,SLOT(sendSurfacePos(QString))); - connect(this,SIGNAL(askCameraPos(QString)),gla_curr,SLOT(sendCameraPos(QString))); + connect(this,SIGNAL(askCameraPos(QString)),gla_curr,SLOT(sendRasterShot(QString))); + connect(this,SIGNAL(askTrackballPos(QString)),gla_curr,SLOT(sendTrackballPos(QString))); } //gridLay->addLayout(lay,row,1,Qt::AlignTop); } @@ -307,11 +311,12 @@ void Point3fWidget::getPoint() //qDebug("Got signal %i",index); switch(index) { - case 0 : emit askViewDir(paramName); break; - case 1 : emit askViewPos(paramName); break; - case 2 : emit askSurfacePos(paramName); break; - case 3 : emit askCameraPos(paramName); break; - default : assert(0); + case 0: emit askViewDir(paramName); break; + case 1: emit askViewPos(paramName); break; + case 2: emit askSurfacePos(paramName); break; + case 3: emit askCameraPos(paramName); break; + case 4: emit askTrackballPos(paramName); break; + default : assert(0); } } diff --git a/src/meshlab/stdpardialog.h b/src/meshlab/stdpardialog.h index e24e87e02..6bc1658d8 100644 --- a/src/meshlab/stdpardialog.h +++ b/src/meshlab/stdpardialog.h @@ -275,6 +275,7 @@ public: void askViewPos(QString); void askSurfacePos(QString); void askCameraPos(QString); + void askTrackballPos(QString); protected: QLineEdit * coordSB[3]; diff --git a/src/meshlab/xmlstdpardialog.cpp b/src/meshlab/xmlstdpardialog.cpp index 210fff746..ea300729b 100644 --- a/src/meshlab/xmlstdpardialog.cpp +++ b/src/meshlab/xmlstdpardialog.cpp @@ -876,10 +876,11 @@ XMLVec3Widget::XMLVec3Widget(const MLXMLPluginInfo::XMLMap& xmlWidgetTag,EnvWrap hlay->addWidget(getPoint3Button); QStringList names; - names << "View Dir"; - names << "View Pos"; - names << "Surf. Pos"; - names << "Camera Pos"; + names << "View Dir."; + names << "View Pos."; + names << "Surf. Pos."; + names << "Raster Camera Pos."; + names << "Trackball Center"; getPoint3Combo = new QComboBox(this); getPoint3Combo->addItems(names); @@ -892,10 +893,13 @@ XMLVec3Widget::XMLVec3Widget(const MLXMLPluginInfo::XMLMap& xmlWidgetTag,EnvWrap connect(curr_gla,SIGNAL(transmitViewDir(QString,vcg::Point3f)),this,SLOT(setPoint(QString,vcg::Point3f))); connect(curr_gla,SIGNAL(transmitShot(QString,vcg::Shotf)),this,SLOT(setShot(QString,vcg::Shotf))); connect(curr_gla,SIGNAL(transmitSurfacePos(QString,vcg::Point3f)),this,SLOT(setPoint(QString,vcg::Point3f))); + connect(curr_gla,SIGNAL(transmitCameraPos(QString, Point3m)),this,SLOT(setValue(QString, Point3m))); + connect(curr_gla,SIGNAL(transmitTrackballPos(QString, Point3m)),this,SLOT(setValue(QString, Point3m))); connect(this,SIGNAL(askViewDir(QString)),curr_gla,SLOT(sendViewDir(QString))); - connect(this,SIGNAL(askViewPos(QString)),curr_gla,SLOT(sendMeshShot(QString))); + connect(this,SIGNAL(askViewPos(QString)),curr_gla,SLOT(sendViewerShot(QString))); connect(this,SIGNAL(askSurfacePos(QString)),curr_gla,SLOT(sendSurfacePos(QString))); - connect(this,SIGNAL(askCameraPos(QString)),curr_gla,SLOT(sendCameraPos(QString))); + connect(this,SIGNAL(askCameraPos(QString)),curr_gla,SLOT(sendRasterShot(QString))); + connect(this,SIGNAL(askTrackballPos(QString)),curr_gla,SLOT(sendTrackballPos(QString))); } //gridLay->addLayout(hlay,row,1,Qt::AlignTop); } @@ -935,11 +939,12 @@ void XMLVec3Widget::getPoint() qDebug("Got signal %i",index); switch(index) { - case 0 : emit askViewDir(paramName); break; - case 1 : emit askViewPos(paramName); break; - case 2 : emit askSurfacePos(paramName); break; - case 3 : emit askCameraPos(paramName); break; - default : assert(0); + case 0 : emit askViewDir(paramName); break; + case 1 : emit askViewPos(paramName); break; + case 2 : emit askSurfacePos(paramName); break; + case 3 : emit askCameraPos(paramName); break; + case 4 : emit askTrackballPos(paramName); break; + default : assert(0); } } diff --git a/src/meshlab/xmlstdpardialog.h b/src/meshlab/xmlstdpardialog.h index b7cbff8d3..3b43bb0cb 100644 --- a/src/meshlab/xmlstdpardialog.h +++ b/src/meshlab/xmlstdpardialog.h @@ -231,6 +231,7 @@ signals: void askViewPos(QString); void askSurfacePos(QString); void askCameraPos(QString); + void askTrackballPos(QString); void setExp(const QString& name,const QString& exp ); protected: QLineEdit * coordSB[3];