生成具有随机身体部位的模型后。覆盖这些部分之间的区域以使 3D 模型看起来不错

问题描述 投票:0回答:0

我有三个身体部位的人体模型:头部、躯干和腿。我从 Mixamo 获得这些模型的装备和动画。我正在拍摄两个人体模型(父母),并交替从父母那里获取身体部位来创造一个新孩子。我正在根据孩子的装备(从其中一位父母那里拿走)转移身体部位的蒙皮网格。因为父母有一些不同的装备(来自 Mixamo),所以那些身体部位连接不正确,它们之间的缝隙很小。我正在考虑如何填补这些空白。有人可以帮忙......因为我被困住了吗?那就太好了……

父母:Image of parents

孩子:Image of the child after getting body parts from parents

请注意,情况并非总是如此。还有其他组合,零件的连接将继续+ - 不错

蒙皮网格转码

public static void TransferSkinnedMeshes(SkinnedMeshRenderer[] skinnedMeshRenderersList, Transform newArmature, Transform newParent)
        {
            foreach (var t in skinnedMeshRenderersList)
            {
                string cachedRootBoneName = t.rootBone.name;
                var newBones = new Transform[t.bones.Length];
                for (var x = 0; x < t.bones.Length; x++)
                    foreach (var newBone in newArmature.GetComponentsInChildren<Transform>())
                        if (newBone.name == t.bones[x].name)
                        {
                            newBones[x] = newBone;
                        }

                Transform matchingRootBone = GetRootBoneByName(newArmature, cachedRootBoneName);
                t.rootBone = matchingRootBone != null ? matchingRootBone : newArmature.transform;
                t.bones = newBones;
                Transform transform;
                (transform = t.transform).SetParent(newParent);
                transform.localPosition = Vector3.zero;
            }
        
        }

        static Transform GetRootBoneByName(Transform parentTransform, string name)
        {
            return parentTransform.GetComponentsInChildren<Transform>().FirstOrDefault(transformChild => transformChild.name == name);
        }

我尝试在 chatGPT 的帮助下编写着色器……但它没有用。另外,我想从 Mixamo 获得相同的装备,但因为我正在设置关键位置以通过眼规自动装备,所以我无法获得好的结果

c# unity3d 3d runtime shader
© www.soinside.com 2019 - 2024. All rights reserved.