美文网首页
UnityTips 之蒙皮 Prefab 的 FBX 替换后模型

UnityTips 之蒙皮 Prefab 的 FBX 替换后模型

作者: 暴走TA | 来源:发表于2023-05-08 11:03 被阅读0次

简介: 有不少美术在制作资源的时候可能会经常遇到。一个prefab中包含一个蒙皮物体,当这个蒙皮物体的 fbx 文件被替换后,发现 prefab 中的蒙皮文件坏掉了,顶点乱飞,但是用 这个 fbx 重新创建一个 prefab 就是正常的。我们今天就来解密一下这个问题是如何发生的,我们要如何解决
unity版本:20222.1.7fc1

正常状态

我们创建一个球体,然后给他蒙两块骨骼


给球体蒙皮并添加两块骨骼

Unity 创建 prefab


Unity创建一个prefab

修改蒙皮文件并导出fbx覆盖

给蒙皮增加一个骨骼


增加一个骨骼到蒙皮

结果prefab不能显示了


fbx 覆盖untiy内的文件后 prefab 球不显示了
我们用 fbx 重新创建一个 prefab 效果是正常的,我们把他命名为 skintest1_new
重新创建的prefab 可以正常显示

这也就证明了我们的 fbx 覆盖后,有一部分信息并没有更新到 已有的prefab中

查问题

我们用文本编辑器打开两个prefab文件对比一下


找到skinmesh的组件

可以看到两边的蒙皮骨骼数量是不一样的,旧的prefab明显没有更新骨骼数量
fileID是unity自动生成的节点的唯一标识符,旧 prefab 的两个骨骼从上到下依次代表 Bone002 ,Bone001。新 prefab 的三个骨骼从上到下依次是 Bone002,Bone001,Bone003。可以看到虽然顺序和max里的对不上,但是新旧prefab的顺序是一致的,只是新的prefab中的蒙皮包含了新增的 Bone003。

解决

我们在旧prefab文件中找到 Bone003 的 fileId,然后手动将其它添加到蒙皮组件内


在旧的prefab文件中添加 Bone003
引擎内正常

代码解决方案就是 通过将 旧的 prefab 中的 SkinedMeshRenderer 内的 bones 按照 Fbx 中的 SkinedMeshRenderer Bones 设置即可

相关文章

网友评论

      本文标题:UnityTips 之蒙皮 Prefab 的 FBX 替换后模型

      本文链接:https://www.haomeiwen.com/subject/upxlsdtx.html