mirror of
https://github.com/lucaspalomodevelop/meshlab.git
synced 2026-03-20 03:16:10 +00:00
cleaned up the mechanism of enabling/allowing the save of elements in the dialog. Now vertex normals for ply should work allowing to use ply for pointsets
This commit is contained in:
parent
0ad91da6b9
commit
c8262379f3
@ -977,15 +977,23 @@ bool MainWindow::open(QString fileName, GLArea *gla)
|
||||
renderModeTextureAct->setEnabled(true);
|
||||
GLA()->setTextureMode(GLW::TMPerWedgeMulti);
|
||||
}
|
||||
|
||||
|
||||
|
||||
if( mask & vcg::tri::io::Mask::IOM_VERTNORMAL)
|
||||
vcg::tri::UpdateNormals<CMeshO>::PerFace(mm->cm);
|
||||
else
|
||||
vcg::tri::UpdateNormals<CMeshO>::PerVertexNormalizedPerFaceNormalized(mm->cm);
|
||||
|
||||
vcg::tri::UpdateBounding<CMeshO>::Box(mm->cm); // updates bounding box
|
||||
|
||||
if(gla->mm()->cm.fn==0){
|
||||
gla->setDrawMode(vcg::GLW::DMPoints);
|
||||
gla->setLight(false);
|
||||
if(!(mask & vcg::tri::io::Mask::IOM_VERTNORMAL)) gla->setLight(false);
|
||||
else mm->updateDataMask(MeshModel::MM_VERTNORMAL);
|
||||
}
|
||||
else mm->updateDataMask(MeshModel::MM_VERTNORMAL);
|
||||
|
||||
updateMenus();
|
||||
int delVertNum = vcg::tri::Clean<CMeshO>::RemoveDegenerateVertex(mm->cm);
|
||||
int delFaceNum = vcg::tri::Clean<CMeshO>::RemoveDegenerateFace(mm->cm);
|
||||
|
||||
@ -125,3 +125,32 @@ bool MeshModel::RenderSelectedFaces()
|
||||
glPopAttrib();
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
int MeshModel::io2mm(int single_iobit)
|
||||
{
|
||||
switch(single_iobit)
|
||||
{
|
||||
case tri::io::Mask::IOM_NONE : return MM_NONE;
|
||||
case tri::io::Mask::IOM_VERTCOORD : return MM_VERTCOORD;
|
||||
case tri::io::Mask::IOM_VERTCOLOR : return MM_VERTCOLOR;
|
||||
case tri::io::Mask::IOM_VERTFLAGS : return MM_VERTFLAG;
|
||||
case tri::io::Mask::IOM_VERTQUALITY : return MM_VERTQUALITY;
|
||||
case tri::io::Mask::IOM_VERTNORMAL : return MM_VERTNORMAL;
|
||||
case tri::io::Mask::IOM_VERTTEXCOORD : return MM_VERTTEXCOORD;
|
||||
case tri::io::Mask::IOM_VERTRADIUS : return MM_VERTRADIUS;
|
||||
|
||||
case tri::io::Mask::IOM_FACEINDEX : return MM_FACEVERT ;
|
||||
case tri::io::Mask::IOM_FACEFLAGS : return MM_FACEFLAG ;
|
||||
case tri::io::Mask::IOM_FACECOLOR : return MM_FACECOLOR ;
|
||||
case tri::io::Mask::IOM_FACEQUALITY : return MM_FACEQUALITY;
|
||||
case tri::io::Mask::IOM_FACENORMAL : return MM_FACENORMAL ;
|
||||
|
||||
case tri::io::Mask::IOM_WEDGTEXCOORD : return MM_WEDGTEXCOORD;
|
||||
case tri::io::Mask::IOM_WEDGCOLOR : return MM_WEDGCOLOR;
|
||||
case tri::io::Mask::IOM_WEDGNORMAL : return MM_WEDGNORMAL ;
|
||||
} ;
|
||||
|
||||
assert(0);
|
||||
}
|
||||
|
||||
|
||||
@ -126,39 +126,41 @@ public:
|
||||
- to know what elements are changed by a filter and therefore should be saved/restored in case of dynamic filters with a preview
|
||||
*/
|
||||
enum MeshElement {
|
||||
MM_NONE = 0x000000,
|
||||
MM_VERTCOORD = 0x000001,
|
||||
MM_VERTNORMAL = 0x000002,
|
||||
MM_VERTFLAG = 0x000004,
|
||||
MM_VERTCOLOR = 0x000008,
|
||||
MM_VERTQUALITY = 0x000010,
|
||||
MM_VERTMARK = 0x000020,
|
||||
MM_VERTFACETOPO = 0x000040,
|
||||
MM_VERTCURV = 0x000080,
|
||||
MM_VERTCURVDIR = 0x000100,
|
||||
MM_VERTRADIUS = 0x000200,
|
||||
MM_NONE = 0x00000000,
|
||||
MM_VERTCOORD = 0x00000001,
|
||||
MM_VERTNORMAL = 0x00000002,
|
||||
MM_VERTFLAG = 0x00000004,
|
||||
MM_VERTCOLOR = 0x00000008,
|
||||
MM_VERTQUALITY = 0x00000010,
|
||||
MM_VERTMARK = 0x00000020,
|
||||
MM_VERTFACETOPO = 0x00000040,
|
||||
MM_VERTCURV = 0x00000080,
|
||||
MM_VERTCURVDIR = 0x00000100,
|
||||
MM_VERTRADIUS = 0x00000200,
|
||||
MM_VERTTEXCOORD = 0x00000400,
|
||||
|
||||
MM_FACEVERT = 0x001000,
|
||||
MM_FACENORMAL = 0x002000,
|
||||
MM_FACEFLAG = 0x004000,
|
||||
MM_FACECOLOR = 0x008000,
|
||||
MM_FACEQUALITY = 0x010000,
|
||||
MM_FACEMARK = 0x020000,
|
||||
MM_FACEFACETOPO = 0x040000,
|
||||
MM_WEDGTEXCOORD = 0x080000,
|
||||
MM_WEDGNORMAL = 0x100000,
|
||||
MM_FACEVERT = 0x00001000,
|
||||
MM_FACENORMAL = 0x00002000,
|
||||
MM_FACEFLAG = 0x00004000,
|
||||
MM_FACECOLOR = 0x00008000,
|
||||
MM_FACEQUALITY = 0x00010000,
|
||||
MM_FACEMARK = 0x00020000,
|
||||
MM_FACEFACETOPO = 0x00040000,
|
||||
MM_WEDGTEXCOORD = 0x00080000,
|
||||
MM_WEDGNORMAL = 0x00100000,
|
||||
MM_WEDGCOLOR = 0x00200000,
|
||||
|
||||
// SubParts of bits
|
||||
MM_VERTFLAGSELECT = 0x01000000,
|
||||
MM_FACEFLAGSELECT = 0x02000000,
|
||||
MM_VERTFLAGSELECT = 0x01000000,
|
||||
MM_FACEFLAGSELECT = 0x02000000,
|
||||
// This part should be deprecated.
|
||||
MM_VERTFLAGBORDER = 0x04000000,
|
||||
MM_FACEFLAGBORDER = 0x08000000,
|
||||
MM_VERTFLAGBORDER = 0x04000000,
|
||||
MM_FACEFLAGBORDER = 0x08000000,
|
||||
|
||||
// Per Mesh Stuff....
|
||||
MM_CAMERA = 0x10000000,
|
||||
MM_CAMERA = 0x10000000,
|
||||
|
||||
MM_ALL = 0xffffff
|
||||
MM_ALL = 0xffffffff
|
||||
|
||||
} ;
|
||||
|
||||
@ -299,7 +301,11 @@ public:
|
||||
|
||||
currentDataMask = currentDataMask & (~unneededDataMask);
|
||||
}
|
||||
};
|
||||
|
||||
static int io2mm(int single_iobit);
|
||||
|
||||
};// end class MeshModel
|
||||
|
||||
|
||||
|
||||
class RenderMode
|
||||
@ -331,7 +337,8 @@ public:
|
||||
castShadow = false;
|
||||
selectedFaces=false;
|
||||
}
|
||||
};
|
||||
|
||||
}; // end class RenderMode
|
||||
|
||||
class MeshDocument : public QObject
|
||||
{
|
||||
@ -409,7 +416,7 @@ public:
|
||||
//when ever the current mesh changed this will send out the index of the newest mesh
|
||||
void currentMeshChanged(int index);
|
||||
|
||||
};
|
||||
};// end class MeshDocument
|
||||
|
||||
/*
|
||||
A class designed to save partial aspects of the state of a mesh, such as vertex colors, current selections, vertex positions
|
||||
@ -528,6 +535,7 @@ class MeshModelState
|
||||
}
|
||||
|
||||
bool isValid(MeshModel *m);
|
||||
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
@ -147,7 +147,7 @@ int SaveMaskExporterDialog::GetNewMask()
|
||||
there are three things that are looked when setting the initial states of the checkbox of this dialog
|
||||
- this->capabilityBit
|
||||
- this->defaultBit
|
||||
- m->ioMask
|
||||
|
||||
|
||||
setDisabled(true): uncheckable
|
||||
setDisabled(false) : checkable
|
||||
@ -164,17 +164,17 @@ int SaveMaskExporterDialog::GetNewMask()
|
||||
*/
|
||||
bool SaveMaskExporterDialog::shouldBeChecked(int bit, int capabilityBits, int defaultBits)
|
||||
{
|
||||
if(!m->hasDataMask(bit)) return false;
|
||||
if(!m->hasDataMask(MeshModel::io2mm(bit))) return false;
|
||||
//if( (bit & meshBits) == 0 ) return false;
|
||||
if( (bit & defaultBits) == 0 ) return false;
|
||||
return true;
|
||||
}
|
||||
|
||||
bool SaveMaskExporterDialog::shouldBeEnabled(int bit, int capabilityBits, int defaultBits)
|
||||
bool SaveMaskExporterDialog::shouldBeEnabled(int iobit, int capabilityBits, int defaultBits)
|
||||
{
|
||||
if( (bit & capabilityBits) == 0 ) return false;
|
||||
// if( (bit & meshBits) == 0 ) return false;
|
||||
if(!m->hasDataMask(bit)) return false;
|
||||
if( (iobit & capabilityBits) == 0 ) return false;
|
||||
int mmbit = MeshModel::io2mm(iobit);
|
||||
if(!m->hasDataMask(mmbit)) return false;
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user