我有包含三个身体部位的人体模型:头部、躯干和腿部。我从 Mixamo 获得了这些模型的装备和动画。我正在采用两个人体模型(父母),并交替从父母那里获取身体部位来创造一个新孩子。我正在根据孩子的装备(从父母之一那里获取)转移身体部位的蒙皮网格。因为父母有一些不同的装备(来自 Mixamo),这些身体部位无法正确连接,并且它们之间有很小的间隙。我正在考虑如何填补这些空白。有人可以帮忙吗...因为我被困住了?那就太好了...
请注意,情况并非总是如此。还有其他组合,部件的连接将继续+ - 还不错
带皮网状转移码
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 获得相同的装备,但因为我通过眼规设置自动装备的关键位置,所以无法获得好的结果
填充网孔是正确的方法。然而,您的情况允许采取一些“简单”的方式,因为两个分开的部分的形状大致相同。这就是我要做的: