public static OffMesh ReadFile(string path) { FileStream fs = File.Open(path, FileMode.Open, FileAccess.Read, FileShare.ReadWrite); //BufferedStream bs = new BufferedStream(fs); StreamReader sr = new StreamReader(fs); int nbVertices, nbFaces, nbEdges; string line; if (sr.ReadLine() != "OFF") { Debug.LogError("File does not start with \"OFF\" line !"); return(null); } string s = sr.ReadLine(); string[] parameters = s.Split(' '); if (parameters.Length != 3) { Debug.LogError("Wrong parameters format line 2"); return(null); } nbVertices = int.Parse(parameters[0]); nbFaces = int.Parse(parameters[1]); nbEdges = int.Parse(parameters[2]); OffMesh mesh = new OffMesh(); for (int i = 0; i < nbVertices; i++) { line = sr.ReadLine(); float[] pos = ParseVertex(line); mesh.vertices.Add(new Vector3(pos[0], pos[1], pos[2])); } for (int i = 0; i < nbFaces; i++) { line = sr.ReadLine(); OffFace face = ParseFace(line); mesh.faces.Add(face); } //int[] edge = ParseEdge(line); //mesh.edges.Add(new Vector2(edge[0], edge[1])); return(mesh); }
// Start is called before the first frame update void Start() { string path = $@"Assets\{fileName}.off"; Mesh mesh = new Mesh(); OffMesh offMesh = OffReader.ReadFile(path); offMesh.Recenter(); mesh.vertices = offMesh.vertices.ToArray(); mesh.triangles = offMesh.GetTriangles().ToArray(); mesh.RecalculateNormals(); gameObject.GetComponent <MeshFilter>().mesh = mesh; Debug.Log("Mesh - vertices : " + mesh.vertices.Length + " triangles : " + mesh.triangles.Length / 3.0f); if (save) { OffWriter.SaveMesh(mesh, $@"D:\Documents\DAMBRAINE_JEROME\Unity\TP01_MOD\Assets\{fileName}.off"); } }