几何节点编织-图文版

昨天的编织视频,有同学问能不能出个教程,但我懒得再剪视频了,就用图文做个讲解吧,如果这里有没说清楚地方,可以随时留言给我。
首先说明一下,这个节点组的通用性比较差,不能直接套在任意的对象上,如何提高它的通用性,目前已经不是我能解决的问题了,所以我们只能具体对象具体分析。
首先说说这个编织节点的基本实现原理。
把对象的经纬线拆分开,这是所有操作的基础
沿着对象的原始形状对经纬线做波浪化处理(形成编织效果)
下面是实现的过程,图文里我们换一个新的对象,这次使用参数化形状的双曲面(Hyperboloid)做例子。
至于怎么绘制参数化形状,在以前的视频中我做过好几个例子,这里就不赘述了。

双曲面的分辨率这次做的是128*128,请注意,分辨率会直接影响到最终的编织效果,但究竟应该怎样选,我现在也不知道规律,针对不同的对象,请多做尝试,找到最合适的分辨率。
将对象的经纬线拆开(就是线框的横线和竖线拆成两部分,分别处理)。
最先想到的方法是直接将曲面转为曲线,这样同时就得到了经纬线

但这样做得到的不是经纬线,而是一段一段的短线(使用Trim Curve就会发现这个问题,而我不知道怎样连接多条短曲线成为一条长曲线,所以这样做是行不通的)

所以,这里采取的方法是通过分离边,实现经纬线的拆分。这个方法也不是通用的,我能确定的是利用uv计算的参数化形状肯定适用,但预设的几何对象因为索引不同,这个方法是不好用的。

这里我们看到,经线(竖着的)没问题,纬线(横线)看起来却多出了一根没用经线连接(x轴的负方向上),这是原始Gird的一条边,而且在边的状态并不容易删除这根线,所以直接把纬线转换成曲线,然后利用索引关系,把纬线最上、最下和这根多余的经线删除了(操作省事,实际上少了两条线,但问题不大)

然后是沿着原始形状,对经纬线做波浪化处理。这个实际上比较简单,针对一条线,每隔一点(索引模2)沿着法线方向向内偏移,另一点向外偏移,就形成波浪了。
下面是实现要求的最简单节点组,需要注意的是,这里点没有像内偏移,这样会出现编织时无法穿插的情况,所以要做下调整,把选区变为方向指引

将模2的结果(0,1)映射到(-1,1)指定法线的偏移方向,再设置偏移的缩放,就可以实现双向偏移效果

然后要针对曲线,每隔一条曲线翻转一下向内向外的偏移,这样就形成了编织的扣子。做法就是将曲线的索引模2,然后将法向缩放翻转。

注意,上面的节点组虽然只用了一个index,但它有两重含义,连接到set position的,指的是每条线上“点”的索引,连接到map range的,指的是每条曲线自身的索引。(几何节点的逆推形的结构,从右到左决定属性,而不是从左到右)
到这一步后,后面的过程就是组合经纬线,实现最终的效果了。
还有一点要说的就是,如果发现经纬线的偏移恰好重叠了,就再翻转一下其中一方的法线缩放即可。最终的全部节点组如下


可以看到x轴的负方向还是有穿帮,但是——真正的编织物也有起头和收尾的地方吧,所以就不要求那么高了(笑)
那么,这个图文就到这里了,有任何问题欢迎留言。