mirror of
https://github.com/lucaspalomodevelop/meshlab.git
synced 2026-03-20 11:26:11 +00:00
Added missing face quality variable and added postcondition for function filters (preview!)
This commit is contained in:
parent
304d89e5b2
commit
db42bd4e2c
@ -72,12 +72,12 @@ FilterFunctionPlugin::~FilterFunctionPlugin()
|
||||
case FF_VERT_SELECTION : return QString("Conditional Vertex Selection");
|
||||
case FF_FACE_SELECTION : return QString("Conditional Face Selection");
|
||||
case FF_GEOM_FUNC : return QString("Geometric Function");
|
||||
case FF_FACE_COLOR : return QString("Per-Face Color Function");
|
||||
case FF_FACE_QUALITY : return QString("Per-Face Quality Function");
|
||||
case FF_VERT_COLOR : return QString("Per-Vertex Color Function");
|
||||
case FF_VERT_QUALITY : return QString("Per-Vertex Quality Function");
|
||||
case FF_DEF_VERT_ATTRIB : return QString("Define New Per-Vertex Attribute");
|
||||
case FF_DEF_FACE_ATTRIB : return QString("Define New Per-Face Attribute");
|
||||
case FF_FACE_COLOR : return QString("Per Face Color Function");
|
||||
case FF_FACE_QUALITY : return QString("Per Face Quality Function");
|
||||
case FF_VERT_COLOR : return QString("Per Vertex Color Function");
|
||||
case FF_VERT_QUALITY : return QString("Per Vertex Quality Function");
|
||||
case FF_DEF_VERT_ATTRIB : return QString("Define New Per Vertex Attribute");
|
||||
case FF_DEF_FACE_ATTRIB : return QString("Define New Per Face Attribute");
|
||||
case FF_GRID : return QString("Grid Generator");
|
||||
case FF_REFINE : return QString("Refine User-Defined");
|
||||
case FF_ISOSURFACE : return QString("Implicit Surface");
|
||||
@ -169,11 +169,34 @@ const QString PerFaceAttributeString("It's possibile to use per-face variables l
|
||||
case FF_DEF_VERT_ATTRIB : return MeshFilterInterface::Layer;
|
||||
case FF_DEF_FACE_ATTRIB : return MeshFilterInterface::Layer;
|
||||
|
||||
|
||||
default : return MeshFilterInterface::Generic;
|
||||
}
|
||||
}
|
||||
|
||||
int FilterFunctionPlugin::postCondition(QAction *action) const
|
||||
{
|
||||
switch(ID(action))
|
||||
{
|
||||
case FF_VERT_SELECTION :
|
||||
case FF_FACE_SELECTION :
|
||||
return MeshModel::MM_VERTFLAGSELECT | MeshModel::MM_FACEFLAGSELECT;
|
||||
case FF_FACE_COLOR :
|
||||
return MeshModel::MM_FACECOLOR;
|
||||
case FF_GEOM_FUNC :
|
||||
return MeshModel::MM_VERTCOORD + MeshModel::MM_VERTNORMAL + MeshModel::MM_FACENORMAL;
|
||||
case FF_VERT_COLOR :
|
||||
return MeshModel::MM_VERTCOLOR;
|
||||
case FF_VERT_QUALITY :
|
||||
return MeshModel::MM_VERTQUALITY+MeshModel::MM_VERTCOLOR;
|
||||
case FF_FACE_QUALITY :
|
||||
return MeshModel::MM_FACECOLOR + MeshModel::MM_FACEQUALITY;
|
||||
case FF_DEF_VERT_ATTRIB :
|
||||
case FF_GRID :
|
||||
case FF_ISOSURFACE :
|
||||
case FF_DEF_FACE_ATTRIB :
|
||||
case FF_REFINE :
|
||||
return MeshModel::MM_UNKNOWN;
|
||||
}
|
||||
}
|
||||
int FilterFunctionPlugin::getRequirements(QAction *action)
|
||||
{
|
||||
switch(ID(action))
|
||||
@ -968,6 +991,10 @@ void FilterFunctionPlugin::setAttributes(CMeshO::FaceIterator &fi, CMeshO &m)
|
||||
g2 = (*fi).V(2)->C()[1];
|
||||
b2 = (*fi).V(2)->C()[2];
|
||||
|
||||
if(HasPerFaceQuality(m))
|
||||
fq=(*fi).Q();
|
||||
else fq=0;
|
||||
|
||||
// set face color attributes
|
||||
if(HasPerFaceColor(m)){
|
||||
r = (*fi).C()[0];
|
||||
@ -1066,6 +1093,9 @@ void FilterFunctionPlugin::setPerFaceVariables(Parser &p)
|
||||
p.DefineVar("g", &g);
|
||||
p.DefineVar("b", &b);
|
||||
|
||||
// face quality
|
||||
p.DefineVar("q", &fq);
|
||||
|
||||
// index
|
||||
p.DefineVar("fi",&f);
|
||||
p.DefineVar("vi0",&v0i);
|
||||
|
||||
@ -37,7 +37,7 @@ class FilterFunctionPlugin : public QObject, public MeshFilterInterface
|
||||
Q_INTERFACES(MeshFilterInterface)
|
||||
|
||||
protected:
|
||||
double x,y,z,nx,ny,nz,r,g,b,q,rad;
|
||||
double x,y,z,nx,ny,nz,r,g,b,q,fq,rad;
|
||||
double x0,y0,z0,x1,y1,z1,x2,y2,z2,nx0,ny0,nz0,nx1,ny1,nz1,nx2,ny2,nz2,r0,g0,b0,r1,g1,b1,r2,g2,b2,q0,q1,q2;
|
||||
double v,f,v0i,v1i,v2i;
|
||||
std::vector<std::string> v_attrNames;
|
||||
@ -67,9 +67,11 @@ public:
|
||||
virtual QString filterName(FilterIDType filter) const;
|
||||
virtual QString filterInfo(FilterIDType filter) const;
|
||||
virtual FilterClass getClass(QAction *);
|
||||
virtual int postCondition(QAction *action) const;
|
||||
virtual void initParameterSet(QAction *,MeshModel &/*m*/, RichParameterSet & /*parent*/);
|
||||
virtual int getRequirements(QAction *);
|
||||
virtual bool applyFilter(QAction *filter, MeshDocument &md, RichParameterSet & /*parent*/, vcg::CallBackPos * cb) ;
|
||||
|
||||
void showParserError(const QString &s, mu::Parser::exception_type &e);
|
||||
void normalizeVertexQuality(MeshModel &m);
|
||||
void normalizeFaceQuality(MeshModel &m);
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user