最近想把小草神的模型从之前利刃于心大佬的版本换成官方发布的版本,不过用MagicaCloth弄好布料仿真以后发现头发的地方有点问题,可以看到两搓头发在来回摩擦:
仔细观察了游戏里面的表现,发现这两搓头发之间应该是没有这么明显的互相摩擦的,但是官方给的模型里,确实是由两条骨骼链分别控制着不同头发的运动:
如何解决这个问题呢?如果动手能力强的话可以直接去Blender里修改头发骨骼,比如删掉已有的部分骨骼,新建一条骨骼链控制头发运动。不过这里想探究一下如何在不修改原来模型的基础上,直接在Unity里实现
一种朴素的想法就是把这挫长头发用MagicaMeshCloth进行控制,不过另一种方法更加有效,直接将原来的MagicaBoneCloth组件的Connection Mode从Line设置为Mesh Automatic即可解决该问题:
根据MagicaCloth官方给出的文档,其原理是Line模式的话就是单独处理每条链的运动,骨骼链之间不会互相影响;设置为Mesh Automatic的话,就会简单地把相邻骨骼链自动连接成三角网格,维护它们间的相对位置关系;除此之外还有Mesh Sequential Loop模式和Mesh Sequential No Loop模式,分别表示按照Root List的顺序将骨骼链连接成网格,适合处理比较复杂的情况。这两个模式的区别就是前一种会把第一条和最后一条骨骼链连起来,后者不会。总之英文文档写得很详细,一看就明白。
只要选择除Line模式以外的模式,组件里就会解锁一个Triangle Bend选项,能够控制网格形变的程度。具体玩法也可以参考官方文档,也可以自己玩玩看。
根据我的理解,Bend Power越高网格运动越僵硬,Twist Correction勾上可以防止网格过度形变后无法还原到原来的样子,Twist Recovery Power越高摆动幅度越小。
这么弄完以后,感觉应该好看一点了吧:
这种方式也适合模拟那些带骨骼的裙子运动,想进一步了解可以看IGBeginner0116大佬的B站视频,讲得很详细。