Skip to content

Commit 3353b90

Browse files
committed
fix face orientation of 3d mesh
1 parent c7b5c82 commit 3353b90

1 file changed

Lines changed: 13 additions & 13 deletions

File tree

simloader/importer.py

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -23,26 +23,26 @@ def extract_faces(cell: meshio.CellBlock):
2323
pass
2424
elif cell.type == "tetra":
2525
data = cell.data.astype(np.uint64)
26-
faces = data[:, :3]
27-
faces = np.append(faces, data[:, [0, 2, 3]], axis=0)
26+
faces = data[:, [0, 2, 1]]
27+
faces = np.append(faces, data[:, [0, 3, 2]], axis=0)
2828
faces = np.append(faces, data[:, [0, 1, 3]], axis=0)
2929
faces = np.append(faces, data[:, [1, 2, 3]], axis=0)
30-
faces.sort(axis=1)
31-
_, indxs, count = np.unique(faces, axis=0, return_index=True, return_counts=True)
30+
faces_copy = np.copy(faces)
31+
faces_copy.sort(axis=1)
32+
_, indxs, count = np.unique(faces_copy, axis=0, return_index=True, return_counts=True)
3233
faces = faces[indxs[count == 1]]
3334
return faces
3435
elif cell.type == "hexahedron":
3536
data = cell.data.astype(np.uint64)
36-
faces = data[:, :4]
37-
faces = np.append(faces, data[:, [0, 1, 5, 4]], axis=0)
37+
faces = data[:, [0, 3, 2, 1]]
38+
faces = np.append(faces, data[:, [1, 5, 4, 0]], axis=0)
39+
faces = np.append(faces, data[:, [4, 5, 6, 7]], axis=0)
40+
faces = np.append(faces, data[:, [3, 7, 6, 2]], axis=0)
3841
faces = np.append(faces, data[:, [1, 2, 6, 5]], axis=0)
39-
faces = np.append(faces, data[:, [2, 3, 7, 6]], axis=0)
40-
faces = np.append(faces, data[:, [5, 6, 7, 4]], axis=0)
41-
faces = np.append(faces, data[:, [0, 3, 7, 4]], axis=0)
42-
# to sort or not to sort?
43-
# Or convert it to triangles?
44-
# faces.sort(axis=1)
45-
_, indxs, count = np.unique(faces, axis=0, return_index=True, return_counts=True)
42+
faces = np.append(faces, data[:, [0, 4, 7, 3]], axis=0)
43+
faces_copy = np.copy(faces)
44+
faces_copy.sort(axis=1)
45+
_, indxs, count = np.unique(faces_copy, axis=0, return_index=True, return_counts=True)
4646
faces = faces[indxs[count == 1]]
4747
return faces
4848
elif cell.type == "vertex":

0 commit comments

Comments
 (0)