public CombinedModel ProcessCluster(MeshRenderer[] allRenderers, Dictionary <MeshRenderer, bool> lowLODLevels)
    {
        List <MeshFilter> allFilters = new List <MeshFilter>(allRenderers.Length);
        int sumVertexLength          = 0;
        int sumTriangleLength        = 0;

        for (int i = 0; i < allRenderers.Length; ++i)
        {
            if (!lowLODLevels.ContainsKey(allRenderers[i]))
            {
                MeshFilter filter = allRenderers[i].GetComponent <MeshFilter>();
                if (filter.sharedMesh == null)
                {
                    Debug.LogError("存在没有Mesh的物件:" + allRenderers[i].transform.name);
                }
                allFilters.Add(filter);
                sumVertexLength += (int)(filter.sharedMesh.vertexCount * 1.2f);
            }
        }
        sumTriangleLength = (int)(sumVertexLength * 1.5);
        NativeList <Point> points            = new NativeList <Point>(sumVertexLength, Allocator.Temp);
        NativeList <int>   triangleMaterials = new NativeList <int>(sumVertexLength / 3, Allocator.Temp);

        VirtualMaterial            vm        = new VirtualMaterial();
        Dictionary <Material, int> Mat2Index = vm.GetMaterialsData(allRenderers, resPath);

        for (int i = 0; i < allFilters.Count; ++i)
        {
            Mesh mesh = allFilters[i].sharedMesh;
            GetPoints(points, mesh, allFilters[i].transform, allRenderers[i].sharedMaterials, Mat2Index);
        }
        float3 less = points[0].vertex;
        float3 more = points[0].vertex;

        for (int i = 1; i < points.Length; ++i)
        {
            float3 current = points[i].vertex;
            if (less.x > current.x)
            {
                less.x = current.x;
            }
            if (more.x < current.x)
            {
                more.x = current.x;
            }
            if (less.y > current.y)
            {
                less.y = current.y;
            }
            if (more.y < current.y)
            {
                more.y = current.y;
            }
            if (less.z > current.z)
            {
                less.z = current.z;
            }
            if (more.z < current.z)
            {
                more.z = current.z;
            }
        }

        float3 center = (less + more) / 2;
        float3 extent = more - center;
        Bounds b      = new Bounds(center, extent * 2);

        CombinedModel md;

        md.bound       = b;
        md.allPoints   = points;
        md.allMatIndex = triangleMaterials;
        md.vm          = vm;

        return(md);
    }