private void ParseFaces(Span <string> lineParts, string group, int vertexCounter, TriangleMesh mesh) { var normalCounter = 0; if (lineParts.Length > 4) { FanTriangulation(lineParts.Slice(1, lineParts.Length - 1), vertexCounter, group, mesh); } else { if (lineParts[1].Contains('/')) { var faceVertex1 = BuildFace(lineParts[1].Split('/')); var faceVertex2 = BuildFace(lineParts[2].Split('/')); var faceVertex3 = BuildFace(lineParts[3].Split('/')); if (faceVertex1.VertexIndex < 1) { mesh.AddTriangle(BuildTiangle(group, vertexCounter, normalCounter, faceVertex1, faceVertex2, faceVertex3)); } else { mesh.AddTriangle(BuildTiangle(group, 0, 0, faceVertex1, faceVertex2, faceVertex3)); } } else { if (Convert.ToInt32(lineParts[1]) < 1) { mesh.AddTriangle( vertexCounter + Convert.ToInt32(lineParts[1]), vertexCounter + Convert.ToInt32(lineParts[2]), vertexCounter + Convert.ToInt32(lineParts[3]), group); } else { mesh.AddTriangle(Convert.ToInt32(lineParts[1]), Convert.ToInt32(lineParts[2]), Convert.ToInt32(lineParts[3]), group); } } } }
private void FanTriangulation(Span <string> lineParts, int vertexCounter, string group, TriangleMesh mesh) { var normalCounter = 0; for (int index = 1; index < lineParts.Length - 1; index++) { if (lineParts[0].Contains('/')) { var faceVertex1 = BuildFace(lineParts[0].Split('/')); var faceVertex2 = BuildFace(lineParts[index].Split('/')); var faceVertex3 = BuildFace(lineParts[index + 1].Split('/')); if (faceVertex1.VertexIndex < 1) { mesh.AddTriangle(BuildTiangle(group, vertexCounter, normalCounter, faceVertex1, faceVertex2, faceVertex3)); } else { mesh.AddTriangle(BuildTiangle(group, 0, 0, faceVertex1, faceVertex2, faceVertex3)); } } else { if (Convert.ToInt32(lineParts[1]) < 1) { mesh.AddTriangle( vertexCounter + Convert.ToInt32(lineParts[0]), vertexCounter + Convert.ToInt32(lineParts[index]), vertexCounter + Convert.ToInt32(lineParts[index + 1]), group); } else { mesh.AddTriangle(Convert.ToInt32(lineParts[0]), Convert.ToInt32(lineParts[index]), Convert.ToInt32(lineParts[index + 1]), group); } } } }