コード例 #1
0
ファイル: CtrMesh.cs プロジェクト: rjayhub/CTR-tools
        /// <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));
        }
コード例 #2
0
ファイル: CtrModel.cs プロジェクト: rjayhub/CTR-tools
        /// <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);
        }
コード例 #3
0
    // 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;
            }
        }
    }
コード例 #4
0
ファイル: OBJ.cs プロジェクト: nonunknown/CTR-tools
        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);
        }