薛山
上期我们使用几何节点功能实现了一笔画蜘蛛网的设计,这次我们再换个思路,学一学《火影忍者》里的土遁,来一个砖墙土墙一笔画的效果如何?也就是只需要用曲线工具随手一画,就能沿着这条线生长出一道砖墙来,想想是不是有点“中二”又有点酷?话不多说,直接打开Blender操作起来吧!
可能有的读者朋友会问,跟随曲线位置变化的砖墙阵列,我们不是也可以通过“阵列”和“曲线”两个修改器来实现吗?的确,这种方法在需要制作固定背景时是有效的,但如果你想要砖墙的生成具备自适应性,可以在任意的曲线上随机生成,传统的修改器方案是行不通的,而且也没有办法实现砖块之间的随机分布效果,真实性比较差,这也是为什么更建议通过几何节点来进行设计的根本原因。
首先我们要明白几何节点里是怎样实现顶点旋转的,因为曲线绘画所形成的砖墙必然会伴随圆滑的转角,不会是直来直去的样式,所以每块砖都要有正确的旋转方向,看上去才足够自然,这就需要用到曲线顶点的“切向”,也就是让砖块的旋转方向与曲线顶点的切向对齐,就能得到我们想要的效果。
如图1所示,我们只需要在“实例化于点上”时,导入“曲线切线”并通过“对齐欧拉到矢量”来连接旋转值,就能达到让每个方块都正确旋转的目的,这个技巧在很多设计里都会用到,算是Blender几何节点的必备技巧之一。
但因为我们很多时候都需要多次“实现实例”,比如要调整顶点位置的随机性,而这个操作会将曲线转换为点云,曲线切向的数据将会被抹掉,后期将无法再次调用,所以我们这时候需要在“曲线重采样”之后,接一个“存储已命名属性”,选择“曲线切向”并为它取一个新的属性名,然后再导入一个“已命名属性”节点,输入咱们刚刚存储的属性,重新连接“对齐欧拉到矢量”,这样一来无论在后面有多少次的“实现实例”,这个曲线切向数值依然可以随时调用,非常方便,具体节点可参考图2。
砖墙有一个特点就是每一层之间有一定的错位,所以我们要先用“网格直线”“设置位置”和“实例化于点上”来制作一个锯齿状的点阵,这样就能实现每一层砖块的错位了,这一步完成后记得也要通过“实现实例”和“按距离合并”来去掉重叠的顶点。
接下来就导入咱们的曲线,通过“实例化于点上”和存储好的曲线切向,实现如图3那样方向对齐的效果了。
如果這时候我们直接连接“实例化于点上”,并将“砖块”作为实例,就能得到一面光滑的砖墙了,但这显然在真实感上差了一点感觉,所以我们还需要在这两个模块之间加入一个让砖块位置更随机化分布的节点,甚至让其中一些砖块消失,看上去无疑会更有感觉。
首先要“实现实例”,这是这一步操作的前提,然后连接“删除几何体”,“选中项”通过“随机值”的“布尔”来选择,接下来就是利用“设置位置”,结合“噪波纹理”来让砖块的位置沿XY方向随机化,最终就可以得到如图4的效果了。
虽然整个节点编辑器看上去有一点复杂,但实际上按照咱们的设计逻辑来看却是十分通顺的,第一部分生成锯齿线段,第二部分按曲线进行实例化,第三部分为线段顶点分布赋予随机值,第四部分放置砖块。在理清顺序后咱们只需要注意一些小细节,比如实现实例、存储曲线的切向数据,就能轻松完成这一效果,完成后只需要在曲线的编辑模式下任意挥毫,就能得到一个自动生成的砖墙效果啦!