节点材质

着色器节点通过将现有的着色器进行基本变换和批处理,显著地扩展了Blender的标准材质的潜力。

_images/node_materials_title.png

标准节点

Blend4Web支持所有标准的Blender节点,但他们中的一些工作的不够快,因此不建议在实时应用程序中使用。创建非常复杂的材质,尤其是使用大量的 Geometry 和 Texture 节点,也不推荐。

引擎能部分支持某些Cycles节点。本内容的更详尽描述在 相应章节.

标准节点的性能和支持度在表中说明。

节点名称

功能

支持

性能

摄像机数据

用于从活动的摄像头获取的数据

全部

平均

ColorRamp

用来产生梯度

B-Spline,Cardinal 和 Ease 插值模式不支持

平均

HSV合并

从给定的色相,明度和饱和度合成颜色

全部

平均

RGB合并

从给定的红色,绿色和蓝色通道值组合彩色

全部

高

扩展材质

用于将材质添加到节点程序。具有比基本 Material 节点更多的输入和输出通道

Ambient 和 SpecTra 输入不支持。 AO 输出不支持。

平均

伽玛

用于设置给定的彩色的伽马

全部

高

几何体

用于获取有关物体的几何信息

顶点色Alpha 输出不支持

不推荐大量使用这些节点

色调/饱和度

用于控制一个给定颜色的色相和饱和度

全部

底

反转

反转给定的颜色

全部

高

灯光数据

用于从特定光源获取信息

Shadow 输出不支持

平均

贴图映射

用于转换纹理坐标

全部

平均

材质

用于一个标准的材质添加到节点程序

全部

平均

数学

用于与给定的值进行数学运算

全部

高

混合RGB

混合两个给定的颜色

全部

Burn,Dodge,Value,Saturation,Hue 和 Color 模式性能低,其余模式性能高。

法线

用于生成法线矢量

全部

高

法线贴图 [1]

用来插入法线贴图

全部

平均

输出

输出节点程序的结果

全部

平均

粒子信息

用于获取有关粒子系统信息

在 Emitter 型粒子系统的材质

平均

RGB

生成一个RGB颜色

全部

高

RGB 曲线节点

设置一个曲线以修改一个给定的色

全部

平均

RGB到BW

给定的RGB颜色去饱和

全部

高

HSV拆分

拆分给定的颜色为色调,饱和度和值

全部

高

独立RGB

分离给定颜色为红,绿和兰通道

全部

高

挤压值

挤压给定值

全部

高

纹理(Texture)

设置纹理

全部

不推荐大量使用这些节点

数值

生成一个数值

全部

高

矢量曲线

设置一个曲线以修改一个给定的矢量

全部

平均

矢量数学

用于与给定的两个向量进行数学运算

全部

高

矢量变换 [2]

在世界,相机和物体坐标空间中转换矢量,点或法线。

全部

平均

[1]

这个节点的法线贴图使用的 Color Space 参数需要设置为 Non-Color. 如果没设置会引起各种不可预见的效果(尽管不会将引起弄崩溃)

[2]

如果至少一个内部参数 Space to convert from... 或 Space to convert to... 设置为 Object, 那么所有使用这个材质的物体都会被考虑为 动态.


请牢记材质中的一些特定节点有着数量上的限制使得节点材质具有一定的局限性,有关材质中的特定节点的数目。这些限制在 这里 作了介绍。

游戏引擎特定节点

引擎特定的节点扩展标准节点以支持额外的功能。这些节点采用特殊命名的名称和输入格式创建为节点组(节点组 或 节点树)。为方便起见,被打开时,所有的特殊节点已经添加到Blend文件。

_images/node_materials_nodes.png

钳制(B4W_CLAMP)

节点限制输出值。其结果是所有的输出矢量分量取从0到1中间的值。

_images/node_materials_clamp.png

输入参数

图像

关联向量

输出参数

图像

钳制向量

夜光输出(B4W_GLOW_OUTPUT)

应用 发光效果 到节点材质。除了 B4W_GLOW_OUTPUT 节点,该节点材质应具有 输出 节点。

_images/node_materials_glow_output.png

输入参数

发光颜色

发光颜色

系数

发光的比例。 系数 \(\in [0, 1]\).

  • 系数 = 0 - 没有发光。

  • Factor \(\in (0, 1]\) - 有一个发光,与 发光颜色 同色。

质量层级(B4W_LEVELS_OF_QUALITY)

设置根据当前的图像质量设置输出颜色。可用于,例如,与如果应用程序在移动装置上运行用更简单材质的更换复杂材质。

_images/node_materials_levels_of_quality.png

参见

品质配置

输入参数

