Esempio n. 1
0
        public static string IntegrateSubmeshes(this Mesh mesh)
        {
            var before = mesh.Submeshes.Count;

            // 同じMaterialのMeshが連続するようにIndexを並べ替える
            var sorted = new List <Submesh>();
            var source = mesh.Submeshes.ToList(); // copy

            while (source.Any())
            {
                var first = source[0];
                source.RemoveAt(0);

                sorted.Add(first);
                sorted.AddRange(source.Where(x => x.Material == first.Material)); // 同じMaterialを追加
                source.RemoveAll(x => x.Material == first.Material);              // 同じMaterialを削除
            }
            // Submeshを並べ替えて連続するものを連結する
            mesh.ReorderSubmeshes(sorted);

            return($"({before} => {mesh.Submeshes.Count})");
        }