From 112642dc04475ccdad9b9bce14acb0934a8e2bdf Mon Sep 17 00:00:00 2001 From: Radek Oslejsek <oslejsek@fi.muni.cz> Date: Tue, 6 Apr 2021 16:38:23 +0200 Subject: [PATCH] Fixed bug with wrong pointers to apposite corners --- .../fidentis/analyst/mesh/io/MeshObjLoader.java | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/MeshModel/src/main/java/cz/fidentis/analyst/mesh/io/MeshObjLoader.java b/MeshModel/src/main/java/cz/fidentis/analyst/mesh/io/MeshObjLoader.java index 210616d4..250dacd9 100644 --- a/MeshModel/src/main/java/cz/fidentis/analyst/mesh/io/MeshObjLoader.java +++ b/MeshModel/src/main/java/cz/fidentis/analyst/mesh/io/MeshObjLoader.java @@ -85,9 +85,9 @@ public class MeshObjLoader { } /** - * Parse OBJMesh into MeshFacet containig corner table data + * Parse OBJMesh into MeshFacet containing corner table data * @param model Model is needed in future. It's holding data pools - * @param mesh Mesh to parse. It corespond to our MeshFacet + * @param mesh Mesh to parse. It correspond to our MeshFacet * @return Returns complete facet * @throws IOException Data are corrupted */ @@ -117,8 +117,9 @@ public class MeshObjLoader { private static void processFace(OBJModel model, OBJFace face, MeshFacet meshFacet, Map<MeshPoint, Integer> vertices, Map<Edge, Integer> edges) throws IOException { List<MeshPoint> trianglePoints = parseFaceToTriangle(model, face); - List<Integer> vertexIndicies = new ArrayList(); - + + int actRow = meshFacet.getCornerTable().getSize(); + // This cycle adds integer indices of new mesh points and add them to CornerTable for (MeshPoint vertex : trianglePoints) { Integer vertIndex = vertices.get(vertex); @@ -128,18 +129,17 @@ public class MeshObjLoader { meshFacet.addVertex(vertex); vertIndex = newIndex; } - vertexIndicies.add(vertIndex); CornerTableRow cornerTableRow = new CornerTableRow(vertIndex, -1); meshFacet.getCornerTable().addRow(cornerTableRow); } List<Edge> triangleEdges = new ArrayList(); triangleEdges.add(new Edge(trianglePoints.get(0).getPosition(), - trianglePoints.get(1).getPosition(), vertexIndicies.get(2))); + trianglePoints.get(1).getPosition(), actRow + 2)); triangleEdges.add(new Edge(trianglePoints.get(1).getPosition(), - trianglePoints.get(2).getPosition(), vertexIndicies.get(0))); + trianglePoints.get(2).getPosition(), actRow + 0)); triangleEdges.add(new Edge(trianglePoints.get(2).getPosition(), - trianglePoints.get(0).getPosition(), vertexIndicies.get(1))); + trianglePoints.get(0).getPosition(), actRow + 1)); for (Edge e : triangleEdges) { // We are processing edge which we already found -- GitLab