彻底抛弃虚拟面
This commit is contained in:
1 parent
56ad2c49cb
commit
fb20fcf2c6
1 file changed
+13
-1
@@ -14872,7 +14872,7 @@ bool MeshTexture::ConvertVectorToVirtualFaceDataArr(const std::vector<VirtualFac
|
||||
}
|
||||
bool MeshTexture::CreateVirtualFacesForExistingUV(VirtualFaceMap& virtualFaceMap) {
|
||||
DEBUG_EXTRA("Creating virtual faces for existing UV texture mapping");
|
||||
|
||||
|
||||
// 0. 详细的输入验证
|
||||
DEBUG_EXTRA("=== Detailed Input Validation ===");
|
||||
DEBUG_EXTRA("Scene pointer: %p", &scene);
|
||||
@@ -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
|
||||
return false;
|
||||
}
|
||||
|
||||
// ✅✅✅ 关键修复:重新计算拓扑(否则 faceFaces 是坏的)
|
||||
mesh.ListIncidenteFaces();
|
||||
mesh.ListIncidenteFaceFaces();
|
||||
mesh.ComputeNormalFaces();
|
||||
mesh.ListBoundaryVertices();
|
||||
|
||||
// 纯可见性计算(初始化faceNeighbors)
|
||||
if (!texture.ComputePureFaceVisibility(fOutlierThreshold, nIgnoreMaskLabel, views)) {
|
||||
// ❗ 兜底:如果ComputePureFaceVisibility没初始化faceNeighbors,手动填充
|
||||
|
||||
Reference in new issue
Block a user