/// <summary> /// Loads CTR model from PLY result arrays. /// </summary> /// <param name="name">Model name.</param> /// <param name="ply">PlyResult object.</param> /// <returns>CtrHeader object.</returns> public static CtrMesh FromPly(string name, PlyResult ply) { List <Vector3i> faces = new List <Vector3i>(); for (int i = 0; i < ply.Triangles.Count / 3; i++) { faces.Add(new Vector3i(ply.Triangles[i * 3], ply.Triangles[i * 3 + 1], ply.Triangles[i * 3 + 2])); } return(FromRawData(name, ply.Vertices, ply.Colors, faces)); }
/// <summary> /// Creates CtrModel object from PLY model. /// </summary> /// <param name="filename">PLY filename.</param> /// <returns>CtrModel object.</returns> public static CtrModel FromPly(string filename) { PlyResult ply = PlyHandler.FromFile(filename); CtrModel ctr = new CtrModel(); ctr.Name = Path.GetFileNameWithoutExtension(filename); ctr.Entries.Add(CtrMesh.FromPly(ctr.Name, ply)); return(ctr); }
// Start is called before the first frame update void Start() { PlyResult result = PlyHandler.GetResult(File.ReadAllBytes("line.ply")); if (result.triangles != null) { GameObject g = new GameObject(); g.name = result.meshName == "" ? "Default" : result.meshName; Mesh mesh = new Mesh(); mesh.vertices = result.vertices.ToArray(); mesh.triangles = result.triangles.ToArray(); if (result.normals != null) { mesh.normals = result.normals.ToArray(); } if (result.colors != null) { mesh.SetColors(result.colors.ToArray()); } mesh.name = result.meshName; MeshFilter mf = g.AddComponent <MeshFilter>(); mf.mesh = mesh; MeshRenderer mr = g.AddComponent <MeshRenderer>(); Material material = new Material(Shader.Find("Standard")); mr.material = material; mr.material.color = result.meshColor; } if (result.lines != null) { Camera.main.transform.position = new Vector3(0, 2, 0); Camera.main.transform.Rotate(new Vector3(90, 0, 0), Space.World); for (var i = 0; i < result.lines.Count; ++i) { GameObject g = new GameObject(); g.name = result.meshName == "" ? "Default" + i.ToString() : result.meshName; LineRenderer linerender = g.AddComponent <LineRenderer>(); linerender.material = new Material(Shader.Find("Sprites/Default")); linerender.positionCount = result.lines[i].Count; for (var j = 0; j < result.lines[i].Count; ++j) { linerender.SetPosition(j, result.vertices[result.lines[i][j]]); } linerender.startColor = result.lineColors[i]; linerender.endColor = result.lineColors[i]; linerender.startWidth = 0.02f; linerender.endWidth = 0.02f; } } }
public void Read(string filename) { vertices.Clear(); faces.Clear(); colors.Clear(); string[] lines = File.ReadAllLines(filename); foreach (var line in lines) { ParseLine(line); } Result = new PlyResult(vertices, faces, colors); }