mirror of
https://github.com/lucaspalomodevelop/meshlab.git
synced 2026-03-16 09:34:36 +00:00
added Apply Transform progress, but work in progress. Currently it modifies mesh vertices
This commit is contained in:
parent
95aa28c429
commit
b558b2fff0
@ -6,9 +6,7 @@
|
||||
* Visual Computing Lab /\/| *
|
||||
* ISTI - Italian National Research Council | *
|
||||
* \ *
|
||||
* All rights reserved. *
|
||||
* *
|
||||
* This program is free software; you can redistribute it and/or modify *
|
||||
* All rights reserved. 1 * This program is free software; you can redistribute it and/or modify *
|
||||
* it under the terms of the GNU General Public License as published by *
|
||||
* the Free Software Foundation; either version 2 of the License, or *
|
||||
* (at your option) any later version. *
|
||||
@ -23,6 +21,9 @@
|
||||
/****************************************************************************
|
||||
History
|
||||
$Log$
|
||||
Revision 1.41 2006/01/15 13:56:48 mariolatronico
|
||||
added Apply Transform progress, but work in progress. Currently it modifies mesh vertices
|
||||
|
||||
Revision 1.40 2006/01/09 15:25:58 mariolatronico
|
||||
- updated Help and Short help
|
||||
- on destructor deleted every action
|
||||
@ -124,16 +125,18 @@ Added copyright info
|
||||
#include <vcg/complex/trimesh/clean.h>
|
||||
#include <vcg/complex/trimesh/smooth.h>
|
||||
#include <vcg/complex/trimesh/update/color.h>
|
||||
#include <vcg/complex/trimesh/update/position.h>
|
||||
|
||||
/////////////
|
||||
#include "invert_faces.h"
|
||||
#include "../../test/decimator/decimator.h"
|
||||
#include "../../meshlab/GLLogStream.h"
|
||||
#include "../../meshlab/LogStream.h"
|
||||
|
||||
//#include "../../meshlab/glarea.h"
|
||||
////////////
|
||||
|
||||
using namespace vcg;
|
||||
|
||||
ExtraMeshFilterPlugin::ExtraMeshFilterPlugin() {
|
||||
actionList << new QAction(ST(FP_LOOP_SS), this);
|
||||
actionList << new QAction(ST(FP_BUTTERFLY_SS), this);
|
||||
@ -151,11 +154,15 @@ ExtraMeshFilterPlugin::ExtraMeshFilterPlugin() {
|
||||
actionList << new QAction(ST(FP_DECIMATOR), this);
|
||||
|
||||
actionList << new QAction(ST(FP_INVERT_FACES), this);
|
||||
actionList << new QAction(ST(FP_TRANSFORM), this);
|
||||
|
||||
refineDialog = new RefineDialog();
|
||||
refineDialog->hide();
|
||||
decimatorDialog = new DecimatorDialog();
|
||||
decimatorDialog->hide();
|
||||
transformDialog = new TransformDialog();
|
||||
transformDialog->hide();
|
||||
|
||||
}
|
||||
|
||||
const QString ExtraMeshFilterPlugin::ST(FilterType filter) {
|
||||
@ -182,6 +189,9 @@ const QString ExtraMeshFilterPlugin::ST(FilterType filter) {
|
||||
return QString("Re-oriented");
|
||||
case FP_INVERT_FACES:
|
||||
return QString("Invert Faces");
|
||||
case FP_TRANSFORM:
|
||||
return QString("Apply Transform");
|
||||
|
||||
default: assert(0);
|
||||
}
|
||||
return QString("error!");
|
||||
@ -191,6 +201,7 @@ const QString ExtraMeshFilterPlugin::ST(FilterType filter) {
|
||||
ExtraMeshFilterPlugin::~ExtraMeshFilterPlugin() {
|
||||
delete refineDialog;
|
||||
delete decimatorDialog;
|
||||
delete transformDialog;
|
||||
for (int i = 0; i < actionList.count() ; i++ ) {
|
||||
delete actionList.at(i);
|
||||
}
|
||||
@ -207,29 +218,23 @@ const ActionInfo &ExtraMeshFilterPlugin::Info(QAction *action)
|
||||
|
||||
if( action->text() == ST(FP_LOOP_SS) )
|
||||
{
|
||||
ai.Help = tr("Apply Loop's Subdivision Surface algorithm.\
|
||||
It is an approximate method which subdivide each triangle in four \
|
||||
faces. It works for every triangle and has rules for extraordinary vertices");
|
||||
ai.Help = tr("Apply Loop's Subdivision Surface algorithm. It is an approximate method which subdivide each triangle in four faces. It works for every triangle and has rules for extraordinary vertices");
|
||||
ai.ShortHelp = tr("Apply Loop's Subdivision Surface algorithm");
|
||||
}
|
||||
if( action->text() == ST(FP_BUTTERFLY_SS) )
|
||||
{
|
||||
ai.Help = tr("Apply Butterfly Subdivision Surface algorithm.\
|
||||
It is an interpolated method, defined on arbitrary triangular meshes.\
|
||||
The scheme is known to be C1 but not C2 on regular meshes");
|
||||
ai.Help = tr("Apply Butterfly Subdivision Surface algorithm. It is an interpolated method, defined on arbitrary triangular meshes. The scheme is known to be C1 but not C2 on regular meshes");
|
||||
ai.ShortHelp = tr("Apply Butterfly Subdivision Surface algorithm");
|
||||
}
|
||||
if( action->text() == ST(FP_REMOVE_UNREFERENCED_VERTEX) )
|
||||
{
|
||||
ai.Help = tr("Check for every vertex on the mesh if it is referenced\
|
||||
by a face and removes it");
|
||||
ai.Help = tr("Check for every vertex on the mesh if it is referenced by a face and removes it");
|
||||
ai.ShortHelp = tr("Remove Unreferenced Vertexes");
|
||||
|
||||
}
|
||||
if( action->text() == ST(FP_REMOVE_DUPLICATED_VERTEX) )
|
||||
{
|
||||
ai.Help = tr("Check for every vertex on the mesh if there are two vertices\
|
||||
with same coordinates and removes it");
|
||||
ai.Help = tr("Check for every vertex on the mesh if there are two vertices with same coordinates and removes it");
|
||||
ai.ShortHelp = tr("Remove Duplicated Vertexes");
|
||||
}
|
||||
if(action->text() == ST(FP_REMOVE_NULL_FACES) )
|
||||
@ -247,8 +252,7 @@ const ActionInfo &ExtraMeshFilterPlugin::Info(QAction *action)
|
||||
|
||||
if(action->text() == ST(FP_DECIMATOR) )
|
||||
{
|
||||
ai.Help = tr("Collapse vertices by creating a three dimensional grid enveloping\
|
||||
the mesh and discretizes them based on the cells of this grid");
|
||||
ai.Help = tr("Collapse vertices by creating a three dimensional grid enveloping the mesh and discretizes them based on the cells of this grid");
|
||||
ai.ShortHelp = tr("Simplify the surface eliminating triangle");
|
||||
|
||||
}
|
||||
@ -272,6 +276,11 @@ const ActionInfo &ExtraMeshFilterPlugin::Info(QAction *action)
|
||||
ai.Help = tr("Invert faces orentation, flip the normal of the mesh");
|
||||
ai.ShortHelp = tr("Invert faces orentation");
|
||||
}
|
||||
if(action->text() == ST(FP_TRANSFORM) )
|
||||
{
|
||||
ai.Help = tr("Apply transformation, you can rotate, translate or scale the mesh");
|
||||
ai.ShortHelp = tr("Apply Transform");
|
||||
}
|
||||
|
||||
|
||||
// ai.Help=tr("Generic Help for an action");
|
||||
@ -395,11 +404,23 @@ bool ExtraMeshFilterPlugin::applyFilter(QAction *filter, MeshModel &m, QWidget *
|
||||
log->Log(GLLogStream::Info, "Removed %d vertices", delvert);
|
||||
vcg::tri::UpdateNormals<CMeshO>::PerVertexNormalizedPerFace(m.cm);
|
||||
}
|
||||
|
||||
if (filter->text() == ST(FP_INVERT_FACES) ) {
|
||||
|
||||
InvertFaces<CMeshO>(m.cm);
|
||||
// update normal on InvertFaces function
|
||||
}
|
||||
|
||||
if (filter->text() == ST(FP_TRANSFORM) ) {
|
||||
int continueValue = transformDialog->exec();
|
||||
if (continueValue == QDialog::Rejected)
|
||||
return false;
|
||||
Matrix44f matrix = transformDialog->getTransformation();
|
||||
vcg::tri::UpdatePosition<CMeshO>::Matrix(m.cm, matrix);
|
||||
|
||||
}
|
||||
|
||||
|
||||
return true;
|
||||
}
|
||||
Q_EXPORT_PLUGIN(ExtraMeshFilterPlugin)
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user