corrected managment of selected flag when refining the whole mesh flipmesh
This commit is contained in:
parent
f0eec0788b
commit
81bfbcaed8
|
@ -24,6 +24,9 @@
|
||||||
History
|
History
|
||||||
|
|
||||||
$Log: not supported by cvs2svn $
|
$Log: not supported by cvs2svn $
|
||||||
|
Revision 1.16 2007/03/12 15:37:18 tarini
|
||||||
|
Texture coord name change! "TCoord" and "Texture" are BAD. "TexCoord" is GOOD.
|
||||||
|
|
||||||
Revision 1.15 2007/01/18 18:15:14 cignoni
|
Revision 1.15 2007/01/18 18:15:14 cignoni
|
||||||
added missing typenames
|
added missing typenames
|
||||||
|
|
||||||
|
@ -336,7 +339,8 @@ bool RefineE(MESH_TYPE &m, MIDPOINT mid, EDGEPRED ep,bool RefineSelected=false,
|
||||||
int j,NewVertNum=0,NewFaceNum=0;
|
int j,NewVertNum=0,NewFaceNum=0;
|
||||||
typedef std::pair<typename MESH_TYPE::VertexPointer,typename MESH_TYPE::VertexPointer> vvpair;
|
typedef std::pair<typename MESH_TYPE::VertexPointer,typename MESH_TYPE::VertexPointer> vvpair;
|
||||||
std::map<vvpair,typename MESH_TYPE::VertexPointer> Edge2Vert;
|
std::map<vvpair,typename MESH_TYPE::VertexPointer> Edge2Vert;
|
||||||
// Primo ciclo si conta quanti sono i vertici e facce da aggiungere
|
|
||||||
|
// First Loop: We analyze the mesh to compute the number of the new faces and new vertices
|
||||||
typename MESH_TYPE::FaceIterator fi;
|
typename MESH_TYPE::FaceIterator fi;
|
||||||
int step=0,PercStep=m.fn/33;
|
int step=0,PercStep=m.fn/33;
|
||||||
if(PercStep==0) PercStep=1;
|
if(PercStep==0) PercStep=1;
|
||||||
|
@ -344,11 +348,10 @@ bool RefineE(MESH_TYPE &m, MIDPOINT mid, EDGEPRED ep,bool RefineSelected=false,
|
||||||
{
|
{
|
||||||
if(cb && (++step%PercStep)==0)(*cb)(step/PercStep,"Refining...");
|
if(cb && (++step%PercStep)==0)(*cb)(step/PercStep,"Refining...");
|
||||||
for(j=0;j<3;j++){
|
for(j=0;j<3;j++){
|
||||||
if(ep((*fi).V(j)->P(),(*fi).V1(j)->P()) &&
|
if(ep((*fi).P(j),(*fi).P1(j)) &&
|
||||||
(!RefineSelected || ((*fi).IsS() && (*fi).FFp(j)->IsS())) ){
|
(!RefineSelected || ((*fi).IsS() && (*fi).FFp(j)->IsS())) ){
|
||||||
++NewFaceNum;
|
++NewFaceNum;
|
||||||
if(((*fi).V(j)<(*fi).V1(j)) ||
|
if( ((*fi).V(j)<(*fi).V1(j)) || (*fi).IsB(j) )
|
||||||
(*fi).IsB(j))
|
|
||||||
++NewVertNum;
|
++NewVertNum;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -367,7 +370,6 @@ bool RefineE(MESH_TYPE &m, MIDPOINT mid, EDGEPRED ep,bool RefineSelected=false,
|
||||||
if(ep((*fi).V(j)->P(),(*fi).V1(j)->P()) &&
|
if(ep((*fi).V(j)->P(),(*fi).V1(j)->P()) &&
|
||||||
(!RefineSelected || ((*fi).IsS() && (*fi).FFp(j)->IsS())) )
|
(!RefineSelected || ((*fi).IsS() && (*fi).FFp(j)->IsS())) )
|
||||||
if((*fi).V(j)<(*fi).V1(j) || (*fi).IsB(j)){
|
if((*fi).V(j)<(*fi).V1(j) || (*fi).IsB(j)){
|
||||||
(*lastv).UberFlags()=0;
|
|
||||||
mid( (*lastv), face::Pos<typename MESH_TYPE::FaceType> (&*fi,j));
|
mid( (*lastv), face::Pos<typename MESH_TYPE::FaceType> (&*fi,j));
|
||||||
//(*lastv).P()=((*fi).V(j)->P()+(*fi).V1(j)->P())/2;
|
//(*lastv).P()=((*fi).V(j)->P()+(*fi).V1(j)->P())/2;
|
||||||
Edge2Vert[ vvpair((*fi).V(j),(*fi).V1(j)) ] = &*lastv;
|
Edge2Vert[ vvpair((*fi).V(j),(*fi).V1(j)) ] = &*lastv;
|
||||||
|
@ -434,7 +436,7 @@ bool RefineE(MESH_TYPE &m, MIDPOINT mid, EDGEPRED ep,bool RefineSelected=false,
|
||||||
int i;
|
int i;
|
||||||
for(i=1;i<SplitTab[ind].TriNum;++i){
|
for(i=1;i<SplitTab[ind].TriNum;++i){
|
||||||
nf[i]=&*lastf; ++lastf; fca++;
|
nf[i]=&*lastf; ++lastf; fca++;
|
||||||
if(RefineSelected) (*nf[i]).SetS();
|
if(RefineSelected || (*fi).IsS()) (*nf[i]).SetS();
|
||||||
}
|
}
|
||||||
|
|
||||||
if(tri::HasPerWedgeTexCoord(m))
|
if(tri::HasPerWedgeTexCoord(m))
|
||||||
|
|
Loading…
Reference in New Issue