【blender】几何节点,随意修改长度、位置、高度、形变量的墙体

您所在的位置:网站首页 几何修改指的是修改什么 【blender】几何节点,随意修改长度、位置、高度、形变量的墙体

【blender】几何节点,随意修改长度、位置、高度、形变量的墙体

2023-07-29 12:41| 来源: 网络整理| 查看: 265

我是谷缘,今天来讲几何节点

由于节点的特殊性,使用节点比起艺术创作更像是解决数学难题。

所以在我们使用节点的过程中将会接触到大量抽象的概念,虽然不懂也能用,但如果要依靠自己创作出一些作品,对于每个节点工作原理的深刻理解是必不可少的。

 

因此,这一系列的讲解将会以案例为载体,着重讲解每个节点的含义和使用方法。

那么开始今天的案例教学。

 

今天我们的目标是创造出一面能够随意修改长度、位置、高度、形变量的墙体,就像这样

blender

首先,既然我们需要能够随意的修改位置和方向,那么就需要使用曲线来制作,因为网格物体对于随意移动这个要求相较于曲线来讲表现不是很好。

 

如果你没有加什么奇奇怪怪的插件的话,这里你会看见两种曲线。

它们两者的区别在于,贝塞尔曲线调整更为直观快捷,NURBS曲线调整更为精细

blenderblender

选择哪种差别不大,方便起见我们选择贝塞尔曲线。

砖墙,自然是由砖垒起来的,我们很容易就能够想到使用“实例化于点上”这一节点,将砖块作为实例,放置于曲线的点上。

此时可以看到砖块的分布并不均匀,那么我们使用“曲线重采样”这一节点重新分布曲线上的点,这个节点可以选择如何指定采样类型。其中,“已解算”的含义为由电脑计算出我们使用的曲线的精度,然后自动采样。“数量”由我们手动输入采样数量,“长度”则是每间隔一定距离就采样。

显然,我们应使用“长度”,然后调整数值。

现在,我们需要为墙体添加高度,也就是竖直向上的延伸出更多的点,抑或是先竖直向上的延伸出更多的点然后在侧向延伸出曲线。然后将砖块实例化点上。使用网格直线,这里我们同样可以使用曲线直线,但是曲线直线默认不能直接调节点的数量,需要使用“曲线重采样”或“细分曲线”,而且长度和点的数量需要分开调整,即便我们使用“长度”作为采样依据,能够看见砖块之间的缝隙并不统一。相对的,网格直线的操作就很方便。

注意模式选择为偏移量,这两个模式之间的区别在于,偏移量以偏移的矢量为单位延伸出去,而端点则是设置两个端点的位置,然后填充点到线上。

这里我们选择将曲线实例化到直线上,原因等下会讲到。

这样,一个简单的墙体就出来了,移动一下看看。

显然,砖块的方向需要调整一下,让它沿着我们曲线的方向旋转。那么,什么是“曲线的方向”呢,不难想到,是曲线的切线。但是将“曲线切向”连接到旋转后我们发现,没有效果,这是因为我们没有调整旋转的角度,默认是0°。这里我们可以用“运算”来为它赋值,但这样只能让它旋转固定的角度,因此我们使用“对齐欧拉到矢量”节点,这个节点可以将物体的朝向对齐到矢量的方向。

这个节点可以更改轴向和轴心,观察砖块,不难想象出我们需要绕Z轴旋转并对齐到X轴,这里的轴均为局部轴,也就是物体的轴,对齐到X轴并不是对齐到全局X轴上,而是物体的X轴,也就是物体所“面对”的方向。因此,轴向选择X轴,轴心选择Z轴。

将“曲线切向”连接到矢量,这是因为“旋转”接口的含义是旋转的值,而“矢量”接口的含义是旋转的朝向,切向连接到矢量也即将砖块对齐到切向。

这里就要提到刚才的一个细节操作,也就是为什么要将曲线实例化到直线上,而不是直线实例化到曲线上。虽然看起来效果都一样,但是由于实例对象的不同,我们所创造出来的砖的定位点的矢量也就不同。

当我们将直线实例化曲线到上时如左图,曲线实例化到直线上时如右图

blenderblender

这两者的区别有很多,这里我们着重于他们点朝向上的差异,显然,左图的点大部分朝向为Z轴,而右图则为曲线切向,这就导致当我们在使用“对齐欧拉到矢量”节点时会产生相当多不必要的麻烦。

 

现在移动墙体就会发现,砖块的旋转已经达成我们想要的效果了

