Hello,大家好,好久不见。由于目前项目使用并烘焙了大量VAT并用Vellum相关节点解算动画,为了后续方便更好的理解,对Vellum以及VAT相关内容做一个记录笔记。本文主要参考引用了B站up爱吃鱼的老土狗的专栏。作为一位学习Houdini的新人,笔记如有错误恳请指正。
Houdini Vellum Constraints Cloth
在Houdini Vellum模块中,游戏最常用的约束器是 描述面的物理性质的 Cloth 模块。注意,这里叫Cloth,并不意味着只能用来做布料模拟,同时也能模拟很多其他类型的材质比如皮革、金属等,还可以与其他模块组合比如与Pressure组合构成柔体气球等。
同时,也有同为描述面物理性质的其他约束器模块:Distance Along Edges 和 Bend Across Triangles。
可以认为Cloth相当于其他两种描述面的性质的类型:Distance Along Edges/Triangle Stretch (拉伸约束) 和 Bend Across Triangles (弯折约束)的合集即:
其中Distance Along Edges和Triangle Stretch只有内置算法不同。
所以理解了Cloth,其他两种也能理解。
关于Vellum Constraints节点
我们知道Vellum Constraints节点包含了众多的解算器,而Cloth就是其中之一。那么Vellum Constraints节点本身有什么共通的作用呢?
当一个物体被添加Vellum Constraints节点时,Vellum Constraints会为物体上points和primitives层级添加众多属性,比如@stiffness等,这些属性共通作用就是为物体添加“约束”,类似于蒙皮属性。
关于 Stretch约束(拉伸)和 Bend 约束 (弯折)
Stretch :“约束”物体网格面上每个点到临近点的距离(长度),在变形时遵守固定的规则。按我的理解,其实是描述几何内相邻点之间的长度性质:比如是否能够拉伸,能够拉伸的程度,能否复原等等。
Bend:“约束”物体网格面上,每个点所参与的若干条边、边与边之间所形成的夹角,在变形时遵守固定的规则 。
Cloth节点会同时调用Stretch约束和Bend 约束。
Vellum Constraints Cloth节点一览和输入准备
Vellum Cloth节点输入有三个节点:分别是Geometry,Constraints(约束体,可选),Collision(碰撞体,可选)。
输入的几何体最好是三角面构成的,这样有利于更好的解算。可以用remesh节点转换。
1.Cloth参数 - thickness && Mass
Thickness
Thickness可以理解为描述物体的厚度性质的参数,并非视野里的真实厚度。是为了让面(Primetive)变成有体积的存在,在动力学模拟过程中进行碰撞检测和解算。
当cloth节点本身设置为蓝色可视时,勾选此选项可以看到Thickness的虚拟范围。
或者在下游的Solver(解算器)节点,Visualize选项卡中勾选Thickness,也可以看到。
设置Thickness的4种模式 :
- Unchanged:Cloth的默认选项,不改动已有Psacle值,如果上游节点的点属性中有Psacle值,直接使用已有值,不再进行修改
- Set Uniform:对所有点,手工统一设定一个Psacle值(如果上游节点已有值,就进行覆盖)
- Calculate uniform:系统自动计算并统一设定一个Psacle值“相对合理值K”
- Calculate Varying:为每个点自动计算并设定一个独立Psacle“相对合理值K”
对于最后一种模式,Houdini会根据网格的稀疏程度来设定K值,网格越密集,K值越小,厚度越低 ;网格越稀疏,K值越大,厚度越大。
Thickness实际上修改的是点的pscale属性。
@pscale = 1.0;
Mass
Mass参数代表物体点的质量。设置与Thickness相同,有4种方式。
@mass = 1.0;
2.Cloth参数 - Pin to Animation
如字面意思,此参数代表有哪些点需要被“定”住。我们可以通过group组件提前将需要定住的点选择出来。
设置Pin的三种模式
- Permanent :将钉住点的Mass值设为0,因为没有质量,点不受重力、风、碰撞……各种力的影响,保持“静止” ,如果选择了匹配动画,则是相对物体本身 “静止”。
- Stopped : 暂时钉住,需要时取消“钉”,让物体动起来 。具体是通过添加stopped属性的值来控制。
- Soft:钉住点和目标点之间保持一种“弹性”关系,而非刚性锁死。具体的数值和Stretch模块参数设置有关。
下篇文章记录下最重要的两个参数区块 Stretch 和 Bend。