首页 | 资讯 | 财经 | 公益 | 彩店 | 奇闻 | 速递 | 前瞻 | 提点 | 网站相关 | 科技 | 热点 | 生活 |
Blender学习日记(七)——Bevel倒角节点的运用及模型曲率计算、曲率节点

发稿时间:2023-08-09 09:53:12 来源: 哔哩哔哩
1、前言

编写:舟午YueMoon


(相关资料图)

关键词:法线、倒角、向量、空间向量、三角函数、点积、曲率节点、倒角节点

在Blender中制作材质时我们可能需要计算模型的曲率,达到给模型边角进行破损处理的目的。

但在Blender的材质节点环境中并没有OC和Redshift那样的曲率节点,所以我们需要手动创建一个节点组,用来计算模型边角的曲率,将有棱角的地方和平滑的地方分离出来。

如果你不想了解原理,只想知道这个节点应该怎么连的话,你可以直接跳转到文末的最后一张图。

以正方体和棱角球为例:

最终结果演示:

注意:本方案中使用到了Bevel(倒角)节点,该节点仅在Cycles渲染器中生效,故本方案不适用于Eevee渲染器。

2、倒角节点原理

官方文档关于Bevel节点的说明:倒角节点 — Blender Manual

简而言之,Bevel节点就是通过对法线图进行模糊处理而对模型表面产生倒角的效果。(下图来自官方文档)

在材质节点中新建一个Bevel节点,先将Radius(半径)属性归零,直连输出,得到下图效果。对于正方体而言,它正常的法线图应该是边角分明:

而Bevel节点可将法线图进行高斯模糊处理进而产生倒角,用Radius属性控制模糊半径(即倒角半径):

此时,模型表面被Bevel节点模拟出了倒角。(注意,这个效果只是Bevel节点影响法线贴图而模拟出的倒角,模型本身并没有任何变化,毕竟这里只是材质节点空间,不是几何节点空间……)

法线夹角图解:

3、Blender中的法线和空间向量

在Blender节点中,紫色的点输出的并不是单纯的一个数字,而是一个由三个数字组成的数组,它代表一个空间向量(或空间矢量,英文为Vector),这个向量代表模型上某个表面的法线朝向。

RGB三色分别代表XYZ三个方向,但由于XYZ方向有正有负而颜色却不能为负,所以当方向为负时该位置显示为黑色,但这并不代表该位置的法向量为零向量,这里的数据依然可以被Blender计算,在图中可以看到绿色面的对面为黑色,表示该向量的方向为(0,-1,0)。尝试在此时旋转正方体,理解为什么会出现颜色变化。(本文中默认向量长度为1)。

4、通过点积计算达到目的效果

回到本文目的,当我们使用Bevel节点对模型表面的法线图产生模糊时,Bevel法线与模型本身的法线在模型棱角处产生了区别,我们需要做的是通过操作将这些法线不相同的地方计算出来,在模型表面让法线方向相同的地方表现为黑色,法线方向不同的地方表现为白色。即可达到本文中图二的效果。

空间中两向量必然存在一夹角,我们用θ表示,则0°≤θ≤180°(0≤θ≤π)。

在本文的情况下,Bevel法线与本体法线的夹角应该低于90°,即0≤θ<π/2。

我们使用Blender材质节点中Vector Math(矢量运算)节点中Dot Product(点积)运算:

点积为两向量长度的乘积乘以夹角的余弦值(狂补高中数学):

不难看出点积可以直接表达出两向量的余弦值,从而将向量夹角输出。

此时,当物体的棱角越尖,θ角越大,点积值越小,并且θ会在Bevel(倒角)节点中设定的半径范围内柔和过渡至0。

但由于当0≤θ≤π/2时,θ角的余弦值随θ角的增大而减小,所以如果直接计算两向量点积得出的结果应该是物体平滑的地方白,有棱角的地方黑,所以我们还需要用Color Ramp(颜色渐变)节点对点积计算结果进行反向,顺便调整。附一张来自网络的余弦函数图:

于是可以得出节点连接方式如下:

也可以用Geometry(几何数据)节点中的Normal(法线)属性替代Bevel节点,没啥区别

标签:

责任编辑:mb01

网站首页 | 关于我们 | 免责声明 | 联系我们

生活晚报网版权所有

Copyright @ 1999-2017 www.news2.com.cn All Rights Reserved豫ICP备2022016495号-7

联系邮箱:939 674 669@qq.com