Browse Source

彻底抛弃虚拟面

ManualUV
hesuicong 3 weeks ago
parent
commit
fb20fcf2c6
  1. 12
      libs/MVS/SceneTexture.cpp

12
libs/MVS/SceneTexture.cpp

@ -14889,6 +14889,12 @@ bool MeshTexture::CreateVirtualFacesForExistingUV(VirtualFaceMap& virtualFaceMap @@ -14889,6 +14889,12 @@ bool MeshTexture::CreateVirtualFacesForExistingUV(VirtualFaceMap& virtualFaceMap
return false;
}
virtualFaceMap.resize(scene.mesh.faces.size());
for (FIndex i = 0; i < (FIndex)scene.mesh.faces.size(); ++i) {
virtualFaceMap[i].faces = {i};
}
return true;
// 验证faces数组的大小
size_t numFaces = scene.mesh.faces.size();
size_t numVertices = scene.mesh.vertices.size();
@ -18734,6 +18740,12 @@ bool Scene::TextureMesh(unsigned nResolutionLevel, unsigned nMinResolution, unsi @@ -18734,6 +18740,12 @@ bool Scene::TextureMesh(unsigned nResolutionLevel, unsigned nMinResolution, unsi
return false;
}
// ✅✅✅ 关键修复:重新计算拓扑(否则 faceFaces 是坏的)
mesh.ListIncidenteFaces();
mesh.ListIncidenteFaceFaces();
mesh.ComputeNormalFaces();
mesh.ListBoundaryVertices();
// 纯可见性计算(初始化faceNeighbors)
if (!texture.ComputePureFaceVisibility(fOutlierThreshold, nIgnoreMaskLabel, views)) {
// ❗ 兜底:如果ComputePureFaceVisibility没初始化faceNeighbors,手动填充

Loading…
Cancel
Save