- removed compiler time errors
This commit is contained in:
parent
73ee392537
commit
1dc8a067ac
|
@ -1821,51 +1821,51 @@ public:
|
|||
tri::RequirePerFaceNormal(m);
|
||||
tri::RequirePerVertexNormal(m);
|
||||
vcg::tri::UpdateSelection<MeshType>::FaceClear(m);
|
||||
vcg::tri::UpdateNormal<MeshType>::PerFaceNormalized(m);
|
||||
vcg::tri::UpdateNormal<MeshType>::PerVertexNormalized(m);
|
||||
vcg::tri::UpdateNormal<MeshType>::PerFaceNormalized(m);
|
||||
vcg::tri::UpdateNormal<MeshType>::PerVertexNormalized(m);
|
||||
vcg::tri::UpdateTopology<MeshType>::VertexFace(m);
|
||||
if (cosThreshold > 0)
|
||||
cosThreshold = 0;
|
||||
|
||||
#pragma omp parallel for schedule(dynamic, 10)
|
||||
for (int i = 0; i < m.face.size(); i++)
|
||||
{
|
||||
std::vector<typename MeshType::VertexPointer> nearVertex;
|
||||
std::vector<typename MeshType::CoordType> point;
|
||||
typename MeshType::FacePointer f = &m.face[i];
|
||||
for (int j = 0; j < 3; j++)
|
||||
{
|
||||
std::vector<typename MeshType::VertexPointer> temp;
|
||||
vcg::face::VVStarVF<typename MeshType::FaceType>(f->V(j), temp);
|
||||
std::vector<typename MeshType::VertexPointer>::iterator iter = temp.begin();
|
||||
for (; iter != temp.end(); iter++)
|
||||
{
|
||||
if ((*iter) != f->V1(j) && (*iter) != f->V2(j))
|
||||
{
|
||||
nearVertex.push_back((*iter));
|
||||
point.push_back((*iter)->P());
|
||||
}
|
||||
}
|
||||
nearVertex.push_back(f->V(j));
|
||||
point.push_back(f->P(j));
|
||||
}
|
||||
|
||||
if (point.size() > 3)
|
||||
{
|
||||
vcg::Plane3<typename MeshType::ScalarType> plane;
|
||||
vcg::FitPlaneToPointSet(point, plane);
|
||||
float avgDot = 0;
|
||||
for (int j = 0; j < nearVertex.size(); j++)
|
||||
avgDot += plane.Direction().dot(nearVertex[j]->N());
|
||||
avgDot /= nearVertex.size();
|
||||
typename MeshType::VertexType::NormalType normal;
|
||||
if (avgDot < 0)
|
||||
normal = -plane.Direction();
|
||||
else
|
||||
normal = plane.Direction();
|
||||
if (normal.dot(f->N()) < cosThreshold)
|
||||
f->SetS();
|
||||
}
|
||||
for (int i = 0; i < m.face.size(); i++)
|
||||
{
|
||||
std::vector<typename MeshType::VertexPointer> nearVertex;
|
||||
std::vector<typename MeshType::CoordType> point;
|
||||
typename MeshType::FacePointer f = &m.face[i];
|
||||
for (int j = 0; j < 3; j++)
|
||||
{
|
||||
std::vector<typename MeshType::VertexPointer> temp;
|
||||
vcg::face::VVStarVF<typename MeshType::FaceType>(f->V(j), temp);
|
||||
typename std::vector<typename MeshType::VertexPointer>::iterator iter = temp.begin();
|
||||
for (; iter != temp.end(); iter++)
|
||||
{
|
||||
if ((*iter) != f->V1(j) && (*iter) != f->V2(j))
|
||||
{
|
||||
nearVertex.push_back((*iter));
|
||||
point.push_back((*iter)->P());
|
||||
}
|
||||
}
|
||||
nearVertex.push_back(f->V(j));
|
||||
point.push_back(f->P(j));
|
||||
}
|
||||
|
||||
if (point.size() > 3)
|
||||
{
|
||||
vcg::Plane3<typename MeshType::ScalarType> plane;
|
||||
vcg::FitPlaneToPointSet(point, plane);
|
||||
float avgDot = 0;
|
||||
for (int j = 0; j < nearVertex.size(); j++)
|
||||
avgDot += plane.Direction().dot(nearVertex[j]->N());
|
||||
avgDot /= nearVertex.size();
|
||||
typename MeshType::VertexType::NormalType normal;
|
||||
if (avgDot < 0)
|
||||
normal = -plane.Direction();
|
||||
else
|
||||
normal = plane.Direction();
|
||||
if (normal.dot(f->N()) < cosThreshold)
|
||||
f->SetS();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -342,34 +342,34 @@ static void FaceFaceFromTexCoord(MeshType &m)
|
|||
RequireFFAdjacency(m);
|
||||
RequirePerFaceWedgeTexCoord(m);
|
||||
vcg::tri::UpdateTopology<MeshType>::FaceFace(m);
|
||||
for (FaceIterator fi = m.face.begin(); fi != m.face.end(); ++fi)
|
||||
{
|
||||
if (!(*fi).IsD())
|
||||
{
|
||||
for (int i = 0; i < (*fi).VN(); i++)
|
||||
{
|
||||
bool isBorder = false;
|
||||
if (!vcg::face::IsBorder((*fi), i))
|
||||
{
|
||||
MeshType::FacePointer nextFace = (*fi).FFp(i);
|
||||
int nextEdgeIndex = (*fi).FFi(i);
|
||||
bool border = false;
|
||||
if ((*fi).cV(i) == nextFace->cV(nextEdgeIndex))
|
||||
{
|
||||
if ((*fi).WT(i) != nextFace->WT(nextEdgeIndex) || (*fi).WT((*fi).Next(i)) != nextFace->WT(nextFace->Next(nextEdgeIndex)))
|
||||
border = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
if ((*fi).WT(i) != nextFace->WT(nextFace->Next(nextEdgeIndex)) || (*fi).WT((*fi).Next(i)) != nextFace->WT(nextEdgeIndex))
|
||||
border = true;
|
||||
}
|
||||
if (border)
|
||||
vcg::face::FFDetach((*fi), i);
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
for (FaceIterator fi = m.face.begin(); fi != m.face.end(); ++fi)
|
||||
{
|
||||
if (!(*fi).IsD())
|
||||
{
|
||||
for (int i = 0; i < (*fi).VN(); i++)
|
||||
{
|
||||
bool isBorder = false;
|
||||
if (!vcg::face::IsBorder((*fi), i))
|
||||
{
|
||||
typename MeshType::FacePointer nextFace = (*fi).FFp(i);
|
||||
int nextEdgeIndex = (*fi).FFi(i);
|
||||
bool border = false;
|
||||
if ((*fi).cV(i) == nextFace->cV(nextEdgeIndex))
|
||||
{
|
||||
if ((*fi).WT(i) != nextFace->WT(nextEdgeIndex) || (*fi).WT((*fi).Next(i)) != nextFace->WT(nextFace->Next(nextEdgeIndex)))
|
||||
border = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
if ((*fi).WT(i) != nextFace->WT(nextFace->Next(nextEdgeIndex)) || (*fi).WT((*fi).Next(i)) != nextFace->WT(nextEdgeIndex))
|
||||
border = true;
|
||||
}
|
||||
if (border)
|
||||
vcg::face::FFDetach((*fi), i);
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -31,7 +31,7 @@
|
|||
#include <vector>
|
||||
#include <limits>
|
||||
#include <iostream>
|
||||
#include <cstdint>
|
||||
//#include <cstdint>
|
||||
|
||||
namespace vcg {
|
||||
|
||||
|
|
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue