此贴内容在于助力游戏各模块进步
望大佬不吝赐教
望网友笔下留情
尽管《逆水寒》端游已经上线了很长一段时间,但我们一直都在不断提升游戏的品质,努力为玩家带来突破性的游戏体验。比如此前我们就和英伟达合作,将光线追踪和微光渲染等技术率先落地在了游戏里,革新了国产MMO端游的画面极限。
而在游玩体验上,我们也一直希望我们的游戏能够逐渐看齐主机游戏的标准,做出高水平的动画与交互。于是,在我们制作《逆水寒》海底副本海皇陵墓的BOSS时,就有意在这个方面做了一些探索,在这里也分享两个案例给大家:一个是章鱼BOSS深海巨怪触手的CV曲线绑定效果,还有一个则是海蛇BOSS恶海蛟蛇的Ragdoll物理被击效果。
如何让触手的动作更加自然?
通常我们在制作软体类的东西时,例如蛇、龙、鞭子、锁链等,在绑定方式上都是采用Max线性曲线绑定去制作,用IK、FK制作动画。因市面上的端游和手游在配置上的限制,基本都会选择通用的方式去绑定,能满足基本的效果。
但实际上Max线性绑定是存在2个明显缺陷的,我们可以放大看一下:
1、 做小曲线时卷曲度不够顺滑
曲线是必然会有“C、S”的变换的,当曲线越卷曲的时候,Max线性绑定“方正”的缺点就会越暴露。就像上图示意的那样,它变成了一个五边形,而不是一条顺滑的曲线。所以为了避免出现这样的问题,以往我们都不会让曲线卷曲得那么夸张。
但是我们这次副本的BOSS是章鱼,你会发现它的触手末端会有非常小曲线的螺旋型卷曲。
这是我们在制作前期使用旧方法做的绑定测试,可以看到始终无法达到优秀的效果。而且这一次我们也希望我们的动画更接近主机平台的品质,不希望降低我们的标准,因此之前的那种绑定方式肯定就无法满足我们的需求了。
接下来看第2个缺点。
2、伸缩/旋转角度过大,欧拉翻转,导致动画崩坏
如上图所示,轴级翻转,会导致蒙皮跟着一起翻转。
还有这里,我们发现章鱼的触手无法做大幅度的伸缩,否则会出现动画崩坏的情况。
于是在深思熟虑之后,我们还是决定摒弃传统的Max线性曲线,尝试采用Maya里常用到的CV曲线进行绑定。
CV曲线有贝塞尔平滑的功能,能自动润滑两点之间的过渡:
但CV曲线在Max里也存在一些局限。在我们初次用CV曲线绑定后,发现IK控制的点旋转不影响蒙皮:
可以看到控制器转动,但是模型的肉不跟着转动。实际上在做曲线动画时,位移和旋转是二者缺一不可的。
所以我们接着摸索,通过给CV曲线细分节点,即添加多个节点,由控制器均分蒙皮:
理论效果
实际模型效果
在细分节点之后,CV曲线下的蒙皮终于也能跟着一起旋转了。
而后,我们经过几轮的迭代,优化出了最终的卷曲效果,下图是几种方法的对比:
可以看到优化过后的“CV line”效果非常圆滑,已经符合我们制作动画时的标准了。
同时,CV曲线的添加也优化了伸缩旋转的问题,不需要像传统Max曲线通过旋转+位移避免出现翻转的情况,减少工作量的同时也更方便制作。
优化前
优化后
一起来看一下Max及客户端的最终效果:
是不是已经非常流畅和自然了?
不过实际上因为BOSS数量多及上线时间紧迫的缘故,对触手节点的细分还有很多可以提升的空间,后续我们也会继续去做更多的探索和优化。在这里也是把我们的经验和大家分享一下,有需要的朋友们可以抓住重点,节省时间。
最后进行一下总结:
1、CV曲线取代Max线性曲线,让触角的旋转更加圆滑:
因为CV的代码TA极少介入,所以现在Max里的CV几乎没有用到,但实际上它的功能还是非常强大的;
2、给CV曲线添加节点、由蒙皮均分,优化了CV曲线的旋转问题,让触角的圆滑度更上一层楼;
3、缩减父子级层数,解决了柔体在Havok里存在的翻转bug问题,让柔体的曲线制作更大胆:
上面提到,在IK位移和旋转时轴会翻转,另一个触发原因是Havok对父子级要求层数不得超过40层,解决办法只需简化父级即可,在这里就不过多赘述了。
附:章鱼CV绑定逻辑导图