diff --git a/src/meshlab/main.cpp b/src/meshlab/main.cpp index eee69b92e..068e8ab4e 100644 --- a/src/meshlab/main.cpp +++ b/src/meshlab/main.cpp @@ -24,11 +24,13 @@ #include #include "mainwindow.h" #include +#include int main(int argc, char *argv[]) { MeshLabApplication app(argc, argv); + std::setlocale(LC_ALL, "C"); QLocale::setDefault(QLocale::C); QCoreApplication::setOrganizationName(MeshLabApplication::organization()); #if QT_VERSION >= 0x050100 diff --git a/src/meshlabplugins/edit_quality/eqhandle.cpp b/src/meshlabplugins/edit_quality/eqhandle.cpp index 364d53bfc..d29f8c45c 100644 --- a/src/meshlabplugins/edit_quality/eqhandle.cpp +++ b/src/meshlabplugins/edit_quality/eqhandle.cpp @@ -30,6 +30,7 @@ FIRST RELEASE #include "eqhandle.h" #include #include +#include EqHandle::EqHandle(CHART_INFO *environment_info, QColor color, QPointF position, EQUALIZER_HANDLE_TYPE type, EqHandle** handles, qreal* midHandlePercentilePosition, QDoubleSpinBox* spinbox, @@ -83,7 +84,7 @@ void EqHandle::mouseMoveEvent(QGraphicsSceneMouseEvent *event) setCursor(Qt::OpenHandCursor); QPointF newPos = event->scenePos(); - qreal handleOffset = abs(newPos.x()-pos().x()); + qreal handleOffset = fabs(newPos.x()-pos().x()); if (handleOffset >= std::numeric_limits::epsilon()) { diff --git a/src/meshlabplugins/render_radiance_scaling/radianceScalingRenderer.cpp b/src/meshlabplugins/render_radiance_scaling/radianceScalingRenderer.cpp index c3e5ea73e..bee8bc695 100644 --- a/src/meshlabplugins/render_radiance_scaling/radianceScalingRenderer.cpp +++ b/src/meshlabplugins/render_radiance_scaling/radianceScalingRenderer.cpp @@ -203,6 +203,7 @@ void RadianceScalingRendererPlugin::initShaders(bool reload) _rsPass->addUniform("transition"); _rsPass->addUniform("enabled"); _rsPass->addUniform("invert"); + _rsPass->addUniform("doubleSide"); _rsPass->addUniform("twoLS"); _rsPass->addUniform("display"); _rsPass->addUniform("grad"); @@ -231,6 +232,7 @@ void RadianceScalingRendererPlugin::initShaders(bool reload) _rsPass->setUniform1i("enabled", _sDialog->getEnable()); _rsPass->setUniform1i("display", _sDialog->getDisplay()); _rsPass->setUniform1i("invert", _sDialog->getInvert()); + _rsPass->setUniform1i("doubleSide", _sDialog->getDoubleSide()); _rsPass->setUniform1i("twoLS", _sDialog->getTwoLS()); _rsPass->setUniformTexture("grad", 0, _gradTex->format().target(), _gradTex->id()); _rsPass->setUniformTexture("norm", 1, _normTex->format().target(), _normTex->id()); diff --git a/src/meshlabplugins/render_radiance_scaling/radianceScalingRenderer.h b/src/meshlabplugins/render_radiance_scaling/radianceScalingRenderer.h index 4a30cbf61..61efe0c1c 100644 --- a/src/meshlabplugins/render_radiance_scaling/radianceScalingRenderer.h +++ b/src/meshlabplugins/render_radiance_scaling/radianceScalingRenderer.h @@ -62,6 +62,7 @@ class RadianceScalingRendererPlugin : public QObject, public MeshRenderInterface inline void setEnable(bool enabled); inline void setLit(bool lit); inline void setInvert(int invert); + inline void setDoubleSide(int doubleSide); inline void setDisplay(int index); inline void setEnhancement(float enhancement); inline void setTransition(float transition); @@ -157,6 +158,12 @@ inline void RadianceScalingRendererPlugin::setInvert(int invert) { _rsPass->disable(); } +inline void RadianceScalingRendererPlugin::setDoubleSide(int doubleSide) { + _rsPass->enable(); + _rsPass->setUniform1i("doubleSide", doubleSide); + _rsPass->disable(); +} + inline void RadianceScalingRendererPlugin::setDisplay(int index) { if(index==1) { initShaders(false); diff --git a/src/meshlabplugins/render_radiance_scaling/shaderDialog.cpp b/src/meshlabplugins/render_radiance_scaling/shaderDialog.cpp index 5357ab919..9edb97339 100644 --- a/src/meshlabplugins/render_radiance_scaling/shaderDialog.cpp +++ b/src/meshlabplugins/render_radiance_scaling/shaderDialog.cpp @@ -40,6 +40,7 @@ ShaderDialog::ShaderDialog(RadianceScalingRendererPlugin* wrp,QGLWidget* gla,QWi connect(_ui.enableCheckBox,SIGNAL(stateChanged(int)),this,SLOT(enableChanged(int))); connect(_ui.invertCheckBox,SIGNAL(stateChanged(int)),this,SLOT(invertChanged(int))); + connect(_ui.doubleSideCheckBox, SIGNAL(stateChanged(int)), this, SLOT(doubleSideChanged(int))); connect(_ui.displayBox,SIGNAL(currentIndexChanged(int)),this,SLOT(displayChanged(int))); connect(_ui.enSlider,SIGNAL(valueChanged(int)),this,SLOT(enhancementChanged(int))); connect(_ui.transitionSlider,SIGNAL(valueChanged(int)),this,SLOT(transitionChanged(int))); @@ -64,15 +65,19 @@ ShaderDialog::~ShaderDialog() { } void ShaderDialog::enableChanged(int) { - bool enableChecked = (_ui.enableCheckBox->checkState()==Qt::Checked) ? true : false; - - _wrp->setEnable(enableChecked); - _gla->update(); + bool enableChecked = (_ui.enableCheckBox->checkState()==Qt::Checked) ? true : false; + _wrp->setEnable(enableChecked); + _gla->update(); } void ShaderDialog::invertChanged(int) { - (_ui.invertCheckBox->checkState()==Qt::Checked) ? _wrp->setInvert(true) : _wrp->setInvert(false); - _gla->update(); + (_ui.invertCheckBox->checkState()==Qt::Checked) ? _wrp->setInvert(true) : _wrp->setInvert(false); + _gla->update(); +} + +void ShaderDialog::doubleSideChanged(int) { + (_ui.doubleSideCheckBox->checkState() == Qt::Checked) ? _wrp->setDoubleSide(true) : _wrp->setDoubleSide(false); + _gla->update(); } void ShaderDialog::displayChanged(int index) { diff --git a/src/meshlabplugins/render_radiance_scaling/shaderDialog.h b/src/meshlabplugins/render_radiance_scaling/shaderDialog.h index 680d9008a..2816d8d92 100644 --- a/src/meshlabplugins/render_radiance_scaling/shaderDialog.h +++ b/src/meshlabplugins/render_radiance_scaling/shaderDialog.h @@ -51,6 +51,7 @@ class ShaderDialog : public QDockWidget { void enableChanged(int); void displayChanged(int); void invertChanged(int); + void doubleSideChanged(int); void enhancementChanged(int); void transitionChanged(int); void litChanged(int); @@ -63,6 +64,7 @@ class ShaderDialog : public QDockWidget { inline float getEnhancement() const; inline float getTransition() const; inline bool getInvert() const; + inline bool getDoubleSide() const; inline bool getTwoLS() const; }; @@ -88,6 +90,10 @@ inline bool ShaderDialog::getInvert() const { return (_ui.invertCheckBox->checkState()==Qt::Checked); } +inline bool ShaderDialog::getDoubleSide() const { + return (_ui.doubleSideCheckBox->checkState() == Qt::Checked); +} + inline bool ShaderDialog::getTwoLS() const { return (_ui.litCheckBox->checkState()==Qt::Checked); } diff --git a/src/meshlabplugins/render_radiance_scaling/shaderDialog.ui b/src/meshlabplugins/render_radiance_scaling/shaderDialog.ui index 61d3b9adc..5fd3cfbe2 100644 --- a/src/meshlabplugins/render_radiance_scaling/shaderDialog.ui +++ b/src/meshlabplugins/render_radiance_scaling/shaderDialog.ui @@ -1,202 +1,203 @@ - + + ShaderDialogClass - - + + 0 0 - 381 - 566 + 430 + 530 - + Form - + - - + + QFrame::StyledPanel - + QFrame::Raised - + - - + + Radiance Scaling parameters - + - - - + + + 0 + + + 2 + + + - + Lambertian Radiance Scaling - + Lit Sphere Radiance Scaling - + Colored Descriptor - + Grey Descriptor - - - - Display Mode: - - - - - - - Qt::LeftToRight - - - Enable Radiance Scaling - - - true - - - - - - + + + 100 - + 50 - + Qt::Horizontal - - - + + + Qt::LeftToRight - + 0.5 - + Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter - - - + + + + Display Mode: + + + + + + + Qt::LeftToRight + + + Enable Radiance Scaling + + + true + + + + + + Enhancement: - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - + + + Invert Effect + + + + Double side + + + - - - - + + + + Convexities - + Qt::AlignHCenter|Qt::AlignTop - - - + + + Concavities - + Qt::AlignHCenter|Qt::AlignTop - - - + + + Qt::LeftToRight - + Use 2 Lit Spheres - + true - - - + + + Load - - - + + + Load - - - + + + - + Qt::AlignCenter - - - + + + - + Qt::AlignCenter @@ -204,30 +205,30 @@ - + - - + + Transition: - - + + 100 - + 50 - + Qt::Horizontal - - + + 0.5 @@ -235,11 +236,11 @@ - - + + Qt::Vertical - + 20 40 diff --git a/src/meshlabplugins/render_radiance_scaling/shaders/02_rs.fs b/src/meshlabplugins/render_radiance_scaling/shaders/02_rs.fs index cd443b026..b82555c2b 100644 --- a/src/meshlabplugins/render_radiance_scaling/shaders/02_rs.fs +++ b/src/meshlabplugins/render_radiance_scaling/shaders/02_rs.fs @@ -32,6 +32,7 @@ uniform float enhancement; uniform float transition; uniform bool enabled; uniform bool invert; +uniform bool doubleSide; uniform int display; uniform bool twoLS; uniform sampler2D convexLS; @@ -215,7 +216,7 @@ void main(void) { if(display==0) { // lambertian lighting - float cosineTerm = max(dot(n,l),0.0); + float cosineTerm = doubleSide ? max(dot(n,l),-dot(n,l)) : max(dot(n,l),0.0); float warpedTerm = enabled ? cosineTerm*warp(cosineTerm,c) : cosineTerm; gl_FragColor = vec4(m.rgb*warpedTerm,1.0); } diff --git a/src/meshlabserver/mainserver.cpp b/src/meshlabserver/mainserver.cpp index ab9a7c08e..28b86c3ca 100644 --- a/src/meshlabserver/mainserver.cpp +++ b/src/meshlabserver/mainserver.cpp @@ -29,7 +29,10 @@ #include #include #include +#include #include +#include "../meshlab/mainwindow.h" +#include #include @@ -619,11 +622,11 @@ struct OutProject int main(int argc, char *argv[]) { - - FILE* logfp = stdout; FILE* dumpfp = NULL; MeshLabApplication app(argc, argv); + std::setlocale(LC_ALL, "C"); + QLocale::setDefault(QLocale::C); if(argc == 1) { commandline::usage(); @@ -645,9 +648,17 @@ int main(int argc, char *argv[]) exit(-1); } - QSettings st; - QVariant mbvar = st.value("MeshLab::System::maxGPUMemDedicatedToGeometry"); - std::ptrdiff_t maxgpumem = (std::ptrdiff_t)mbvar.toInt() * (float)(1024 * 1024); + QSettings settings(MeshLabApplication::organization(),MeshLabApplication::appArchitecturalName(MeshLabApplication::HW_64BIT)); + + QVariant xmlgpupar = settings.value(MainWindowSetting::maximumDedicatedGPUMem()); + + QDomDocument doc; + doc.setContent(xmlgpupar.toString(), false); + + QDomElement paramelem = doc.firstChild().toElement(); + int gpumemmb = paramelem.attribute("value").toInt(); + + std::ptrdiff_t maxgpumem = (std::ptrdiff_t) gpumemmb * (float)(1024 * 1024); vcg::QtThreadSafeMemoryInfo gpumeminfo(maxgpumem); MeshDocument meshDocument; diff --git a/src/sampleplugins/sampleedit/sampleedit.cpp b/src/sampleplugins/sampleedit/sampleedit.cpp index 63171f5cc..874c6b3ff 100644 --- a/src/sampleplugins/sampleedit/sampleedit.cpp +++ b/src/sampleplugins/sampleedit/sampleedit.cpp @@ -83,7 +83,7 @@ void SampleEditPlugin::Decorate(MeshModel &m, GLArea * gla, QPainter *p) else if (pickmode == 1) { NewVertSel.clear(); - GLPickTri::PickVert(cur.x(), gla->height() - cur.y(), m.cm, NewVertSel,10,10); + GLPickTri::PickVert(cur.x(), gla->height() - cur.y(), m.cm, NewVertSel,15,15); if (NewVertSel.size() > 0) { curVertPtr = NewVertSel[pIndex]; @@ -100,9 +100,9 @@ void SampleEditPlugin::Decorate(MeshModel &m, GLArea * gla, QPainter *p) QString line3 = ""; if (pickmode == 0) - line1 = "Face Picking - SPACE for vertex
"; + line1 = "Face Picking - T for vertex
"; else if (pickmode == 1) - line1 = "Vertex Picking - SPACE for face
"; + line1 = "Vertex Picking - T for face
"; if ((curFacePtr != 0) || (curVertPtr != 0)) { @@ -207,9 +207,9 @@ void SampleEditPlugin::drawFace(CMeshO::FacePointer fp, MeshModel &m, GLArea *gl if (m.hasDataMask(MeshModel::MM_VERTCOLOR)) buf += QString(" - color(%1 %2 %3 %4)").arg(QString::number(fp->V(i)->C()[0])).arg(QString::number(fp->V(i)->C()[1])).arg(QString::number(fp->V(i)->C()[2])).arg(QString::number(fp->V(i)->C()[3])); if( m.hasDataMask(MeshModel::MM_WEDGTEXCOORD) ) - buf +=QString(" - uv(%1 %2) id:%3").arg(QString::number(fp->WT(i).U())).arg(QString::number(fp->WT(i).V())).arg(QString::number(fp->WT(i).N())); + buf +=QString(" - [W]uv(%1 %2) id:%3").arg(QString::number(fp->WT(i).U())).arg(QString::number(fp->WT(i).V())).arg(QString::number(fp->WT(i).N())); if( m.hasDataMask(MeshModel::MM_VERTTEXCOORD) ) - buf +=QString(" - uv(%1 %2) id:%3").arg(QString::number(fp->V(i)->T().U())).arg(QString::number(fp->V(i)->T().V())).arg(QString::number(fp->V(i)->T().N())); + buf +=QString(" - [V]uv(%1 %2) id:%3").arg(QString::number(fp->V(i)->T().U())).arg(QString::number(fp->V(i)->T().V())).arg(QString::number(fp->V(i)->T().N())); vcg::glLabel::render(p,fp->V(i)->P(),buf); } @@ -224,14 +224,14 @@ void SampleEditPlugin::drawVert(CMeshO::VertexPointer vp, MeshModel &m, GLArea * if (m.hasDataMask(MeshModel::MM_VERTCOLOR)) buf += QString(" - color(%1 %2 %3 %4)").arg(QString::number(vp->C()[0])).arg(QString::number(vp->C()[1])).arg(QString::number(vp->C()[2])).arg(QString::number(vp->C()[3])); if (m.hasDataMask(MeshModel::MM_VERTTEXCOORD)) - buf += QString(" - uv(%1 %2) id:%3").arg(QString::number(vp->T().U())).arg(QString::number(vp->T().V())).arg(QString::number(vp->T().N())); + buf += QString(" - [V]uv(%1 %2) id:%3").arg(QString::number(vp->T().U())).arg(QString::number(vp->T().V())).arg(QString::number(vp->T().N())); vcg::glLabel::render(p, vp->P(), buf); } void SampleEditPlugin::keyReleaseEvent(QKeyEvent *e, MeshModel &m, GLArea *gla) { - if (e->key() == Qt::Key_Space) // toggle pick mode + if (e->key() == Qt::Key_T) // toggle pick mode { pickmode = (pickmode + 1) % 2; curFacePtr = 0;