实训项目周记(四)
ncloth动力学布料&关键帧动画
继上周骨骼绑定并把动作捕捉的动作烘焙到模型上后,这周主要对动作进行了细化并且加之场景的道具与人物的交互动画。
为小男孩手臂挂一件衣服
在之前的骨骼绑定过程中,进行蒙皮时,直接将角色贴身的衣物一起添加为蒙皮了,蒙皮后经过权重的调整,个人感觉效果也还可以。但是,根据故事设定,儿时男主是背着书包手臂挂着衣服跑步入场的,像挂在手臂上的衣物,因为只有一小部分靠近骨骼(手臂处的),所以很难用刷权重来达到好的效果。于是这里我学习使用了动力学布料ncloth来仿真。
模型的简化
手臂上悬挂的衣物模型非常精细,网格很细小,模型不大但是点密密麻麻。它的精度比人物模型都要高很多,没有必要,所以在转换为动力学布料前我先对它进行了简化。
网格–>减少–>选择减少百分比
我让它减少的幅度很大,因为我并不需要布料很精细,所以我选择百分比95%。
减少后的模型看上去虽然不如之前光滑,但是尚可。
另外注意如果是直接在某一个关键帧对模型进行的简化操作则在播放时会实时计算每一帧的简化结果(简化网格的操作是实时进行的,模型一变化就会重新计算),所以最好是另外从一个文件中简化完成后,ctrl+D复制一个简化后的样本,然后把样本导出来使用,这样就不会实时进行计算了。
ncloth动力学布料
模型简化完毕后,进入动力学模式(2018版叫FX模式)。
以Maya2018为例,选中布料模型,ncloth–>创建ncloth–>点小方格打开属性
一般默认设置即可(可以点编辑–>重置设置,重置一下),点创建布料
这时候大纲视图会发现多了两个
一个是ncloth对象,nucleus1是解算器。
这时候点击播放按钮,可以看到模型已经有了布料的感觉,缓缓下落。如果一直播放它会永远下落。
一般我们需要给布料加一个碰撞对象阻碍它一直落下去,这里很明显就是小男孩的胳膊,为了防止穿模,我选择小男孩的袖子(而不是里面的胳膊)来作为被动碰撞对象。
选中袖子,ncloth–>创建被动碰撞对象–>选小方格打开属性
解算器选择我们刚才nucleus1,点击使碰撞。被动碰撞对象创建完成。
再次点击播放查看效果就可以看到布料的下落收到胳膊的阻挡,挂在了胳膊上,但是随着下落,布料还是会破损以至于最后落下来(挂烂了可还行?),这里我们需要处理一下ncloth的属性,点击布料,Ctrl+A打开属性,对动力学特性进行调整。
我主要调整了这几项,可以一边查看效果一边调整,知道达到想要的效果。
开始播放之后发现布料下落的速度非常缓慢,看上去不太科学,还需要对解算器进行调整,选择nucleus1,CtrlA打开属性,调节比例属性中的空间比例。
调整完毕达到想要的效果之后,对动力学布料添加一个缓存,选择布料,nCache–>创建新缓存–>nObject–>点小方块打开属性
选择缓存文件保存的路径,取一个名字,点击创建。
创建缓存后再播放,布料的动力学动画就很流畅了。
关键帧动画
关键帧动画这里不再细说怎么调帧了,就是怎么自然怎么调,反复查看效果,一点点地调。事情是繁琐的事情,调帧真的需要耐心,软件也是傲娇的软件,一言不合就会出各种小问题,这里主要记录一下我在调帧前后遇到的一些坑。
将主角们“完好无损”地导入场景
因为动画涉及多个角色,所以需要一个场景中导入多个人物,就是导入多个从motionbuider导出来的烘焙好的fbx文件,ok,常规思路,导入呗,我非常开心不加思索地,先文件-导入-导入母亲某个动作的fbx,母亲带动作的模型成功导入了,没问题,再文件-导入-导入儿子的fbx,然后问题来了…what???这是个什么鬼?吓得我抬头纹都出来了=-=。。
看上去像是骨架重合了导致蒙皮无处安放乱七八糟,我硬着头皮播放了一下,发现母亲的动作被覆盖没了,这个奇奇怪怪的合体做的是后导入的儿子的动作。
网搜也没找到合理的解释和解决,头大的进行了各种尝试之后我发现有一个很简单的解决办法,就是不要用fbx格式!先分别打开fbx,把fbx另存为导出为mb格式,然后再将两个mb文件同时导入场景,人物就不会重合了。over,天下太平。
匹配合适的大小
由于人物模型跟场景大小不匹配,需要将人物缩放到合适大小,但是直接全选缩小骨架跟蒙皮就分离了,所以我有个机智的队友发现了一个方法:大纲视图选中同一个人物骨架相关的这两个对象,给它俩打个组,然后就可以缩放旋转移动任意整体调整了。
对动捕关键帧的调整
这里主要说一个常见的问题,删帧。
删帧真的很头疼,因为骨架上每一个关节都各自带自己的关键帧。而且是这个密度的:
所以比如我想整体删掉人物的一段动作,比如动捕的初始poseT,这一段动作我想整体删去,如果挨个关节删一遍不仅特别费时费力,而且有时候会出现明明都删干净了,一播放发现动作还有!然后找半天找不到问题…
这个时候可以使用菜单栏编辑–>关键帧–>删除关键帧–>打开小方格属性
选中骨骼,选择选定对象、删除下方所有层次、设置删除的范围,点击删除关键帧即可。
随便选中一个关节,发现关键帧已经删除了。
这时候如果想将关键帧整体移动到最前面,只需要先放在第一帧的位置,再选择编辑-关键帧-剪切,编辑-关键帧-粘贴,就可以了。