mirror of
https://github.com/lucaspalomodevelop/meshlab.git
synced 2026-03-15 09:04:36 +00:00
Added Freeze transform and improved transformation dialog
This commit is contained in:
parent
2eadcc094c
commit
c6cb8e3309
@ -22,6 +22,9 @@
|
||||
/****************************************************************************
|
||||
History
|
||||
$Log$
|
||||
Revision 1.97 2007/07/24 07:20:20 cignoni
|
||||
Added Freeze transform and improved transformation dialog
|
||||
|
||||
Revision 1.96 2007/04/20 10:09:56 cignoni
|
||||
issue on vertex selection from face selection
|
||||
|
||||
@ -232,7 +235,8 @@ ExtraMeshFilterPlugin::ExtraMeshFilterPlugin()
|
||||
FP_REMOVE_NON_MANIFOLD<<
|
||||
FP_NORMAL_EXTRAPOLATION<<
|
||||
FP_CLOSE_HOLES<<
|
||||
FP_TRANSFORM;
|
||||
FP_FREEZE_TRANSFORM<<
|
||||
FP_TRANSFORM;
|
||||
|
||||
FilterType tt;
|
||||
|
||||
@ -295,6 +299,7 @@ const QString ExtraMeshFilterPlugin::ST(FilterType filter)
|
||||
case FP_REORIENT : return QString("Re-orient");
|
||||
case FP_INVERT_FACES: return QString("Invert Faces");
|
||||
case FP_TRANSFORM: return QString("Apply Transform");
|
||||
case FP_FREEZE_TRANSFORM: return QString("Freeze Current Matrix");
|
||||
case FP_REMOVE_NON_MANIFOLD: return QString("Remove Non Manifold Faces");
|
||||
case FP_NORMAL_EXTRAPOLATION: return QString("Compute normals for point sets");
|
||||
case FP_CLOSE_HOLES: return QString("Close Holes");
|
||||
@ -338,6 +343,7 @@ const QString ExtraMeshFilterPlugin::Info(FilterType filterID)
|
||||
case FP_REORIENT : return tr("Re-orient in a consistent way all the faces of the mesh");
|
||||
case FP_INVERT_FACES : return tr("Invert faces orientation, flip the normal of the mesh");
|
||||
case FP_TRANSFORM : return tr("Apply transformation, you can rotate, translate or scale the mesh");
|
||||
case FP_FREEZE_TRANSFORM : return tr("Freeze the current transformation matrix into the coords of the vertices of the mesh");
|
||||
case FP_NORMAL_EXTRAPOLATION : return tr("Compute the normals of the vertices of a mesh without exploiting the triangle connectivity, useful for dataset with no faces");
|
||||
case FP_CLOSE_HOLES : return tr("Close holes smaller than a given threshold");
|
||||
default : assert(0);
|
||||
@ -375,6 +381,7 @@ const int ExtraMeshFilterPlugin::getRequirements(QAction *action)
|
||||
case FP_REMOVE_FACES_BY_EDGE:
|
||||
case FP_CLUSTERING:
|
||||
case FP_TRANSFORM:
|
||||
case FP_FREEZE_TRANSFORM:
|
||||
case FP_NORMAL_EXTRAPOLATION:
|
||||
case FP_INVERT_FACES: return 0;
|
||||
case FP_QUADRIC_SIMPLIFICATION:
|
||||
@ -460,7 +467,10 @@ bool ExtraMeshFilterPlugin::getParameters(QAction *action, QWidget *parent, Mesh
|
||||
{
|
||||
case FP_TRANSFORM:
|
||||
{
|
||||
transformDialog->setMesh(&m.cm);
|
||||
transformDialog->setMesh(m);
|
||||
transformDialog->show();
|
||||
transformDialog->resize(transformDialog->size());
|
||||
|
||||
int continueValue = transformDialog->exec();
|
||||
if (continueValue == QDialog::Rejected)
|
||||
return false;
|
||||
@ -477,6 +487,7 @@ bool ExtraMeshFilterPlugin::getParameters(QAction *action, QWidget *parent, Mesh
|
||||
case FP_LAPLACIAN_SMOOTH:
|
||||
case FP_REMOVE_NON_MANIFOLD:
|
||||
case FP_NORMAL_EXTRAPOLATION:
|
||||
case FP_FREEZE_TRANSFORM:
|
||||
return true; // no parameters
|
||||
default :assert(0);
|
||||
}
|
||||
@ -604,15 +615,16 @@ bool ExtraMeshFilterPlugin::applyFilter(QAction *filter, MeshModel &m, FilterPar
|
||||
m.clearDataMask(MeshModel::MM_FACETOPO | MeshModel::MM_BORDERFLAG);
|
||||
}
|
||||
|
||||
if (filter->text() == ST(FP_TRANSFORM) ) {
|
||||
Matrix44f matrix= par.getMatrix44("Transform");
|
||||
|
||||
Log(GLLogStream::Info,
|
||||
transformDialog->getLog().toAscii().data());
|
||||
|
||||
vcg::tri::UpdatePosition<CMeshO>::Matrix(m.cm, matrix);
|
||||
if (filter->text() == ST(FP_FREEZE_TRANSFORM) ) {
|
||||
vcg::tri::UpdatePosition<CMeshO>::Matrix(m.cm, m.cm.Tr);
|
||||
vcg::tri::UpdateNormals<CMeshO>::PerVertexNormalizedPerFace(m.cm);
|
||||
vcg::tri::UpdateBounding<CMeshO>::Box(m.cm);
|
||||
m.cm.Tr.SetIdentity();
|
||||
}
|
||||
if (filter->text() == ST(FP_TRANSFORM) ) {
|
||||
Matrix44f matrix= par.getMatrix44("Transform");
|
||||
Log(GLLogStream::Info, qPrintable(transformDialog->getLog()) );
|
||||
m.cm.Tr=matrix;
|
||||
}
|
||||
|
||||
|
||||
|
||||
@ -22,6 +22,9 @@
|
||||
****************************************************************************/
|
||||
/* History
|
||||
$Log$
|
||||
Revision 1.44 2007/07/24 07:20:18 cignoni
|
||||
Added Freeze transform and improved transformation dialog
|
||||
|
||||
Revision 1.43 2007/04/16 09:25:29 cignoni
|
||||
** big change **
|
||||
Added Layers managemnt.
|
||||
@ -110,6 +113,7 @@ class ExtraMeshFilterPlugin : public QObject, public MeshFilterInterface
|
||||
FP_REORIENT ,
|
||||
FP_INVERT_FACES,
|
||||
FP_TRANSFORM,
|
||||
FP_FREEZE_TRANSFORM,
|
||||
FP_CLOSE_HOLES_TRIVIAL,
|
||||
FP_CLOSE_HOLES
|
||||
} ;
|
||||
@ -133,8 +137,6 @@ class ExtraMeshFilterPlugin : public QObject, public MeshFilterInterface
|
||||
protected:
|
||||
|
||||
|
||||
// RefineDialog *refineDialog;
|
||||
// DecimatorDialog *decimatorDialog;
|
||||
TransformDialog *transformDialog;
|
||||
GenericELDialog *genericELD;
|
||||
|
||||
|
||||
@ -26,6 +26,9 @@
|
||||
|
||||
/*
|
||||
$Log$
|
||||
Revision 1.4 2007/07/24 07:20:20 cignoni
|
||||
Added Freeze transform and improved transformation dialog
|
||||
|
||||
Revision 1.3 2006/03/29 07:30:54 zifnab1974
|
||||
use fabs instead of abs for floats, needed for gcc 3.4.5
|
||||
|
||||
@ -61,7 +64,7 @@ Revision 1.7 2006/01/22 16:40:38 mariolatronico
|
||||
#include <vcg/complex/trimesh/update/bounding.h>
|
||||
#include <QRegExp>
|
||||
#include <QRegExpValidator>
|
||||
|
||||
#include <QtGui>
|
||||
TransformDialog::TransformDialog() : QDialog() {
|
||||
|
||||
setupUi(this);
|
||||
@ -97,6 +100,7 @@ TransformDialog::TransformDialog() : QDialog() {
|
||||
connect(zScaleLE, SIGNAL(returnPressed()), this, SLOT(on_okButton_pressed()) );
|
||||
connect(rotateLE, SIGNAL(returnPressed()), this, SLOT(on_okButton_pressed()) );
|
||||
|
||||
// connect(freezeButton, SIGNAL(buttonClicked()), this, SLOT(freeze()) );
|
||||
|
||||
// default to AXIS_X for rotation and Move transformation
|
||||
rotateAxis = AXIS_X;
|
||||
@ -106,8 +110,34 @@ TransformDialog::TransformDialog() : QDialog() {
|
||||
setScale();
|
||||
setRotate();
|
||||
|
||||
tableWidget->setColumnCount(4);
|
||||
tableWidget->setRowCount(4);
|
||||
tableWidget->horizontalHeader()->hide();
|
||||
tableWidget->verticalHeader()->hide();
|
||||
for(int i=0;i<4;i++)
|
||||
{
|
||||
tableWidget->setColumnWidth(i,40);
|
||||
tableWidget->setRowHeight(i,18);
|
||||
}
|
||||
}
|
||||
void TransformDialog::showEvent ( QShowEvent * event )
|
||||
{
|
||||
for(int i=0;i<4;i++)
|
||||
{
|
||||
tableWidget->setColumnWidth(i,tableWidget->width()/4 - 2);
|
||||
tableWidget->setRowHeight(i,tableWidget->height()/4 - 2);
|
||||
}
|
||||
|
||||
}
|
||||
void TransformDialog::resizeEvent ( QResizeEvent * event )
|
||||
{
|
||||
for(int i=0;i<4;i++)
|
||||
{
|
||||
tableWidget->setColumnWidth(i,tableWidget->width()/4 - 2);
|
||||
tableWidget->setRowHeight(i,tableWidget->height()/4 - 2);
|
||||
}
|
||||
}
|
||||
|
||||
TransformDialog::~TransformDialog() {
|
||||
delete whichTransformBG;
|
||||
delete rotateBG;
|
||||
@ -117,14 +147,21 @@ vcg::Matrix44f& TransformDialog::getTransformation() {
|
||||
return matrix;
|
||||
}
|
||||
|
||||
void TransformDialog::setMesh(CMeshO *mesh) {
|
||||
|
||||
void TransformDialog::setMesh(MeshModel &m) {
|
||||
matrix=m.cm.Tr;
|
||||
CMeshO *mesh=&m.cm;
|
||||
this->mesh = mesh;
|
||||
this->bbox = mesh->bbox;
|
||||
vcg::tri::UpdateBounding<CMeshO>::Box(*mesh);
|
||||
|
||||
minBbox = mesh->bbox.min;
|
||||
maxBbox = mesh->bbox.max;
|
||||
|
||||
for(int ii=0;ii<4;++ii)
|
||||
for(int jj=0;jj<4;++jj)
|
||||
tableWidget->setItem(ii,jj,new QTableWidgetItem(QString::number(m.cm.Tr[ii][jj])) );
|
||||
|
||||
|
||||
}
|
||||
|
||||
QString& TransformDialog::getLog() {
|
||||
@ -329,7 +366,8 @@ void TransformDialog::on_okButton_pressed() {
|
||||
//matrix = matrix * currentMatrix;
|
||||
// store the current matrix as matrix because we left
|
||||
// the values in the line edit widgets
|
||||
matrix = currentMatrix;
|
||||
if(absoluteRB->isChecked()) matrix = currentMatrix;
|
||||
else matrix=matrix*currentMatrix;
|
||||
accept();
|
||||
|
||||
}
|
||||
@ -371,3 +409,8 @@ void TransformDialog::on_rotateZUpPB_clicked()
|
||||
rotateDial->setValue(90);
|
||||
xAxisRB->setChecked(true);
|
||||
}
|
||||
|
||||
// Freezing means that
|
||||
void TransformDialog::freeze ( )
|
||||
{
|
||||
}
|
||||
|
||||
@ -26,6 +26,9 @@
|
||||
/*
|
||||
|
||||
$Log$
|
||||
Revision 1.2 2007/07/24 07:20:24 cignoni
|
||||
Added Freeze transform and improved transformation dialog
|
||||
|
||||
Revision 1.1 2006/01/30 20:43:57 giec
|
||||
Added filter dialog files
|
||||
|
||||
@ -115,6 +118,7 @@ private slots:
|
||||
// Rotate X / Z Up push buttons: simply fill Rotate fields
|
||||
void on_rotateZUpPB_clicked();
|
||||
void on_rotateXUpPB_clicked();
|
||||
void freeze();
|
||||
|
||||
public:
|
||||
|
||||
@ -123,9 +127,8 @@ public:
|
||||
|
||||
// used to compute transformation on meshfilter.cpp
|
||||
Matrix44f& getTransformation();
|
||||
void setMesh(CMeshO *mesh);
|
||||
void setMesh(MeshModel &m);
|
||||
QString& getLog();
|
||||
|
||||
private: // members
|
||||
CMeshO *mesh;
|
||||
Point3f minBbox, maxBbox; // min and max of bounding box
|
||||
@ -146,6 +149,9 @@ private: // functions
|
||||
void setRotate(int value = 180); //
|
||||
void setScale(QString x = "1.0", QString y = "1.0", QString z = "1.0");
|
||||
|
||||
void resizeEvent ( QResizeEvent * event );
|
||||
void showEvent ( QShowEvent * event );
|
||||
|
||||
|
||||
};
|
||||
|
||||
|
||||
@ -1,15 +1,12 @@
|
||||
<ui version="4.0" >
|
||||
<author></author>
|
||||
<comment></comment>
|
||||
<exportmacro></exportmacro>
|
||||
<class>TransformDialog</class>
|
||||
<widget class="QDialog" name="TransformDialog" >
|
||||
<property name="geometry" >
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>598</width>
|
||||
<height>526</height>
|
||||
<width>672</width>
|
||||
<height>666</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="windowTitle" >
|
||||
@ -18,287 +15,520 @@
|
||||
<property name="windowIcon" >
|
||||
<iconset>../../../meshlab/images/eye128.png</iconset>
|
||||
</property>
|
||||
<layout class="QGridLayout" >
|
||||
<layout class="QVBoxLayout" >
|
||||
<property name="margin" >
|
||||
<number>9</number>
|
||||
</property>
|
||||
<property name="spacing" >
|
||||
<number>6</number>
|
||||
</property>
|
||||
<item row="1" column="2" >
|
||||
<widget class="QGroupBox" name="scaleBox" >
|
||||
<property name="title" >
|
||||
<string>Scale</string>
|
||||
<item>
|
||||
<layout class="QHBoxLayout" >
|
||||
<property name="margin" >
|
||||
<number>0</number>
|
||||
</property>
|
||||
<layout class="QGridLayout" >
|
||||
<property name="margin" >
|
||||
<number>9</number>
|
||||
</property>
|
||||
<property name="spacing" >
|
||||
<number>6</number>
|
||||
</property>
|
||||
<item row="1" column="0" >
|
||||
<widget class="QPushButton" name="scaleUnitPB" >
|
||||
<property name="text" >
|
||||
<string>Scale to unit box</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="0" >
|
||||
<layout class="QGridLayout" >
|
||||
<property name="margin" >
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="spacing" >
|
||||
<number>6</number>
|
||||
</property>
|
||||
<item row="2" column="0" >
|
||||
<widget class="QLabel" name="zScaleLBL" >
|
||||
<property name="text" >
|
||||
<string>Z</string>
|
||||
</property>
|
||||
<property name="buddy" >
|
||||
<cstring>zScaleLE</cstring>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="1" >
|
||||
<widget class="QLineEdit" name="yScaleLE" />
|
||||
</item>
|
||||
<item row="0" column="1" >
|
||||
<widget class="QLineEdit" name="xScaleLE" />
|
||||
</item>
|
||||
<item row="1" column="0" >
|
||||
<widget class="QLabel" name="yScaleLBL" >
|
||||
<property name="text" >
|
||||
<string>Y</string>
|
||||
</property>
|
||||
<property name="buddy" >
|
||||
<cstring>yScaleLE</cstring>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="0" >
|
||||
<widget class="QLabel" name="xScaleLBL" >
|
||||
<property name="text" >
|
||||
<string>X</string>
|
||||
</property>
|
||||
<property name="buddy" >
|
||||
<cstring>xScaleLE</cstring>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="2" column="1" >
|
||||
<widget class="QLineEdit" name="zScaleLE" />
|
||||
</item>
|
||||
<item row="3" column="0" colspan="2" >
|
||||
<widget class="QCheckBox" name="uniformScaleCB" >
|
||||
<property name="text" >
|
||||
<string>Uniform</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
<property name="spacing" >
|
||||
<number>6</number>
|
||||
</property>
|
||||
<item>
|
||||
<widget class="QRadioButton" name="isRotateRB" >
|
||||
<property name="text" >
|
||||
<string>Rotate</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QRadioButton" name="isMoveRB" >
|
||||
<property name="text" >
|
||||
<string>Move</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QRadioButton" name="isScaleRB" >
|
||||
<property name="text" >
|
||||
<string>Scale</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
<item row="1" column="1" >
|
||||
<widget class="QGroupBox" name="rotateBox" >
|
||||
<property name="title" >
|
||||
<string>Rotate</string>
|
||||
<item>
|
||||
<layout class="QHBoxLayout" >
|
||||
<property name="margin" >
|
||||
<number>0</number>
|
||||
</property>
|
||||
<layout class="QGridLayout" >
|
||||
<property name="margin" >
|
||||
<number>9</number>
|
||||
</property>
|
||||
<property name="spacing" >
|
||||
<number>6</number>
|
||||
</property>
|
||||
<item row="1" column="0" >
|
||||
<widget class="QDial" name="rotateDial" >
|
||||
<property name="maximum" >
|
||||
<number>359</number>
|
||||
</property>
|
||||
<property name="sliderPosition" >
|
||||
<number>180</number>
|
||||
</property>
|
||||
<property name="orientation" >
|
||||
<enum>Qt::Vertical</enum>
|
||||
</property>
|
||||
<property name="invertedAppearance" >
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
<property name="invertedControls" >
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
<property name="wrapping" >
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
<property name="notchesVisible" >
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="5" column="0" >
|
||||
<widget class="QPushButton" name="rotateZUpPB" >
|
||||
<property name="text" >
|
||||
<string>Rotate Z Up</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="4" column="0" >
|
||||
<widget class="QPushButton" name="rotateXUpPB" >
|
||||
<property name="text" >
|
||||
<string>Rotate X Up</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="3" column="0" >
|
||||
<widget class="QGroupBox" name="centerRotateBox" >
|
||||
<property name="title" >
|
||||
<string>Center</string>
|
||||
</property>
|
||||
<layout class="QGridLayout" >
|
||||
<property name="spacing" >
|
||||
<number>6</number>
|
||||
</property>
|
||||
<item>
|
||||
<layout class="QVBoxLayout" >
|
||||
<property name="margin" >
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="spacing" >
|
||||
<number>6</number>
|
||||
</property>
|
||||
<item>
|
||||
<widget class="QGroupBox" name="rotateBox" >
|
||||
<property name="title" >
|
||||
<string>Rotate</string>
|
||||
</property>
|
||||
<layout class="QVBoxLayout" >
|
||||
<property name="margin" >
|
||||
<number>9</number>
|
||||
</property>
|
||||
<property name="spacing" >
|
||||
<number>6</number>
|
||||
</property>
|
||||
<item>
|
||||
<layout class="QHBoxLayout" >
|
||||
<property name="margin" >
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="spacing" >
|
||||
<number>6</number>
|
||||
</property>
|
||||
<item>
|
||||
<layout class="QVBoxLayout" >
|
||||
<property name="margin" >
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="spacing" >
|
||||
<number>6</number>
|
||||
</property>
|
||||
<item>
|
||||
<widget class="QRadioButton" name="xAxisRB" >
|
||||
<property name="text" >
|
||||
<string>X</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QRadioButton" name="yAxisRB" >
|
||||
<property name="text" >
|
||||
<string>Y</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QRadioButton" name="zAxisRB" >
|
||||
<property name="text" >
|
||||
<string>Z</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QDial" name="rotateDial" >
|
||||
<property name="maximum" >
|
||||
<number>359</number>
|
||||
</property>
|
||||
<property name="sliderPosition" >
|
||||
<number>180</number>
|
||||
</property>
|
||||
<property name="orientation" >
|
||||
<enum>Qt::Vertical</enum>
|
||||
</property>
|
||||
<property name="invertedAppearance" >
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
<property name="invertedControls" >
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
<property name="wrapping" >
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
<property name="notchesVisible" >
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QLineEdit" name="rotateLE" >
|
||||
<property name="text" >
|
||||
<string>0.0</string>
|
||||
</property>
|
||||
<property name="maxLength" >
|
||||
<number>10</number>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QGroupBox" name="centerRotateBox" >
|
||||
<property name="title" >
|
||||
<string>Rotation Center</string>
|
||||
</property>
|
||||
<layout class="QGridLayout" >
|
||||
<property name="margin" >
|
||||
<number>9</number>
|
||||
</property>
|
||||
<property name="spacing" >
|
||||
<number>6</number>
|
||||
</property>
|
||||
<item row="1" column="0" >
|
||||
<widget class="QRadioButton" name="originRotateRB" >
|
||||
<property name="text" >
|
||||
<string>Origin</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="0" >
|
||||
<widget class="QRadioButton" name="centerRotateRB" >
|
||||
<property name="text" >
|
||||
<string>Mesh Center</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QPushButton" name="rotateXUpPB" >
|
||||
<property name="text" >
|
||||
<string>Rotate X Up</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QPushButton" name="rotateZUpPB" >
|
||||
<property name="text" >
|
||||
<string>Rotate Z Up</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<spacer>
|
||||
<property name="orientation" >
|
||||
<enum>Qt::Vertical</enum>
|
||||
</property>
|
||||
<property name="sizeHint" >
|
||||
<size>
|
||||
<width>16</width>
|
||||
<height>56</height>
|
||||
</size>
|
||||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QGroupBox" name="groupBox_2" >
|
||||
<property name="title" >
|
||||
<string>Transformation mode</string>
|
||||
</property>
|
||||
<layout class="QVBoxLayout" >
|
||||
<property name="margin" >
|
||||
<number>9</number>
|
||||
</property>
|
||||
<property name="spacing" >
|
||||
<number>6</number>
|
||||
</property>
|
||||
<item>
|
||||
<widget class="QRadioButton" name="absoluteRB" >
|
||||
<property name="text" >
|
||||
<string>Absolute</string>
|
||||
</property>
|
||||
<property name="checked" >
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QRadioButton" name="relativeRB" >
|
||||
<property name="text" >
|
||||
<string>Relative</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
<item>
|
||||
<layout class="QVBoxLayout" >
|
||||
<property name="margin" >
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="spacing" >
|
||||
<number>6</number>
|
||||
</property>
|
||||
<item>
|
||||
<layout class="QHBoxLayout" >
|
||||
<property name="margin" >
|
||||
<number>9</number>
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="spacing" >
|
||||
<number>6</number>
|
||||
</property>
|
||||
<item row="0" column="0" >
|
||||
<widget class="QRadioButton" name="centerRotateRB" >
|
||||
<property name="text" >
|
||||
<string>Mesh Center</string>
|
||||
<item>
|
||||
<widget class="QGroupBox" name="moveBox" >
|
||||
<property name="title" >
|
||||
<string>Move</string>
|
||||
</property>
|
||||
<layout class="QVBoxLayout" >
|
||||
<property name="margin" >
|
||||
<number>9</number>
|
||||
</property>
|
||||
<property name="spacing" >
|
||||
<number>6</number>
|
||||
</property>
|
||||
<item>
|
||||
<layout class="QGridLayout" >
|
||||
<property name="margin" >
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="spacing" >
|
||||
<number>6</number>
|
||||
</property>
|
||||
<item row="2" column="1" >
|
||||
<widget class="QLineEdit" name="zMoveLE" />
|
||||
</item>
|
||||
<item row="0" column="1" >
|
||||
<widget class="QLineEdit" name="xMoveLE" />
|
||||
</item>
|
||||
<item row="2" column="0" >
|
||||
<widget class="QLabel" name="zMoveLBL" >
|
||||
<property name="text" >
|
||||
<string>Z</string>
|
||||
</property>
|
||||
<property name="buddy" >
|
||||
<cstring>zMoveLE</cstring>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="1" >
|
||||
<widget class="QLineEdit" name="yMoveLE" />
|
||||
</item>
|
||||
<item row="1" column="0" >
|
||||
<widget class="QLabel" name="yMoveLBL" >
|
||||
<property name="text" >
|
||||
<string>Y</string>
|
||||
</property>
|
||||
<property name="buddy" >
|
||||
<cstring>yMoveLE</cstring>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="0" >
|
||||
<widget class="QLabel" name="xMoveLBL" >
|
||||
<property name="text" >
|
||||
<string>X</string>
|
||||
</property>
|
||||
<property name="buddy" >
|
||||
<cstring>xMoveLE</cstring>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QPushButton" name="mvCenterOriginPB" >
|
||||
<property name="text" >
|
||||
<string>Move center to origin</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<spacer>
|
||||
<property name="orientation" >
|
||||
<enum>Qt::Vertical</enum>
|
||||
</property>
|
||||
<property name="sizeHint" >
|
||||
<size>
|
||||
<width>20</width>
|
||||
<height>40</height>
|
||||
</size>
|
||||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="0" >
|
||||
<widget class="QRadioButton" name="originRotateRB" >
|
||||
<property name="text" >
|
||||
<string>Origin</string>
|
||||
<item>
|
||||
<widget class="QGroupBox" name="scaleBox" >
|
||||
<property name="title" >
|
||||
<string>Scale</string>
|
||||
</property>
|
||||
<layout class="QGridLayout" >
|
||||
<property name="margin" >
|
||||
<number>9</number>
|
||||
</property>
|
||||
<property name="spacing" >
|
||||
<number>6</number>
|
||||
</property>
|
||||
<item row="0" column="0" >
|
||||
<layout class="QGridLayout" >
|
||||
<property name="margin" >
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="spacing" >
|
||||
<number>6</number>
|
||||
</property>
|
||||
<item row="2" column="0" >
|
||||
<widget class="QLabel" name="zScaleLBL" >
|
||||
<property name="text" >
|
||||
<string>Z</string>
|
||||
</property>
|
||||
<property name="buddy" >
|
||||
<cstring>zScaleLE</cstring>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="1" >
|
||||
<widget class="QLineEdit" name="yScaleLE" />
|
||||
</item>
|
||||
<item row="0" column="1" >
|
||||
<widget class="QLineEdit" name="xScaleLE" />
|
||||
</item>
|
||||
<item row="1" column="0" >
|
||||
<widget class="QLabel" name="yScaleLBL" >
|
||||
<property name="text" >
|
||||
<string>Y</string>
|
||||
</property>
|
||||
<property name="buddy" >
|
||||
<cstring>yScaleLE</cstring>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="0" >
|
||||
<widget class="QLabel" name="xScaleLBL" >
|
||||
<property name="text" >
|
||||
<string>X</string>
|
||||
</property>
|
||||
<property name="buddy" >
|
||||
<cstring>xScaleLE</cstring>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="2" column="1" >
|
||||
<widget class="QLineEdit" name="zScaleLE" />
|
||||
</item>
|
||||
<item row="3" column="0" colspan="2" >
|
||||
<widget class="QCheckBox" name="uniformScaleCB" >
|
||||
<property name="text" >
|
||||
<string>Uniform</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
<item row="1" column="0" >
|
||||
<widget class="QPushButton" name="scaleUnitPB" >
|
||||
<property name="text" >
|
||||
<string>Scale to unit box</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="2" column="0" >
|
||||
<widget class="QLineEdit" name="rotateLE" >
|
||||
<property name="text" >
|
||||
<string>0.0</string>
|
||||
</property>
|
||||
<property name="maxLength" >
|
||||
<number>10</number>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="0" >
|
||||
<layout class="QHBoxLayout" >
|
||||
<property name="margin" >
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="spacing" >
|
||||
<number>6</number>
|
||||
</property>
|
||||
<item>
|
||||
<widget class="QRadioButton" name="xAxisRB" >
|
||||
<property name="text" >
|
||||
<string>X</string>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QGroupBox" name="groupBox" >
|
||||
<property name="toolTip" >
|
||||
<string/>
|
||||
</property>
|
||||
<property name="title" >
|
||||
<string>Current Transformation Matrix</string>
|
||||
</property>
|
||||
<layout class="QVBoxLayout" >
|
||||
<property name="margin" >
|
||||
<number>4</number>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QRadioButton" name="yAxisRB" >
|
||||
<property name="text" >
|
||||
<string>Y</string>
|
||||
<property name="spacing" >
|
||||
<number>3</number>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QRadioButton" name="zAxisRB" >
|
||||
<property name="text" >
|
||||
<string>Z</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
<item>
|
||||
<widget class="QTableWidget" name="tableWidget" >
|
||||
<property name="font" >
|
||||
<font>
|
||||
<pointsize>9</pointsize>
|
||||
</font>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<layout class="QGridLayout" >
|
||||
<property name="margin" >
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="spacing" >
|
||||
<number>6</number>
|
||||
</property>
|
||||
<item row="1" column="0" >
|
||||
<widget class="QLabel" name="bboxMaxLBL" >
|
||||
<property name="sizePolicy" >
|
||||
<sizepolicy>
|
||||
<hsizetype>5</hsizetype>
|
||||
<vsizetype>5</vsizetype>
|
||||
<horstretch>1</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="text" >
|
||||
<string>Bounding Box Max</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="1" >
|
||||
<widget class="QLabel" name="bboxValueMinLBL" >
|
||||
<property name="text" >
|
||||
<string>bboxValueMinLBL</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="0" >
|
||||
<widget class="QLabel" name="bboxMinLBL" >
|
||||
<property name="text" >
|
||||
<string>Bounding Box Min</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="1" >
|
||||
<widget class="QLabel" name="bboxValueMaxLBL" >
|
||||
<property name="sizePolicy" >
|
||||
<sizepolicy>
|
||||
<hsizetype>5</hsizetype>
|
||||
<vsizetype>5</vsizetype>
|
||||
<horstretch>2</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="text" >
|
||||
<string>bboxValueMaxLBL</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="2" column="0" >
|
||||
<spacer>
|
||||
<property name="orientation" >
|
||||
<enum>Qt::Vertical</enum>
|
||||
</property>
|
||||
<property name="sizeHint" >
|
||||
<size>
|
||||
<width>0</width>
|
||||
<height>0</height>
|
||||
</size>
|
||||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
<item row="1" column="0" >
|
||||
<widget class="QGroupBox" name="moveBox" >
|
||||
<property name="title" >
|
||||
<string>Move</string>
|
||||
</property>
|
||||
<layout class="QGridLayout" >
|
||||
<property name="margin" >
|
||||
<number>9</number>
|
||||
</property>
|
||||
<property name="spacing" >
|
||||
<number>6</number>
|
||||
</property>
|
||||
<item row="1" column="0" >
|
||||
<widget class="QPushButton" name="mvCenterOriginPB" >
|
||||
<property name="text" >
|
||||
<string>Move center to origin</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="0" >
|
||||
<layout class="QGridLayout" >
|
||||
<property name="margin" >
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="spacing" >
|
||||
<number>6</number>
|
||||
</property>
|
||||
<item row="2" column="1" >
|
||||
<widget class="QLineEdit" name="zMoveLE" />
|
||||
</item>
|
||||
<item row="0" column="1" >
|
||||
<widget class="QLineEdit" name="xMoveLE" />
|
||||
</item>
|
||||
<item row="2" column="0" >
|
||||
<widget class="QLabel" name="zMoveLBL" >
|
||||
<property name="text" >
|
||||
<string>Z</string>
|
||||
</property>
|
||||
<property name="buddy" >
|
||||
<cstring>zMoveLE</cstring>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="1" >
|
||||
<widget class="QLineEdit" name="yMoveLE" />
|
||||
</item>
|
||||
<item row="1" column="0" >
|
||||
<widget class="QLabel" name="yMoveLBL" >
|
||||
<property name="text" >
|
||||
<string>Y</string>
|
||||
</property>
|
||||
<property name="buddy" >
|
||||
<cstring>yMoveLE</cstring>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="0" >
|
||||
<widget class="QLabel" name="xMoveLBL" >
|
||||
<property name="text" >
|
||||
<string>X</string>
|
||||
</property>
|
||||
<property name="buddy" >
|
||||
<cstring>xMoveLE</cstring>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="3" column="0" colspan="3" >
|
||||
<item>
|
||||
<layout class="QHBoxLayout" >
|
||||
<property name="margin" >
|
||||
<number>0</number>
|
||||
@ -320,93 +550,44 @@
|
||||
</spacer>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QPushButton" name="okButton" >
|
||||
<widget class="QPushButton" name="applyButton" >
|
||||
<property name="text" >
|
||||
<string>OK</string>
|
||||
<string>Apply</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QPushButton" name="cancelButton" >
|
||||
<widget class="QPushButton" name="closeButton" >
|
||||
<property name="text" >
|
||||
<string>Cancel</string>
|
||||
<string>Close</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
<item row="2" column="0" colspan="3" >
|
||||
<layout class="QGridLayout" >
|
||||
<property name="margin" >
|
||||
<number>0</number>
|
||||
<item>
|
||||
<widget class="QTextBrowser" name="textBrowser" >
|
||||
<property name="font" >
|
||||
<font>
|
||||
<pointsize>11</pointsize>
|
||||
</font>
|
||||
</property>
|
||||
<property name="spacing" >
|
||||
<number>6</number>
|
||||
<property name="html" >
|
||||
<string><html><head><meta name="qrichtext" content="1" /><style type="text/css">
|
||||
p, li { white-space: pre-wrap; }
|
||||
</style></head><body style=" font-family:'Lucida Grande'; font-size:11pt; font-weight:400; font-style:normal; text-decoration:none;">
|
||||
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:13pt;"><span style=" font-size:11pt;">MeshLab keeps for each layer/mesh a current trasformation matrix </span><span style=" font-size:11pt; font-weight:600; font-style:italic;">T</span><span style=" font-size:11pt;">: </span><span style=" font-size:11pt; font-weight:600; font-style:italic;">T</span><span style=" font-size:11pt;"> is used in rendering and alignment. The </span><span style=" font-size:11pt; font-weight:600; font-style:italic;">T</span><span style=" font-size:11pt;"> matrix is usually </span><span style=" font-size:11pt; font-weight:600; font-style:italic;">NOT</span><span style=" font-size:11pt;"> saved when you export the mesh into a generic format.</span></p>
|
||||
<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p>
|
||||
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">With this dialog you can change <span style=" font-weight:600; font-style:italic;">T</span> </p>
|
||||
<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p>
|
||||
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">When the transformation mode is set to relative all the computations involves the <span style=" font-weight:600; font-style:italic;">T</span> Matrix (e.g. the </p>
|
||||
<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p>
|
||||
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">To actually change the coords of the mesh and baking the matrix into the mesh itself you have to use the <span style=" font-weight:600; font-style:italic;">freeze</span> filter (in that case <span style=" font-weight:600; font-style:italic;">T</span> become the Identity).</p></body></html></string>
|
||||
</property>
|
||||
<item row="1" column="0" >
|
||||
<widget class="QLabel" name="bboxMaxLBL" >
|
||||
<property name="text" >
|
||||
<string>Bounding Box Max</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="0" >
|
||||
<widget class="QLabel" name="bboxMinLBL" >
|
||||
<property name="text" >
|
||||
<string>Bounding Box Min</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="1" >
|
||||
<widget class="QLabel" name="bboxValueMaxLBL" >
|
||||
<property name="text" >
|
||||
<string>bboxValueMaxLBL</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="1" >
|
||||
<widget class="QLabel" name="bboxValueMinLBL" >
|
||||
<property name="text" >
|
||||
<string>bboxValueMinLBL</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
<item row="0" column="0" colspan="3" >
|
||||
<layout class="QHBoxLayout" >
|
||||
<property name="margin" >
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="spacing" >
|
||||
<number>6</number>
|
||||
</property>
|
||||
<item>
|
||||
<widget class="QRadioButton" name="isMoveRB" >
|
||||
<property name="text" >
|
||||
<string>Move</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QRadioButton" name="isRotateRB" >
|
||||
<property name="text" >
|
||||
<string>Rotate</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QRadioButton" name="isScaleRB" >
|
||||
<property name="text" >
|
||||
<string>Scale</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
<pixmapfunction></pixmapfunction>
|
||||
<tabstops>
|
||||
<tabstop>isMoveRB</tabstop>
|
||||
<tabstop>isRotateRB</tabstop>
|
||||
@ -418,7 +599,7 @@
|
||||
<resources/>
|
||||
<connections>
|
||||
<connection>
|
||||
<sender>cancelButton</sender>
|
||||
<sender>closeButton</sender>
|
||||
<signal>clicked()</signal>
|
||||
<receiver>TransformDialog</receiver>
|
||||
<slot>reject()</slot>
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user