3D建模也能“程控”,Blender着色器教程

2021-07-07 06:27薛山
电脑报 2021年16期
关键词:螺丝钉矢量螺丝

薛山

一般来说,3D建模的可逆性都相对不强,也就是当我把立方体变成异型之后,想要变回来,或者再变成其他形状就比较麻烦,基本上没有退路可循。不过,随着修改器设计的不断发展,我们在Blender里已经可以实现相当丰富、随时可调整的功能,比如平滑边缘,就不一定要在模型上自己手动做平滑,而是通过修改器对范围、幅度、强度进行程序化的控制,简单来说就是给予我们更多的控制空间,卖了一剂“后悔药”。事实上在结合修改器+材质着色器的基础上,我们甚至不需要建模,就能生成很多的3D模型,而且对模型的形态有着随时可调整的巨大优势。那么,究竟要如何实现呢?我们本期就以一颗“螺丝钉”来说起吧。

如图1,看起来就是平平无奇的一颗螺丝钉,但其实在编辑模式下查看,你会发现它只是一个由4顶点组成的平面,换言之,这并不是一个传统方法建模形成的图像,而是通过着色器设计,利用置换原理所构成的形状,具体怎么操作呢?我们一步步来看!

第一步:设置渲染器、材质置换和勾画基本形状

我们需要新建一个平面,然后将渲染器设置为Cycles,在平面材质中将表(曲)面置换设置为“置换与凹凸”,如图2。这一步非常关键,也比较容易被新手遗忘,所以要单独强调一遍。

然后切换到“渲染”模式,因为只有在此模式下才能看到置换效果。我们先给平面设置一个表面细分修改器,级数虽是越高越好,但越高意味着最终渲染的多边形就越多,对硬件要求也越高,所以要量力而行,本教程最终渲染时设置为8。

然后进入着色器编辑器,使用纹理坐标连接矢量运算,并将矢量运算选择为“长度”,再连接映射范围,并通过置换模块连接到材质输出的“置换”上,这时候通过调整映射范围的数值就能看到平面变成了向上的锥形,这时候再在映射范围和置换之间添加一个RGB曲线,调整成螺丝钉的形状,就能看到如图3的效果样式了。

我们既可以通过RGB曲线来调整螺丝钉的形状,也能通过映射范围的“到最大值”来调整圆滑度,这就是“程控”的意义所在,通过一组着色器设置,就能轻松让每一颗螺丝钉都有些微的差别,这不正符合现实生活吗,毕竟世上没有完全相同的两片树叶。到这一步,你的着色器编辑器应该是如图4所示的设定。

第二步:为螺丝钉打上十字纹

所谓“十字纹”,就是让原本升起来的部分又以十字纹的形状下陷回去,从而形成我们想要的形状,这时候需要新建一个分离XYZ,并用X、Y分别连接一个运算模块并选择为“绝对”,然后用运算模块的“最大值”功能连接,再紧接一个相减,并通过颜色渐变来输出。然后再在分离XYZ之前加入一个矢量运算并选择为正片叠底,尝试设置X、Y的矢量值,可获得如图5的效果。

将本步骤新建的功能模块全部复制一遍,但把矢量运算的X、Y值进行替换,然后把这两个模块组用正片叠底相乘,这样就能形成一个十字形了。虽然我们也有更简單的方法来形成这个十字,但教程所使用的方案可以让十字形边缘呈坡状,而不是垂直下落,视觉上更符合真实场景,而且也可以通过调整参数来改变坡度角度,程控更自由。

最后再将本步骤所做的功能模块,用正片叠底与第一步制作的模块在置换之前相乘,这样就能实现如图1的螺丝钉形状了。

考虑到要在多个“螺丝”上使用这一组着色器,建议将用于置换的模块全部以Ctrl+G进行编组,并为映射范围的“到最大值”、2个相减模块的数值以及置换模块的缩放值添加组输入的快捷连接,并按功能重新命名为容易理解的名称,比如“到最大值”就是“螺纹大小”,减法的数值就是螺丝顶面的“圆滑度”,而置换的缩放就是控制螺丝的“高度”。这样一来,如图6,我们的着色器编辑器一下就简单明了了很多,反复使用时也不容易混淆了。

本章小结

置换功能考验的其实是想象力

在今年开始做Blender系列文章时我就说过,置换是Blender着色器里非常重要的功能,它可以在零建模的基础上实现3D图像的输出,而且Blender在2.93 alpha版本就开始重推几何节点,这也是一个全新的,足以让人脑洞大开的新功能。虽然玩法有不同,但关键逻辑是互通的,着色器置换考验的其实就是用户的空间想象力,怎样通过纹理位置的数学计算来置换出形形色色的形状,而且显然,我们的螺丝只完成了上半部分,螺丝最重要的螺纹部分并没有完成,那么聪明的你想不想尝试自己研究一下呢?你能在我们下期教程推出前自己搞定吗?我拭目以待!

猜你喜欢
螺丝钉矢量螺丝
出走的螺帽
拧螺丝钉的人
无法拆下的螺丝
物理矢量和标量学习中需要厘清的几个问题
力的矢量性的一个例子
拧三年螺丝的结果是什么
三角形法则在动态平衡问题中的应用
注意贴纸下的螺丝
矢量三角形法则在物理解题中的应用
雷锋与“螺丝钉”刘思乐的亲密接触