美文网首页
一种打包方式导致的模型效果异常记录

一种打包方式导致的模型效果异常记录

作者: taiyosen | 来源:发表于2022-01-19 20:38 被阅读0次

今天遇到一个问题,某个模型在unity里效果正常的(如图1),但是打包之后效果异常(如图2)。异常的地方主要是流光效果,


图1
图2

首先经过一番检查和测试,排除了shader变体/材质球/预制体设置错误或者打包失败(美术修改效果后构建版本没有如预期般重新打包)等原因。

  • 这个模型使用了第2套uv(严谨点说应该是另一套user自定义uv)来制作流光特效,然而并不是所有部位都有问题,仅个别模型部位出现问题,故排除shader变体原因。
  • 对材质球和预制体进行轻微修改重新打包,问题依然存在,故排除打包问题。
  • 为了在UI上展示更多细节,美术制作了两套fbx模型,UI模型有问题,而场景模型正常,两者使用了相同的材质球,故排除材质球设置问题。

而当我将UI模型使用的mesh改成场景模型对应的mesh时(即使用了场景fbx里的模型),则显示正常。或者我把使用第2套uv改为使用第1套uv制作流光特效,也可以正常显示。于是原因更倾向于在模型身上。
如图3所示是我们的UI模型,包含所有部位,其中部分部位打包后显示异常。由于所有部位都在一个模型里,意味着美术会持续地往里面加新部位,所以这个模型文件处于持续修改状态。


图3

最后该问题还是解决了,原因在于美术忽略了我们制作模型的一个规则。注意到这个模型名字为model1.fbx,而我们的规则是名字中含有"@"符号的不单独打包。如图4所示,问题部位的.ab.manifest显示对model1.fbx有依赖。

图4
而解决此问题的方法便是重命名model1.fbxmodel1@xxx.fbx,打包后问题部位(现在已经是正常部位了)已经不在对新的model1@xxx.fbx产生依赖,而显示也一切正常。
图5

至于深层次原因,猜测是fbx文件一直在修改,导致打包后去获取mesh时可能产生了混乱,比如获取到的顶点错了之类的,进而导致显示异常。原理不甚了了,仅做记录备忘。

相关文章

网友评论

      本文标题:一种打包方式导致的模型效果异常记录

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