MultiResMeshEditor.h

00001 #ifndef MULTIRESMESHEDITOR_H
00002 #define MULTIRESMESHEDITOR_H
00003 #include <QGLViewer/qglviewer.h>
00004 #include "BaryPatch.h"
00005 #include <qobject.h>
00006 /*
00007  __  __       _ _   _ _____           __  __           _     ______    _ _ _ 
00008 |  \/  |     | | | (_)  __ \         |  \/  |         | |   |  ____|  | (_) |
00009 | \  / |_   _| | |_ _| |__) |___  ___| \  / | ___  ___| |__ | |__   __| |_| |_  ___  _ __
00010 | |\/| | | | | | __| |  _  // _ \/ __| |\/| |/ _ \/ __| '_ \|  __| / _` | | __|/ _ \| '__|
00011 | |  | | |_| | | |_| | | \ \  __/\__ \ |  | |  __/\__ \ | | | |___| (_| | | |_| (_) | |
00012 |_|  |_|\__,_|_|\__|_|_|  \_\___||___/_|  |_|\___||___/_| |_|______\__,_|_|\__|\___/|_|
00013 
00014 */
00015 
00017 
00023 class MultiResMeshEditor : public QGLViewer
00024 {
00025         Q_OBJECT
00026 public: 
00030     /*Basic constructor : The MultiResMeshEditor is a QOBJECT*/
00031         MultiResMeshEditor(QWidget *parent, const char *name);
00034         virtual void draw();
00035         virtual void drawWithNames();
00037         virtual void init();
00039         virtual QString helpString() const;
00042         virtual void postSelection(const QPoint& point);
00044         virtual void keyPressEvent(QKeyEvent *e);
00046         void RefreshHelperPos();
00047         
00049         double OptimizePlanarityFunctionTables(double &WorstPlanarity,double& AveragePlanarity, int NbQuads, Point*** Quads, double* QuadPlanarities);
00051         double OptimizePlanarityFunctionTablesAfterPerturbModif(double& WorstPlanarity,double& NewWorstPlanarity,double& AveragePlanarity,double& NewAveragePlanarity,int NbQ, Point*** QTable,double* QuadPlanarities,int* ModifiedQuads);
00053         OptimizePlanarityTables(bool OnlySelectedPerturb, bool OnlySelectedPatches, float MaxBigVectorNorm, float DerStep, float MoveStep, int NbIter, float Alpha, float Beta, float Gamma);
00055         OptimizePlanarityTablesZMode(bool OnlySelectedPerturb, bool OnlySelectedPatches, float MaxBigVectorNorm, float DerStep, float MoveStep, int NbIter, float Alpha, float Beta, float Gamma);
00057         
00060 
00063         
00066         int _DrawLevel;
00069         int _DrawMode; 
00071         BaryPatch* _RootPatch; 
00074         Point ** _LvlZeroPts;
00076         int _LvlZeroNbPts;
00081         ManipulatedFrame* _MyManipulatedFrame;
00083         
00092         int _InitMeshUSize;
00094         int _InitMeshVSize;
00096         int _InitMeshWSize;
00099         int _InitMeshCreateMode;
00102         float _DrawParameter1;
00105         float _DrawParameter2;
00108         float _DrawParameter3;
00110         
00118         QString _SubFileName;
00120         SubdivScheme* _SubdivScheme;
00122         int _SubdivSchemeUCnx1;
00123         int _SubdivSchemeUCnx2;
00124         int _SubdivSchemeVCnx1;
00125         int _SubdivSchemeVCnx2;
00126         int _SubdivSchemeWCnx1;
00127         int _SubdivSchemeWCnx2;
00130         stack<SubdivScheme*> _UsedSchemes;
00132         stack<Point*> _PointTable1;
00134         stack<Point*> _PointTable2;
00136         stack<Point*> _PointTable3;
00138         stack<Point*> _PointTable4;
00140         stack<BaryPatch*> _PatchTable1;
00142         stack<BaryPatch*> _PatchTable2;
00144         stack<BaryPatch*> _PatchTable3;
00146         stack<BaryPatch*> _PatchTable4;
00148         int _TablesLevel[8];
00150         int _LevelMax;
00152         Point*** _PerturbTable;
00154         int* _NbPerturb; 
00156         
00163         QString _ObjFileName;
00165         QString _SaveName;
00170         int _OutputMode;
00172         int _NbGridPoints; 
00174         
00181         Frame _HelperFrame;
00183         bool _HelperDraw; 
00185         float _HelperSize; 
00188         float _HelperPosX;
00190         float _HelperPosY;
00192         float _HelperPosZ;
00194         Point* _HelperPt1;
00196         Point* _HelperPt2;
00198         Point* _HelperPt3;
00200         bool _HelperBaryPos;
00202         float _HelperOrientX;
00204         float _HelperOrientY;
00206         float _HelperOrientZ;
00208         bool _HelperFollowMF;
00210         AxisPlaneConstraint* _PlaneConstrainedObject;
00212         AxisPlaneConstraint* _AxisConstrainedObject;
00214         AxisPlaneConstraint* _FreeObject;
00216         
00223         float _PlanaritySelectionThreshHold;
00225         float _PlanarityOptimDerStep;
00227         int _PlanarityOptimNbIter;
00229         bool _PlanarityOptimSelectedPatches;
00231         bool _PlanarityOptimSelectedPerturbs;
00233         float _PlanarityOptimMoveStep;
00235         float _PlanarityOptimAlpha;
00236         float _PlanarityOptimBeta;
00238         bool _PlanarityOptimZMode;
00241         bool _PlanarityDegMode;
00243         int _PlanarityNbTestsBetter;
00245         
00246 public slots :
00252         S_ToggleDrawLevel(int Level);
00254         S_ToggleDrawMode(int DrawMode);
00255         
00257         S_ToggleInitMeshUSize(int USize);
00259         S_ToggleInitMeshVSize(int VSize);
00261         S_ToggleInitMeshWSize(int WSize);
00263         S_ToggleInitMeshCreateMode(int Mode);
00265         S_SetDrawParameter1(const QString& Value);
00267         S_SetDrawParameter2(const QString& Value);
00269         S_SetDrawParameter3(const QString& Value);
00271         S_CreateInitMesh();
00273         S_ResetPerturbations();
00275         S_ResetLevelPerturbations();
00277         S_ResetSelectedPerturbations();
00279         S_DeletePatch();
00282         S_CutSubtreePatch();
00284         S_SelectNeighbors();
00286         S_SelectNextPoint();
00288         S_SelectPrevPoint();
00290         S_SelectNextPatch();
00292         S_SelectPrevPatch();
00294         S_InversePointSelection();
00299         S_CreateSaveTable(int Key);
00301         S_PrintSaveTable(int Key);
00303 
00308         S_ChangeSubFileName(const QString& Name);
00311         S_LoadSubdivScheme();
00314         S_NewSubdivScheme();
00316         S_EditSubdivScheme();
00318         S_ActivateTransfo(int Uindice,int Vindice,int Windice);
00320         S_RotateTransfo(int Uindice,int Vindice,int Windice,int Axis);
00322         S_SymetriseTransfo(int Uindice,int Vindice,int Windice,int Axis);
00324         S_ApplySchemeToSelectedPatches();
00326         S_SubdivideLevel();
00328         S_SubdivideSelected();
00330         S_BuildPerturbations();
00332         
00338         S_ChangeObjFileName(const QString& Name);
00340         S_ToggleOutputMode(int Mode);
00342         S_SaveObjFile();
00344         S_SaveStructure();
00346         S_LoadStructure();
00348         S_BuildStructureFromPoints(int NbGridPoints);
00350         
00356         S_ToggleHelperView(bool B);
00358         S_ChangeHelperSize(int S);
00360         S_SetHelperPosX(const QString& S);
00362         S_SetHelperPosY(const QString& S);
00364         S_SetHelperPosZ(const QString& S);
00366         S_ToggleBaryAbs(bool Abs);
00368         S_SetHelperPt1();
00370         S_SetHelperPt2();
00372         S_SetHelperPt3();
00374         S_SetHelperOrientX(const QString& S);
00376         S_SetHelperOrientY(const QString& S);
00378         S_SetHelperOrientZ(const QString& S);
00380         S_PutMFOnHelper();
00382         S_MoveMFOnHelper();
00384         S_PutHelperOnPt();
00386         S_ToggleHelperFollowMF(bool B);
00388         S_ConstrainHelperXY(bool B);
00390         S_ConstrainHelperZ(bool B);
00392         S_ConstrainHelperFree(bool B);
00394         
00401         S_ViewWorstPlanarity();
00404         S_ViewAveragePlanarity();
00406         S_ResetColor();
00408         S_TogglePlanarityOnSelected(bool B);
00410         S_TogglePlanarityBySelected(bool B);
00412         S_TogglePlanarityMoveTypeFree(bool B);
00414         S_SetPlanarityThreshHold(const QString &S);
00416         S_SetPlanarityDerStep(const QString &S);
00418         S_SetPlanarityMoveStep(const QString &S);
00420         S_SetPlanarityAlpha(const QString &S);
00422         S_SetPlanarityBeta(const QString &S);
00424         S_SetPlanarityNbIter(int I);
00426         S_TogglePlanarityDegMode(bool B);
00428         S_SetPlanarityNbTestsBetter(int N);
00430         
00431 signals :
00437         void S_DisplayQstring(const QString & Q);
00439         void S_ResetSubdivSchemeModifier(int NbTU,int NbTV,int NbTW);
00441         void S_ResetProgressBar();
00443         void S_SetProgressBar(int B);
00445 };
00446 #endif

Generated on Thu Sep 28 09:38:08 2006 by  doxygen 1.4.7