高质量

节点链接这个参数到 Color 参数高,最高的质量使用的情况。

低

节点链接这个参数到 Color 参数低质量的使用情况。

系数

此值指定什么质量设置(HIGH 或 LOW)将在Blender视口中可见。可以从0变化到1,如果该值低于0.5时,HIGH 设置将是可见的,如果它是0.5或更高时,LOW 设置将是可见的。

视差(B4W_PARALLAX)

该节点使用高度贴图实现纹理坐标偏移。

_images/node_materials_parallax.png

输入参数

UV

源纹理坐标。

高度贴图

RGBA纹理压缩到alpha通道的高度图。

缩放

纹理坐标偏移的因子。

步进

迭代产生纹理的步数坐标偏移。这个值越大最后的质量越好。

LOD距离

从相距距离最远开始,效果能被观察到。

输出参数

UV

结果是纹理坐标用着输入纹理节点。

反射 (B4W_REFLECT)

计算入射矢量和法线矢量之间的反射方向。可用方块贴图应用到物体。

_images/node_materials_reflect.png

输入参数

矢量

入射向量。应连接至 Geometry 节点的 View 插座。

矢量

法向量。需要进行归一化以达到所期望的结果。应连接至 Geometry 节点的 Normal 插座。

输出参数

矢量

反射向量。应该连接到包含立方贴图的 Texture 节点的 Vector 插座。

折射(B4W_REFRACTION)

一个物体产生折射效果。这种效果仅在Blend4Web引擎,而不是在Blender的视口。

_images/node_materials_refraction.png

输入参数

法线

添加扰动法线贴图。

折射凹凸

扰动强度值。

默认值是0

输出参数

Color

对物体后面的材质产生扰动。

注解

需要在 Render > Reflections and Refractions 面板设置 Refractions 选项值为 AUTO 或 ON 。物体的透明度类型必须设置为 Alpha Blend.

参见

透明

替换(B4W_REPLACE)

节点替换取决于工作环境(即Blender视口或Blend4Web)的输入。在Blender工作时,Color1 输入被连接到 Color 输出和 Color2 输入被忽略。相反在引擎中输入被替换时(这时 Color1 被忽略,Color2 被连接到输出)。节点意欲在视口中显示的一个节点的结构和其他 - 在引擎中。

_images/node_materials_replace.png

作为一项规则是用于法线贴图。 Blender的节点材质不支持坐标的切线空间。因此,唯一可能的在视口中来显示法线贴图正确的方法是在 Material 节点内的使用。

输入参数

Color1

节点的设置,这将是在Blender视口中可见。

Color2

节点设置,就可以在Blend4Web引擎可见。

输出参数

Color

应连接到 Material 或 扩展Material 节点的 Color 插座。

平滑步进(B4W_SMOOTHSTEP)

进行基于第一值的两个输入值之间的平滑内插。

_images/node_materials_smoothstep.png

输入参数

值

决定插值的平滑度的值。

Edge0

首个插值。

Edge1

第二插值。

输出参数

值

插值。

注解

对于正确的插值,输入 Value 必须在 Edge0 和 Edge1 之间。

时间(B4W_TIME)

提供时间表,从引擎起动计数(以秒计)。可用于在节点的材质,如UV坐标动画任何参数,混合的因子,透明度等。

_images/node_time.png

输入参数

无

输出参数

值

从引擎起动开始经过的时间(秒)。

半透明(B4W_TRANSLUCENCY)

节点实现了一个半透明效果(只对于光源)的薄的物体,如布,树叶,纸张等的效果,由两部分组成:1)物体侧的增亮这是相对的光源和2)光点就在光源处的外观。

_images/node_materials_translucency.png

输入参数

Color

它定义了材质异质性单通道纹理 - 白色表示最大的半透明效果,而黑色代表不存在。白色默认情况下使用。

背面因子

为这是相对的光源侧的材质颜色校正系数。它描述了半透明区域的颜色丰富性的效果。

  • 背面系数<1 - 增亮

  • 背面系数= 1 - 无修正

  • 背面系数> 1 - 变黑

默认值是0

光点硬度

光点模糊的系数。这个值越大就越小,当场和更清晰的现货边缘。缺省值为1000。

斑点强度

光斑强度。这个值越亮越大,光点。默认值是1。

光斑漫射系数

光斑的颜色材质漫反射颜色影响。

  • 光斑漫射系数 = 0 - 光斑有漫反射颜色

  • 光斑漫射系数 = 1 - 光斑颜色为白色

默认值是0

输出参数

半透明

输出应被连接到 扩展Material 节点的 Translucency 输入。

注解

如果 网格法线被编辑了 ,这个节点不会正常工作。

