Houdini Vellum布料的设置,和布料穿模的排查,在做衣服、布帘、软体薄片和角色布料模拟的时候,是经常会碰到的问题。Vellum基本上是靠约束来管理点之间的关系的,Vellum Solver这个节点会去处理这些约束、碰撞和布料的运动。在SideFX的文档当中也说明了,Vellum Solver的输入包含了要被解算的表面、约束的几何体,还有碰撞的几何体,而约束通常是由Vellum Constraints这个节点来创建的。所以当布料效果不够理想的时候,不能只是去单独调整风力或者是重力这一个参数,而是需要把网格、约束、碰撞的厚度、子步,还有初始的状态,这几样东西放在一起来看。
一、Houdini Vellum布料怎么设置
在对Vellum布料进行设置的时候,需要先把几何体处理干净,然后再去决定布料是让它自由地落下来、还是被固定地悬挂着、是贴合在角色的身上,又或者是需要被缝合成一件衣服。不同的场景,它们所需要的约束也是不一样的,参数也不能完全照着搬过来用。
1、先把干净匀称的网格准备好
布料的网格要尽量做得均匀一些,要避免出现那种很长条的三角面、互相重叠的面、破掉的面,还有法线混乱的情况。网格太粗了,褶皱的细节就不够细腻;网格太乱了,约束和碰撞也都容易变得不稳定。对于角色衣服这一类的模拟,最好是能在进到Vellum以前,先去检查一下厚度、缝合的边界,还有初始的位置。
2、把布料的约束设置好
在【Vellum Constraints】这个节点里面,选择了Cloth这个类型以后,要重点去看Stretch、Bend、Mass、Damping这些参数。Stretch影响的是布料被拉伸的程度,Bend影响的是折叠和柔软的感觉。那种柔软的薄布,不能把弯曲的刚度设得太硬了,而厚重的皮革,也不能完全去用轻薄布料的那一套参数,不然的话,运动的质感就会不对。
3、把固定点和目标形状设置好
要是布料需要被挂在某些特定的位置上,就可以用Pin约束去控制那些固定的点;要是想要让布料去跟随动画角色,那就可以结合目标约束,或者是预先处理好的动画输入。不要把那整块布都给固定住,只去保留那些必要的区域,布料才能有自然的运动空间。
二、Houdini Vellum布料穿模怎么排查
布料发生了穿模,这倒不一定就是碰撞的开关没有打开。更加常见的原因,是初始的状态就已经发生了穿插、碰撞的厚度给得不合适、子步设得太低了、碰撞体的动画走得太快,又或者是碰撞的几何体本身的质量就不太好。在SideFX的Vellum提示里面也提到过,Vellum它使用的是连续碰撞检测,但是如果点的位置,在每一帧当中,被随机地或者是突然地改变了,那么这一类的检测,也是解决不了所有问题的。
1、先去检查一下初始的穿插情况
排查穿模的时候,要先去看一看第0帧,或者是模拟开始的那一帧,去确认布料和碰撞体之间,还没有出现相互穿进去的情况。如果一开始的状态就已经发生了穿插,那么到了后面,就算是把子步提得再高,也是很难完全把它给修好的。可以先把布料稍微地往外推一推,或者是用Drape这一类的流程,让布料先稳稳当当地落到角色或者是物体的表面上去。
2、去检查一下碰撞的厚度
在【Vellum Solver】这个节点里面,去查看Thickness、Collision Passes,还有Post Collision Passes这些跟碰撞有关的设置。厚度要是设得太小了,布料就容易紧紧地贴到碰撞体的里面去;厚度要是设得太大了,布料又会悬浮起来,或者看上去显得很臃肿。自碰撞也是需要去留意的,要是布料折叠得很多,那么厚度和网格的密度,它们之间如果相互不匹配,就很容易出现布料自己穿透自己的情况。
3、去把子步和碰撞的次数提高一些
角色的动作很快、碰撞体的位移很大、布料的速度很高的时候,是需要去把Substeps和碰撞的迭代次数给提高的。在SideFX的论坛当中,也有用户反馈过,对于那些快速运动的碰撞体场景,增加substeps是有助于去提升模拟的精度的,只不过呢,计算所花费的时间,也会跟着一起增加。所以,不要没有限制地去加大这些数值,而是要先定位清楚,到底是运动太快了,还是碰撞的厚度不对。
三、Vellum布料效果怎么稳定下来
Vellum布料能够跑得起来,这只是第一步,真正要让它的效果稳定下来,还需要让网格、碰撞体,还有缓存的流程都固定下来。不然的话,今天模拟还是正常的,到了明天角色的动画一改,它就又会重新出现穿模和抖动了。
1、去把碰撞体给简化一下
角色或者是复杂的模型,最好是先去做一个低模的碰撞代理,把身体的轮廓,还有那些关键的突起部分给保留下来,去掉那些没有关联的细节。碰撞体太复杂了,模拟就会变慢,而且也很容易在那些细碎的凹凸地方,产生不正常的抖动。被用来做碰撞的模型,倒是不一定非要和渲染的模型,做得一样精细。
2、把布料分一分层来进行处理
碰上多层的衣服、披风和内外层的布料,不建议一次性把它们全都混在一起来求解。可以先去模拟里面的那一层,然后把它的结果给缓存起来,外面的那一层,再依据这个缓存来进行碰撞处理。层数越多,就越需要去控制好初始的距离,还有碰撞的优先级别。
3、在缓存下来了以后,再去检查一下有问题的帧
模拟完成了以后,是需要去把它给缓存起来的,然后再一帧一帧地去检查肩部、腋下、腰部、膝盖,还有快速转身,这些风险比较高的区域。要是发现有那么几帧,穿模特别明显,那就要先回到这些帧里面,去检查一下碰撞体的速度、布料的厚度,还有约束的强度,不要只是盯着最后的那一帧去看。
总结
Houdini Vellum布料应该怎么去设置,还有Vellum布料发生了穿模又该怎么去排查,这两件事的关键,是要先把布料的网格、Cloth约束、固定点和碰撞体都给准备好,然后再借助Thickness、Substeps、Collision Passes这些参数,去控制它的稳定性。在碰到穿模的时候,不要只是一味地去提高子步,而是要先从初始的穿插、碰撞的厚度、碰撞体的动画,还有自碰撞的设置,这几个方面去着手排查。等到模型干净了、碰撞代理也合理了、缓存的检查也做到位了以后,Vellum布料的模拟就会稳定得多,也更容易去得到那种自然的褶皱和动态效果。
