制作Overlay
- 先准备好Overlay用到的贴图,每个Overlay单独一个文件夹,把贴图放在文件夹下面。
- 菜单UMA->Core->Overlay Asset,设置好名字,然后设置Material(是UMA专用的Material),一般选择UMA_Diffuse_Normal_Metallic,选择对应的贴图数量,这个材质是3个贴图。
- 把创建好的Overlay放入到UMA Global Library中。
- 创建对应的Wardrobe Recipe,菜单UMA->DCS->Wardrobe Recipe,选择对应的race,选择Wardrobe Slot,选择对应的Base Slot,最后Add Overlay。
- 把创建好的Wardrobe Recipe放入到UMA Global Library中。
PS:如果发现做好的Overlay分辨率比原始素材要低,那是因为UMA在生成最终贴图的时候,会把分辨率减半。这个是可以设置的,在UMA_DCS->UMAGenerator->Initial Scale Factor,默认是2,就是贴图尺寸减半,如果改成1,就是保持原来的贴图大小。这样分辨率就高了,当然会占用更多的资源。
优化Overlay
- 如果制作的Overlay是一张很大的图,但是只用到了其中很小的一部分,其他部分都是空白,那么会浪费很多最后游戏包的空间(runtime内存是不浪费的,因为UMA最终会合成一张贴图)。
- 到ps中,找到一个小的长方形区域(2的幂次方),可以完全包含需要的那部分贴图,记住这个区域和整张图的左上角的偏移量。
- 然后把原图切小成小的长方形区域大小,并保存放回unity中覆盖原图。
- 回到Overlay的设置界面,设置其中的Rect参数。因为ps中偏移量是从原图左上角到小区域的左上角,而unity需要的是原图左下角,到小区域的左下角,所以这里的偏移量需要做计算的,如下图所示。最后还要填上小图的尺寸大小。
然后要更新一下对应的Wardrobe Recipe,在其中删除老的Overlay,重新添加修改的Overlay,就大功告成了。
把其他的模型适配到UMA第一节
- 把fbx导入到blender中,注意导入的选项,保证骨骼的方向是正确的。
- 通过骨骼的旋转和缩放等,把导入的模型和UMA模型基本重叠起来。
- 把旋转和缩放都bake到模型的顶点上,确保骨骼和模型没有旋转和缩放。
把模型和骨骼解除绑定,并删除其中的权重信息。
把其他的模型适配到UMA第二节,编辑mesh
- 选中需要编辑的mesh,进入Mesh Edit Mode,可以编辑面,边,点。
- 删除没用的面,把分离出来面创建成新的mesh。
打开比例编辑,移动面,使得被编辑的mesh和UMA的人物很好的适配。
把mesh和UMA的骨骼绑定
- 把UMA身体上的顶点权重信息project到新的mesh上
- 把mesh和UMA的骨架绑定到一起。
- 绑定后,还可以编辑mesh,去掉没用的面和顶点。
对于某些部分,映射的权重可能不好,需要手动调整。
把mesh导入unity变成slots
- 因为fbx版本比较低,不稳定,所以直接用blend的格式导入到unity中,当创建完slot后,可以把这个blend文件删除,UMA不再需要它。
- 打开UMA->Slot Builder,把对应的mesh设置到Slot Mesh上,选择合适的UMAMaterial,选择Slot Destination Folder。还可以选择自动生成Overlay和Wardrobe Recipe和自动加入到Global Library。
- 自动生成的Overlay没有设置对应的贴图,需要找到这个Overlay,并设置对应的贴图。
- 自动生成的Wardrobe Recipe也是空的,需要手动设置race,Wardrobe Slot。Add Slot和设置Overlay。
把整个新建的文件夹拖入到UMA Global Library中注册。
创建自定义shader
- 创建一个普通的Material,选择自己需要的shader,调整好shader的一些默认参数。
- 通过菜单UMA->Core->Material常见UMA Material,把需要的贴图的类型按顺序编码到名字中。
把unity material设置到Material字段中,定义需要用到的Texture Channels,设置好每个贴图的属性(比如shader中贴图的名字)。