|
|
|
|
@ -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,手动填充
|
|
|
|
|
|