薛山
作为一个慵懒佛系的Blender玩家,相信很多读者朋友跟我一样,有时候虽然脑子里有思路,但一想到要做复杂的动画或物理模拟,可能就会开始打退堂鼓了,比如我们今天要做的拉链效果,常规思路可能就需要通过建模后的骨骼绑定来进行动画制作,这其实也是高精度模型效果的必经之路,但如果只是想试验一下自己的想法,或者并不需要那么高的精度,单纯就为了做个过场动画,这时候几何节点或许会是个“一劳永逸”的好选择。
拉链效果的核心就在于线性且丝滑的分离合并效果,如果是传统设计想要做到这一点还是有难度的,因为拉链的效果实质上是在定义两个物体之间的顶点关系,想要做到丝滑的效果有一定难度,最直观的方法就是使用布料系统,通过第三个物体来重新绘制钉固组权重来实现分离,但这个效果做起来比较麻烦,而且每一次都需要重新调整和烘焙数据,所以如何使用几何节点来设计就成了重点。
我的基本思路是使用两条曲线来作为拉链的两条边,在拉链合并时它们紧贴在一起,而当拉链拉开时就沿着曲线的路径逐渐分离,而且为了方便实现后期编辑,我们可以直接用贝塞尔曲线作为模型,直接进入它的几何节点编辑器里进行操作。
首先,大多数关于曲线的几何节点操作,都需要使用“曲线重采样”来细化曲线的顶点数量,因为我们需要使用两条曲线,但考虑到拉链的特殊性,这两条曲线的形状其实是一样的,只是处于不同的位置,所以我们只需要用“设置位置”来进行偏移,再将它与原曲线“合并集合”,就能通过一个曲线来控制拉链两边的效果了。
那么,要如何“设置位置”才能让拉链丝滑地拉开合并呢?我们可以利用“样条线参数”作为系数,连接“相乘”“相加”,然后将输出的结果,通过“矢量计算”的“正片叠底”和“法向”相乘,这时候只需要调整“相乘”“相加”的值,就能控制两条曲线的靠拢与分离了,对了,记得要把“相加”的“钳制”属性勾上,否则两条曲线在靠拢后会穿过而不是停留,就达不到我们想要的效果了。
但這时候我们只得到了两条曲线,无法进行渲染,所以接下来还需要把它们都变成网格平面才行,这一步其实也很简单,通过“曲线转网格”,并以曲线直线作为轮廓曲线就能实现这个目标。但这时候你会发现两条曲线会朝着同一个方向来生成面,而我们想要的是它们朝着相反的方向来生成,产生这个错误的原因就是两条曲线的法向是完全相同的,所以我们只需要给其中一条曲线添加180°的“平滑曲线倾斜”,就能得到满意的效果了。
在第一步完成后,我们的拉链分离合并效果就实现了,但看上去更像是在撕扯一张纸,因为拉链本身是有链条的,所以我们第二步就是给它添加两组链条。这个操作其实也不难,也就是将两个曲线的顶点作为基础,通过“实例化于点上”来放置链条就行。
如果有仔细观察自己衣服上的拉链,不难发现左右链条是互相错位的,所以我们如果直接使用“实例化于点上”,就会发现两条边的链条在拉链拉上后是重叠的,因此还需要通过一定的设置来让它们位置错位。
这一步我们需要使用“采样曲线”这个节点,将它连接到“平滑曲线倾斜”之后,系数则选择“样条线参数”和“相加”,这个“相加”的值就是曲线顶点的位移量,大家可以根据自己的设计来具体调整,然后通过“设置位置”来改变曲线顶点位置,再把它和另外一条曲线的“设置位置”进行合并,最后再用“实例化于点上”来放置链条模型。
链条模型我们可以用立方体来做简单的示例,因为拉链的链条即便在合并的时候也会有一些左右错位,所以我们可以用“变换”来进行些微的位移,实现我们的最终设计效果。
理清思路就能实现看似复杂的效果
本期制作的拉链效果几何节点最大的优势就是可以随意复用,在原始曲线的编辑模式下,我们可以任意调整曲线的长度、角度,拉链效果都能正确跟进,非常方便。事实上几何节点在实现这些看起来可能很复杂的效果时往往都有奇效,因为准确来说它就是编程逻辑的图像化表现,只要理清了思路,很多设计其实都能迎刃而解,这也是我们为什么一直推荐大家学习几何节点的根本原因。