一、效果图

二、美术资源设定

三、具体实现

//第二参数是所有mesh上组件SkinnedMeshRenderer集合
private GameObject CreatPerson (GameObject root , List<SkinnedMeshRenderer> skinneds) {
        List<CombineInstance> combineInstances = new List<CombineInstance> ();
        List<Material> materials = new List<Material> ();
        List<Transform> bones = new List<Transform> ();

        Transform[] transforms = root.GetComponents<Transform> ();

        foreach(SkinnedMeshRenderer smr in skinneds) {

            materials.AddRange (smr.sharedMaterials);
            bones.AddRange(smr.bones);
            for(int sub = 0; sub < smr.sharedMesh.subMeshCount; sub++) {
                CombineInstance ci = new CombineInstance ();
                Mesh mesh1 = new Mesh();
                smr.BakeMesh(mesh1);
                mesh1.uv = smr.sharedMesh.uv;
                ci.mesh = mesh1;

                ci.subMeshIndex = sub;
                combineInstances.Add (ci);
            }
        }
        SkinnedMeshRenderer r = root.AddComponent<SkinnedMeshRenderer> ();
        Mesh mesh = new Mesh ();
        mesh.CombineMeshes(combineInstances.ToArray(), false, false);
        r.sharedMesh = mesh;
        r.bones = bones.ToArray ();
        r.materials = materials.ToArray ();
        r.rootBone = root.transform;

        return root;

Logo

北京人形旗下天工造物具身智能开源社区,聚焦具身天工与慧思开物两大平台

更多推荐