文章导航

  • 背景
  • 实践
  • 1.前置准备
  • 2.准备daz模型
  • 3.第一次导出 (Daz -> Fbx, 不减面)
  • 4.不减面模型重新导入Daz
  • 5.使用decimator进行减面
  • 6.第二次导出(减面后的模型)
  • 7.导入unity
  • 总结


背景

daz有着高质量的绑定模型以及活跃的社区, 对于缺少美术能力的个人开发者(比如我)有着很大的帮助。
本文分享如何将Daz高模进行减面处理并导入到unity的思路。

实践

1.前置准备

  • daz 4.12
  • decimator (减面插件, daz商店可够购买, 也可以自行寻找破解版)
  • unity 2019.3.0f5

2.准备daz模型

示例是准备导出一套服装到unity, Figures使用无贴图的Genesis 8 Female Dev Load。

将模型放到gpu 模型导入daz_unity3d

3.第一次导出 (Daz -> Fbx, 不减面)

先进行一次不减面导出。

这里不进行减面的原因是: decimator对于Daz的Shaping是有兼容问题的, 直接进行减免导出会导致Morphs变形时出现网格破损的问题。

如果勾选SubD Information则会导致重新导入Daz时出现错误。

导出Morphs时需要自行编辑所需要的Export Rules。

将模型放到gpu 模型导入daz_hapi_02


刚才导出的不减面模型,可以看到有160M大,主要是由于Morphs比较多的缘故。

将模型放到gpu 模型导入daz_unity3d_03


查看面数,多达26万三角形

将模型放到gpu 模型导入daz_将模型放到gpu_04

4.不减面模型重新导入Daz

File - Import 进行重新导入

将模型放到gpu 模型导入daz_破解版_05


导入成功后,可以看到Shaping中有刚才导入的Morphs变形器

将模型放到gpu 模型导入daz_unity3d_06

5.使用decimator进行减面

decimator插件需要自行安装, 这里不做阐述

将模型放到gpu 模型导入daz_破解版_07


压缩率这里使用的是25%,按个人需求进行调节

将模型放到gpu 模型导入daz_unity3d_08

6.第二次导出(减面后的模型)

减面完毕,重新导出。

这里勾选SubD Information主要是为了降低fbx文件大小。

将模型放到gpu 模型导入daz_破解版_09


和第一次导出时不同, 第二次导出可以将模型上带的Morphs全部覆盖, 这里使用了全匹配

将模型放到gpu 模型导入daz_破解版_10


导出完毕,大小缩减到20M

将模型放到gpu 模型导入daz_破解版_11


查看面数, 仅剩余90535三角形 (疑惑25%压缩率的同学可以注意这里仅压缩了服装, 未压缩figures, 由于能力有限,本文无法对decimator这个插件做出技术型解释)

将模型放到gpu 模型导入daz_unity3d_12

7.导入unity

直接导入

将模型放到gpu 模型导入daz_压缩率_13


模型材质, 测试OK

将模型放到gpu 模型导入daz_hapi_14

骨骼动画, 测试OK

将模型放到gpu 模型导入daz_压缩率_15


BlendShape测试, OK (Morphs导出正常)

将模型放到gpu 模型导入daz_压缩率_16


游戏实测, 200万面+同屏, 60Fps+, 性能有所提升(减面前大约是15fps), 还可以继续调整压缩率, 进一步提升性能

补充: 这里仅压缩了服装, 人物和发型均未压缩, 每个角色大约有18~20万面 (这里还在开发阶段, 实际项目会进一步降低很多)

将模型放到gpu 模型导入daz_hapi_17

总结

  1. 直接在原始模型使用decimator减面会有有morphs不兼容的问题,一旦人物变换成别的形体,会导致模型破损严重。
  2. 二次导入的fbx模型的morphs命名会有些小问题, 在unity中使用时候需要自行coding做下兼容