private void UpdateTriangles()//根据倍数重新计算三角面片
    {
        var mesh     = GetComponent <SkinnedMeshRenderer>().sharedMesh;
        var vertices = mesh.vertices;

        if (triangleMultiNum == 1)//1倍直接把原来存好的三角形给它
        {
            MeshACopyToMeshB(oldMesh, mesh);
            return;
        }

        var verticesList = new List <Vector3>();
        var normalsList  = new List <Vector3>();
        var uvList       = new List <Vector2>();
        int triangleNum  = (int)(oldMesh.triangles.Length * triangleMultiNum);

        triangleNum += 3 - triangleNum % 3;
        Debug.Log("triangleNum: " + triangleNum);
        //var triangles = new int[triangleNum];
        var trianglesList = new List <int>();

        foreach (var item in oldMesh.vertices)
        {
            verticesList.Add(item);
        }

        foreach (var item in oldMesh.normals)
        {
            normalsList.Add(item);
        }

        foreach (var item in oldMesh.uv)
        {
            uvList.Add(item);
        }


        var sd = new SortedDictionary <Cost, int[]>(new CostComparer());
        int id = 0;//新加入sd的cost的id

        for (int i = 0; i < oldMesh.triangles.Length; i += 3)
        {
            int[] outTriangle;
            int[] triangle = new int[] { oldMesh.triangles[i], oldMesh.triangles[i + 1], oldMesh.triangles[i + 2] };
            float len      = DivideTriangle(triangle, out outTriangle, verticesList);
            sd.Add(new Cost(len, ++id), triangle);
        }

        while (sd.Count * 3 < triangleNum)
        {
            var e = sd.GetEnumerator();
            e.MoveNext();
            var   ec       = e.Current;
            int[] triangle = ec.Value; //取最长边最长的三角形进行划分
            sd.Remove(ec.Key);         //从sd中删掉该三角形
            int[] outTriangle;
            DivideTriangle(triangle, out outTriangle, verticesList);
            int tot = verticesList.Count;                                                        //新加的点的index
            verticesList.Add((verticesList[outTriangle[0]] + verticesList[outTriangle[1]]) / 2); //加入最长边中点
            var normal = new Vector3(0, 0, 0);
            var uv     = new Vector2(0, 0);
            foreach (var i in triangle)
            {
                if (haveNormals)
                {
                    normal += normalsList[i];
                }
                if (haveUv)
                {
                    uv += uvList[i];
                }
            }
            normal /= triangle.Length;
            uv     /= triangle.Length;
            if (haveNormals)
            {
                normalsList.Add(normal);
            }
            if (haveUv)
            {
                uvList.Add(uv);
            }
            var t1 = new int[] { outTriangle[0], tot, outTriangle[2] };
            var t2 = new int[] { outTriangle[1], outTriangle[2], tot };

            var len = DivideTriangle(t1, out outTriangle, verticesList);
            sd.Add(new Cost(len, ++id), t1);
            len = DivideTriangle(t2, out outTriangle, verticesList);
            sd.Add(new Cost(len, ++id), t2);
        }

        int cc         = 0;
        var enumerator = sd.GetEnumerator();

        for (int i = 0; enumerator.MoveNext(); i++)
        {
            //Debug.Log("length: "+enumerator.Current.Key.cost);
            int[] triangle = enumerator.Current.Value;
            for (int j = 0; j < 3; j++)
            {
                //triangles[i * 3 + j] = triangle[j];
                trianglesList.Add(triangle[j]);
                cc++;
            }
        }
        mesh.Clear();
        mesh.vertices = verticesList.ToArray();
        if (haveNormals)
        {
            mesh.normals = normalsList.ToArray();
        }
        if (haveUv)
        {
            mesh.uv = uvList.ToArray();
        }
        mesh.triangles = trianglesList.ToArray();
        panelStatusController.UpdateTextTriangleNum();
    }