矢量视图(B4W_VECTOR_VIEW)

该节点将一个向量坐标转换到相机的空间。转换是必要的,因为引擎定义矢量坐标系在世界空间。如果正常矢量是由该节点转变它应该只对影响,不用于连接到 Material 或 扩展Material 节点的输出。

_images/node_materials_vector_view.png

输入参数

矢量

向量的坐标在世界空间。

输出参数

矢量

矢量坐标在摄像机空间。

线性到 SRGB和SRGB线性(已取消)

从sRGB到线性空间转换颜色反之亦然。 从版本15.04这个功能已经被宣布弃用。在较新的版本,具有2.200的数值内置 Gamma 节点应使用将颜色从sRGB转换为线性空间,并用0.455的值相同的节点将颜色从线性空间转换为sRGB。

_images/node_materials_gamma.png

Cycles 节点

注解

Cycles节点的支持是不建议在生产中使用环境的实验性功能。

此外应指出的是,在 Blend4Web 中使用Cycles节点会产生相似的图像,但不是完全跟使用Cycles渲染器本身创建的图像一样。

引擎支持以下 Cycles 节点︰

  • 材质输出 (只支持 Surface 和 Displacement 输入);

  • BSDF Diffuse;
  • BSDF Glossy (只支持 GGX 分布; Roughness 参数不影响反射);

  • 透明BSDF;

  • Mix Shader;
  • Fresnel;
  • Layer Weight;
  • Image Texture;
  • Environment Texture;
  • Object Info;
  • Bump.

部分支持以下节点︰

  • Principled BSDF

    _images/node_materials_principled_bsdf.png
    • Roughness, Metallic, Specular, Normal, Transmission and IOR inputs are supported;
  • Texture Coordinates (From Dupli 参数不支持);

  • UV Map (From Dupli 参数不支持);

  • Geometry ( Pointness 和 Parametric 参数不支持).

  • Emission (不会影响场景中的打灯效果).

Cycles 节点也支持 世界 物体。但是,现在节点材质不会影响到环境的颜色。

其他 Cycles 节点在大多数情况下在不会在Blend4Web中跟他们在Blender中一样良好工作。他们不会工作也可能引起材质的不正常显示和工作。但是,使用这些节点不会在应用程序工作流中导致不稳定。

限制

节点材质可能很复杂,但它们的复杂性受您使用的硬件功能的限制。大部分时间可能不太明显,但是如果你做了一个非常复杂的材质,你可能会超过纹理数量限制和向量变量(顶点着色器用来把数据交给片段着色器)你的系统允许在一个着色器中使用的量。即使你不这样做,你的应用程序的一些用户可能没有像你一样强大的设备,所以他们会遇到你不会遇到的问题。

如果你想要知道如何你的场景会表现在低端的设备上,但是你又刚好没有这样的设备,这里有个非常有用的选项,称为 最小功能模式. 它是原产于 场景预览器 可以在 工具 & 处理错误 面板中找到。

您的设备所支持的变向量和纹理数量可以在 WebGL 报告 web 页访问 SDK索引 页上查看.

下面两个表列出了各种材质节点及其所在的纹理和变向量有多少是引擎将分配给他们的。

变向量

节点 / 影响

分配变向量

始终保留

3

Input -> Texture 节点(如果 法线 输出被使用)

1

Blend4Web -> Parallax 节点

1

Vector -> Normal Map 节点

1

Input -> Material 节点 (如果 Shading -> Tangent Shading 选项在材质上启用)

1

Input -> Geometry 节点 (如果 UV 输出被启用)

1

Input -> UV Map cycles 节点

1

Input -> Texture Coordinate cycles 节点 (如果 UV 输出被使用)

1

Input -> Geometry 节点 (如果 Vertex Color 输出被使用)

1

在带有 Alpha 混合 材质的物体上有阴影

1 - 4

(取决于阴影级联或阴影脚轮的数目)

不透明 材质物体上的阴影

材质的折射效果

平面反射在物体上启用

1

材质的折射效果

2

纹理

节点 / 影响

已分配纹理

Blend4Web -> Parallax 节点

1

Input -> Texture 节点

1

Texture -> Environment Texture cycles 节点

1

Vector -> Vector Curves 节点

Color -> RGB Curves 节点

Converter -> Color Ramp 节点

1

(材质中节点的数目并不重要)

在带有 Alpha 混合 材质的物体上有阴影

1 - 4

(取决于阴影脚轮的数量和/或影栅)

不透明 材质物体上的阴影

1

材质的折射效果

2

World -> Environment Lighting -> SkyTexture 为世界启用

1

在物体上反射效果

1