这样,一个效果还算过的去的墙就出来了,接下来就是一些细节上的问题。

 

首先我们需要解决的问题是,砖块的大小。这里我们选择直接调整立方体的大小,这样会方便我们后期对砖块进行进一步的塑形。

blender

然后就是奇数行和偶数行砖块之间的偏移。不难想到,只需要令偶数行或奇数行在曲线上偏移0.5个单位就能达成这种效果。那么,区分出奇数行与偶数行就是接下来的问题。

显然,奇偶的最大区别就在于能否被2整除,也就是说我们只需要分别计算出每个点在全部的点中是否为第偶数个点即可。

为此,我们需要使用“编号”节点,此时我们可以打开电子表格来辅助理解,“编号”的含义很简单,即模型中所有的几何体的编号,我们将编号连接到选中项,也就意味着将全部有编号的几何体全部分离。

而这显然不是我们要的结果,因此,我们使用模来挑选出那些能够被2整除的编号,也就是我们所需要的,偶数的编号。

这里的模的含义是,将一个数与另外一个数相除,若能够整除,则为真,否则为否,也就将输出1或0。

我们将编号连接,将第二个值改为2,此时,运算所输出的结果就是一组1010循环的数,连接到“分离几何体”的选中项,也就分离出了奇数行和偶数行。

选中项输出接口,也即分离结束后的几何体输出接口,就是偶数行。

反相输出接口,也就是被分离出去的几何体输出接口,就是奇数行。

我们将分离出的点再次连接到“实例化于点上”,然后合并这两个几何,就得到了我们想要的结果。

 

然后,我们需要令偶数行偏移,不难想到,我们需要偏移的对象是偶数行的曲线。而我们将使用“设置位置”来调整偏移量。

首先,我们需要知道每一个点的“位置”。为此,使用“编号上的场”这一节点,这个节点的意思是,对应编号的几何体的上下文信息,我们将“编号”与“位置”连接,此时这个节点的含义就变成了,每一个编号所对应几何体的上下文位置信息。

此时我们同样可以通过电子表格来辅助理解,如编号3,他的上下文位置信息就分别是2号和4号的位置信息。这里或许会有疑问,为什么不直接采集位置,而同时需要上下文?

这是因为我们需要知道下一个几何体的位置,才能令这一个几何体的位置移动到下一个。

显然,只采集信息是无意义的,那么我们就需要采集下一个物体的信息,然后混合这两个信息,通过设置位置将点移动到这两个位置之间。

 

将采集信息的部分复制,然后将编号加一,混合后连接到“设置位置”的位置。

通过调整混合的系数,我们可以调整偏移的量。

 

观察发现,场景中有一组移动的砖块,这是因为它是编号最大的那一组点,没有下一个点,也就只能和编号最小的点混合位置了,解决这个问题很简单,删除最后的点即可。

我们使用删除几何体,选择端点就行了,对于另外一行我们也可以进行同样的操作。

 

整理一下节点。

 

然后,令砖块产生一些变化,比如转转角度,有点起伏,随机一下形状。

 

我们先看角度变化,我们之前已经为砖块添加了旋转的节点,只需要接上就行了,不要忘记合并XYZ,方便起见,我们需要同时控制随机值的最大值与最小值,不难想到只需要这样连接即可。

观察场景发现,砖块的旋转角度好像没有达成想象中的效果,这是因为墙上的点实际上是一个实例,即之前的“网格直线”。

添加实现实例即可,这一节点的作用是将每一个几何体实现为几何数据,以便我们对每一个实例进行操作。

 

接下来则是起伏,使用“设置位置”。值得注意的是,我们需要使用“法向”节点来控制砖块的偏移方向,毕竟砖块不会横着移动是吧。

使用矢量运算中的缩放来控制法向偏移的大小。

 

而形状则最为简单,使用噪波纹理。这里我们需要提醒的是,噪波纹理的效果是将每一个几何体各自向XYZ轴的方向偏移0到1个单位,也就是说如果我们需要令物体在原地形变的话,需要添加一个运算节点,使噪波纹理的值减少0.5单位,然后同样使用缩放来控制形变的大小。

此时我们发现,形变的效果并不理想,这是因为每一个砖块只有八个点,形变起来效果并不明显,所以我们需要为立方体添加一个“细分网格”。

不要忘记实现实例。

 

如果你想要快速的调整各个值的话,只需要添加组输入,然后连接到对应的值就可以了。

最后,设置着色平滑,添加倒角,设置材质,就大功告成啦。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3