Blender教程之螺丝钉效果实战
我们本期的目标就是使用Blender制作螺丝钉的效果,你可能会觉得“螺丝钉不就是一个柱体再加上螺旋凸出的圆环么?”没错,但在3D设计中,很多时候复杂的往往是看起来很简单的效果,比如螺旋凸出的纹理怎么实现?使用传统方法去手动选择区域来挤出?这个方法但凡是稍微实践一下就不难发现困难重重,因为需要重构网格,虽然可以如图1的使用内插角和三角面转四角面来实现网格的45°旋转,但螺旋纹理显然不是以此角度进行旋转的,旋转的角度也完全不可控。显然,我们需要一个可定制螺旋参数的着色器方案,这时候就要祭出我们在螺丝帽文章中大显身手的“置换”大法啦!
1.新建柱体并模拟螺丝钉的形状
与螺丝帽可以通过一个方形平面完全演化不同,螺丝钉无法通过这样的方式实现,原因在于当我们使用置换功能将平面中的部分凸起呈柱状时,这些柱体的侧面都无法实现表面细分,如图2所示,进入编辑模式可以看到在软件眼里它依然只是一个平面,而不是柱体,所以柱体侧面无法形成足够多的有效顶点,我们即便是做出了选区也无法让螺纹凸出来,所以我们必须手动做一个柱体,并做多次的环切。
1
2
注意,这一点很重要!环切必须手动做,不能使用表面细分修改器,因为简单型表面细分修改器只是在每两个顶点之间做N次切割,而主体的每一面其实是一个长矩形,这意味着短边的切割得到的顶点将远多于长边,如图3,这样会明显影响螺旋纹理的凸出效果,而我们的目标是如图4的切割。
3
4
切割完成后再加载表面细分修改器,这时候就可以得到很好的效果了,细分等级越高越好,如果你有一台强力电脑就能获得更好的效果。建模时最好找一颗螺丝的实物或照片,看看螺丝钉的具体形状,模仿着做一颗即可,建模的阶段结束了,接下来是着色器环节,记得在做着色器之前先切换到Cycles渲染器,并把材质的置换选项调整为“凹凸与置换”或“仅置换”。
2.生成螺旋凸出区域
螺旋纹理看起来简单,但如果利用数学思维在3D空间中选出却需要花一点心思,我们使用的方法是以螺丝的X、Y轴位置信息为值来做反正切,然后结合映射范围,最小值和最大值正好限制在360°的范围以内,这样就能获得一个完整的无重叠的圆,然后得到的值与Z轴位置信息进行对比,并利用分数取倒数的方式来获得螺旋形状。
5
不过如图5,这个方法获得的螺旋形状是断层的,其实也有办法继续优化,但显得过于复杂,这里可以用一个讨巧的方法,复制上一段所做的全部着色器,但在前方加入一个矢量旋转,设置为180°,并使用矢量加法给Z轴加上0.5,这样就相当于把之前做的纹理旋转了一圈并向上唯一了一个单位,最后利用最大值将这两个着色器组加到一起,就能形成一个完整的螺纹了。
如果想要调整螺纹的密度,可以在最前方纹理坐标后面跟一个矢量乘法,将X、Y设置为1,Z设置为更大的数,就能看到密度增加了。除此之外我们也指向螺纹在想要的地方出现,而不是整个螺丝钉全都有螺纹,这时候可以通过分离XYZ的Z,结合比较来得到区域,并与我们前面得到的着色器相乘,就可以限制螺纹出现的高度范围了。
3.设置替换,凸出螺纹
得到螺丝钉的纹理之后,接下来就只需要将其连接置换就能实现输出了,这时候记得把置换的中间值设置为0,而且缩放值也不要设置得太大,基本上0.05以内就可满足。这时候可以通过给缩放值打关键帧的形式来实现螺纹显现的动画效果,而且因为螺纹密度、宽度等全都可随时调整,自由度远高于建模方案,这时候再把我们上一期做好的螺丝帽加进来,如图6的一颗完整螺丝就完成啦!
6
本章小结:论选区,着色器往往更自由
贯穿整个螺丝钉制作系列的关键,就是如何选出你想要的的区域来进行置换,对于新手而言,选区的思路很容易被限制在编辑模式下去找你想要的的面,但问题在于这种方法找到的面只适用于顺着网格走的图样,跳行挤出的情况下会出现不可逆的锯齿,影响观感。事实上单单看选区的自由度,着色器里提供的数学方案要远比在3D空间直接寻找方便很多,而且可以打破网格的限制实现无级选区,自由度高,可控性强,是Blender学习过程中绕不开的必学重点之一。