Blender矢量置换教学:从平面到3D模型的神奇转换
Blender矢量置换教学:从平面到3D模型的神奇转换
在3D建模领域,Blender以其强大的功能和免费开源的特点,成为了许多设计师和动画师的首选工具。其中,矢量置换功能更是让平面到3D模型的转换变得简单直观。本文将详细介绍如何使用Blender的传统着色器编辑方式实现这一效果,让一个平面"凭空生长"出复杂的模型。
重设UV并定义置换方向
想要在平面上生长出模型,最根本的逻辑就是要让这些顶点都知道自己该往哪里进行位移,而如何获得这项数据,就需要从你想要生长的模型入手,所以我们需要先导入或自行制作一个模型,比如在本教程中我们就使用了一个此前制作的木雕小猫模型。
图1
在开始着色器设计之前,我们需要做一步很关键的操作,那就是利用布尔修改器,将模型底部删成平整的形态,而且如图1那样不要留任何底面。这样设计的原因是底面也会占用平面的顶点,而且极大概率会在变化的过程中形成顶点错位,导致效果变差甚至完全无法使用,所以切记不能忽视这一点。
图2
完成基本操作后,我们需要重新分配模型的UV,大多数模型UV展开状态都是各个孤岛分离的形态,尤其是在添加缝合边之后。而我们的目的是把UV重新展开成一个圆形的形态,这样生长起来才更加好看。
此时需要先进入模型的编辑模式,全选所有边,然后按Ctrl+E,选择清除全部的缝合边,接着打开UV编辑器窗口,如图2所示,全选所有顶点后按U,选择“最小拉伸”模式,完成后你就会得到和图2一样的圆形分布UV展开了,如果你没有找到这个选项,说明你是4.3版本以下的Blender,需要更新应用程序。
图3
接下来就是关键步骤了,我们得到了重新展开的UV之后,就可以此来定义矢量置换的方向了,如何定义呢?因为UV在3D视图本就代表顶点的位置信息,所以用世界坐标的位置信息减去UV信息,不正好就得到方向信息了么?
所以只需要如图3所示,在模型的着色器编辑器里,用“几何数据”的“位置”,结合“矢量运算”的“相减”,减去“纹理坐标”的“UV”,就能得到我们想要的结果了。
那么这个结果该如何反馈到我们的平面上呢?这时候就还需要在猫咪模型上对此置换数据进行烘焙,具体有几个重要的操作,大家切莫疏忽:首先是在猫咪模型的着色器编辑器里新建一个图像纹理,分辨率设置为长宽均为2048,且一定要勾选“32位浮点模式”,只有这个模式才能更精准地反馈顶点数据,否则最终结果会变得不太可控,新建纹理之后将“色彩空间”改为“非色彩”。
其次,我们需要将渲染引擎修改为Cycles,因为只有此引擎才能烘焙数据,然后在确保着色器编辑器选中刚刚新建的纹理材质的情况下,在右侧的“渲染”属性面板找到“烘焙”,并将烘焙类型改成“自发光”,确认无误后,点击“烘焙”。
图4
最后,等待烘焙完成后,我们可以在图像编辑器工具里看到如图4的烘焙数据,此时再次切记一定要把图像另存到电脑硬盘上,而且格式要选择为OepnEXR格式,色深直接选择Float(full),也就是全精度保存。
利用矢量置换让平面变成3D模型
得到我们想要的烘焙数据之后,就可以开始“变魔术”啦,新建一个平面,为它添加至少6级的表面细分修改器,这个操作就是为了添加更多的顶点,完成后我们进入它的着色器编辑器,新建一个材质,然后导入我们刚刚获得的OpenEXR格式烘焙数据,将它连接到“矢量置换”节点的“矢量”,并选择为“物体空间”模式。
图5
图6
如图5所示,此时我们只需要调整“矢量置换”节点的缩放,当数值为0时,它就是一个平面,而数值为1时,它就会变成猫咪木雕的形状,而且我们还可以通过在编辑模式下缩放平面后,再通过“纹理坐标”和“映射”,调整缩放数值,让一个平面一下子变出十几个猫咪木雕模型,大大提升趣味性。
题外话
如果我就要用几何节点来做呢?
可以看到,使用矢量置换虽然可以实现这个过程,但其实它也并没有想象中的那么简单明了,其中也涉及到了烘焙等容易出现错误的操作。那么回到一开始的思路,如果你就像用几何节点来实现这个功能呢?如果是复现矢量置换的思路,那这个几何节点复杂程度会比较高,但如果你只是想简单的展示这个效果,并不太追求极致的“丝滑”,那还是有一些比较简单的设计可以和大家分享。
基本的思路就是让模型的顶点位置,和平面的顶点位置通过一个调整系数来进行切换,我们还是以木雕猫咪为例,为它新建一个几何节点,然后添加“栅格”节点,调整它的尺寸,直至在俯视视角下完全覆盖整个猫咪模型。
图7
接下来如图7所示,我们通过“采样最近”和“采样编号”这个组合,来获得“栅格”的顶点位置信息,然后通过“矢量混合”,将它和猫咪的顶点“位置”进行混合,最后输出到“设置位置”的“位置”。此时我们只需要调整“矢量混合”的系数,就能实现“平面变猫咪”的设计了。
不难发现,这个思路虽然很简单,但效果并不够帅气,而且栅格的顶点数量必须足够少,否则当猫咪模型的顶点全部位移到栅格顶点时就很容易出现顶点错位,视觉效果大打折扣。所以总体来说我还是更推荐大家学习矢量置换的方法,毕竟它的效果更好,而且还可以学到更多的实用技巧。