small modifications to the isotropic_remeshing filter

This commit is contained in:
T.Alderighi 2019-12-11 16:35:30 +01:00
parent 2e3bdb88ae
commit ffda4f6758
2 changed files with 908 additions and 895 deletions

File diff suppressed because it is too large Load Diff

View File

@ -28,88 +28,91 @@
class ExtraMeshFilterPlugin : public QObject, public MeshFilterInterface
{
Q_OBJECT
MESHLAB_PLUGIN_IID_EXPORTER(MESH_FILTER_INTERFACE_IID)
Q_INTERFACES(MeshFilterInterface)
Q_OBJECT
MESHLAB_PLUGIN_IID_EXPORTER(MESH_FILTER_INTERFACE_IID)
Q_INTERFACES(MeshFilterInterface)
enum RefPlane { REF_CENTER,REF_MIN,REF_ORIG};
enum RefPlane { REF_CENTER,REF_MIN,REF_ORIG};
public:
/* naming convention :
- FP -> Filter Plugin
- name of the filter separated by _
*/
enum {
FP_LOOP_SS,
FP_BUTTERFLY_SS,
FP_CLUSTERING,
FP_QUADRIC_SIMPLIFICATION,
FP_QUADRIC_TEXCOORD_SIMPLIFICATION,
FP_EXPLICIT_ISOTROPIC_REMESHING,
FP_NORMAL_EXTRAPOLATION,
FP_NORMAL_SMOOTH_POINTCLOUD,
FP_COMPUTE_PRINC_CURV_DIR,
FP_SLICE_WITH_A_PLANE,
/* naming convention :
- FP -> Filter Plugin
- name of the filter separated by _
*/
enum {
FP_LOOP_SS,
FP_BUTTERFLY_SS,
FP_CLUSTERING,
FP_QUADRIC_SIMPLIFICATION,
FP_QUADRIC_TEXCOORD_SIMPLIFICATION,
FP_EXPLICIT_ISOTROPIC_REMESHING,
FP_NORMAL_EXTRAPOLATION,
FP_NORMAL_SMOOTH_POINTCLOUD,
FP_COMPUTE_PRINC_CURV_DIR,
FP_SLICE_WITH_A_PLANE,
FP_PERIMETER_POLYLINE,
FP_MIDPOINT,
FP_REORIENT ,
FP_FLIP_AND_SWAP,
FP_ROTATE,
FP_ROTATE_FIT,
FP_SCALE,
FP_CENTER,
FP_PRINCIPAL_AXIS,
FP_INVERT_FACES,
FP_FREEZE_TRANSFORM,
FP_RESET_TRANSFORM,
FP_MIDPOINT,
FP_REORIENT ,
FP_FLIP_AND_SWAP,
FP_ROTATE,
FP_ROTATE_FIT,
FP_SCALE,
FP_CENTER,
FP_PRINCIPAL_AXIS,
FP_INVERT_FACES,
FP_FREEZE_TRANSFORM,
FP_RESET_TRANSFORM,
FP_INVERT_TRANSFORM,
FP_SET_TRANSFORM_PARAMS,
FP_SET_TRANSFORM_MATRIX,
FP_CLOSE_HOLES_TRIVIAL,
FP_CLOSE_HOLES,
FP_CYLINDER_UNWRAP,
FP_REFINE_CATMULL,
FP_REFINE_HALF_CATMULL,
FP_QUAD_DOMINANT,
FP_MAKE_PURE_TRI,
FP_QUAD_PAIRING,
FP_FAUX_CREASE,
FP_FAUX_EXTRACT,
FP_VATTR_SEAM,
FP_REFINE_LS3_LOOP
} ;
FP_CLOSE_HOLES_TRIVIAL,
FP_CLOSE_HOLES,
FP_CYLINDER_UNWRAP,
FP_REFINE_CATMULL,
FP_REFINE_HALF_CATMULL,
FP_QUAD_DOMINANT,
FP_MAKE_PURE_TRI,
FP_QUAD_PAIRING,
FP_FAUX_CREASE,
FP_FAUX_EXTRACT,
FP_VATTR_SEAM,
FP_REFINE_LS3_LOOP
} ;
ExtraMeshFilterPlugin();
~ExtraMeshFilterPlugin(){}
QString filterName(FilterIDType filter) const;
QString filterInfo(FilterIDType filter) const;
ExtraMeshFilterPlugin();
~ExtraMeshFilterPlugin(){}
QString filterName(FilterIDType filter) const;
QString filterInfo(FilterIDType filter) const;
FilterClass getClass(QAction *);
void initParameterSet(QAction *,MeshModel &/*m*/, RichParameterSet & /*parent*/);
bool applyFilter(QAction *filter, MeshDocument &md, RichParameterSet & /*parent*/, vcg::CallBackPos * cb) ;
int postCondition(QAction *filter) const;
int getPreCondition(QAction *filter) const;
FILTER_ARITY filterArity(QAction *) const {return SINGLE_MESH;}
FilterClass getClass(QAction *);
void initParameterSet(QAction *,MeshModel &/*m*/, RichParameterSet & /*parent*/);
bool applyFilter(QAction *filter, MeshDocument &md, RichParameterSet & /*parent*/, vcg::CallBackPos * cb) ;
int postCondition(QAction *filter) const;
int getPreCondition(QAction *filter) const;
FILTER_ARITY filterArity(QAction *) const {return SINGLE_MESH;}
protected:
float lastq_QualityThr;
bool lastq_QualityWeight;
bool lastq_PreserveBoundary;
bool lastq_Selected;
bool lastq_PreserveNormal;
bool lastq_BoundaryWeight;
bool lastq_PreserveTopology;
bool lastq_OptimalPlacement;
bool lastq_PlanarQuadric;
float lastq_PlanarWeight;
float lastq_QualityThr;
bool lastq_QualityWeight;
bool lastq_PreserveBoundary;
bool lastq_Selected;
bool lastq_PreserveNormal;
bool lastq_BoundaryWeight;
bool lastq_PreserveTopology;
bool lastq_OptimalPlacement;
bool lastq_PlanarQuadric;
float lastq_PlanarWeight;
float lastqtex_QualityThr;
float lastqtex_extratw;
float lastqtex_QualityThr;
float lastqtex_extratw;
int lastisor_Iterations;
float lastisor_MaxSurfDist;
float lastisor_FeatureDeg;
bool lastisor_CheckSurfDist;
bool lastisor_RemeshingAdaptivity;
bool lastisor_SelectedOnly;
bool lastisor_RefineFlag;