美文网首页
Unity编辑器点选三角面

Unity编辑器点选三角面

作者: UnityAsk_1 | 来源:发表于2017-08-28 20:08 被阅读0次

在编辑器中点选一个模型的时候,是选中整个模型的Mesh,如果我们想选中其中一个三角面的话(比如做面的吸附、或者获取选中的顶点坐标)可以按下面这样,基于原Mesh生成对应的三角面。然后就可以点选三角面了。

private void SpliteMesh(Mesh M){
    Vector3[] verts = M.vertices;
    Vector3[] normals = M.normals;
    int[] indices = M.triangles;
    for (int i = 0; i < indices.Length; i += 3)    {
        Vector3[] newVerts = new Vector3[3];
        Vector3[] newNormals = new Vector3[3];
       //Vector2[] newUvs = new Vector2[3];
        for (int n = 0; n < 3; n++)    {
            int index = indices[i + n];
            newVerts[n] = verts[index];
            //newUvs[n] = uvs[index];
            newNormals[n] = normals[index];
        }

        Mesh mesh = new Mesh();
        mesh.vertices = newVerts;
        mesh.normals = newNormals;
        mesh.uv = newUvs;
        mesh.triangles = new int[] { 0, 1, 2 ,2,1,0};

        GameObject GO = new GameObject("Triangle " + (i / 3));
        GO.AddComponent<FaceHandler> ();
        GO.transform.position = transform.position;
        GO.transform.rotation = transform.rotation;
        GO.AddComponent<MeshRenderer>().material = mat;
        GO.AddComponent<MeshFilter>().mesh = mesh;

        GO.transform.SetParent (this.transform);
    }
}

相关文章

网友评论

      本文标题:Unity编辑器点选三角面

      本文链接:https://www.haomeiwen.com/subject/mragdxtx.html