示例#1
0
        /// <summary>
        /// Create a pb_Model from a pb_Object, optionally converting to quad topology.
        /// </summary>
        /// <param name="name"></param>
        /// <param name="mesh"></param>
        /// <param name="quads"></param>
        public Model(string name, ProBuilderMesh mesh, bool quads = true)
        {
            mesh.ToMesh(quads ? MeshTopology.Quads : MeshTopology.Triangles);
            mesh.Refresh(RefreshMask.UV | RefreshMask.Colors | RefreshMask.Normals | RefreshMask.Tangents);
            this.name = name;
            vertices  = mesh.GetVertices();
            submeshes = Submesh.GetSubmeshes(mesh.facesInternal, MaterialUtility.GetMaterialCount(mesh.renderer), quads ? MeshTopology.Quads : MeshTopology.Triangles);
            materials = new Material[submeshCount];

            for (int i = 0; i < submeshCount; ++i)
            {
                materials[i] = mesh.renderer.sharedMaterials[Math.Clamp(i, 0, materials.Length - 1)];
            }

            matrix = mesh.transform.localToWorldMatrix;
            mesh.ToMesh(MeshTopology.Triangles);
            mesh.Refresh();
            mesh.Optimize();
        }