材质类拼图参考 - Soft8Soft
Description: 如何用Verge3D拼图来管理材质和纹理。

# 材质 | Materials

此类拼图用于操作场景中材质和纹理。

## 内容

- 拼图参考
  - assign material(指定材质)
  - replace texture(替换纹理)
  - get texture param(获取纹理参数)
  - set color(设置颜色)
  - get color(获取颜色)
  - set value(设置数值)
  - get value(获取数值)
  - material from(从...获取材质)
  - total materials(材质总数)
  - texture from text(从文本创建纹理)
  - color picker(拾色器)
  - compose color(组合颜色)
  - generate normal map(生成法线贴图)
  - enable/disable wireframe(启用/禁用线框渲染)

#

## 拼图参考

#

### assign material(指定材质)

为对象指定材质，完全取代原来的材质。也适用于对象列表，组（或者组的列表）以及 all objects(所有对象) 拼图。

此拼图需要一个必须指定给某个现有模型（可以隐藏）的材质，类似于色卡：

此外，源网格和目标网格应具有相同的UV和颜色属性布局，例如在Blender中：

默认情况下，"assign material"拼图不支持多材质网格，只会替换找到的第一个材质。启用 multi-material index(多材质索引) 并指定 index(索引) 输入（例如Blender中的材质槽编号），可将材质指定给正确的多边形。

在某些情况下，即当法线贴图材质分配给没有法线贴图的对象时，此拼图可能会导致材质完全变黑。如果发生这种情况，请在导出设置中 禁用 网格属性优化：

Blender
3ds Max
Maya

#

### replace texture(替换纹理)

将指定材质中的纹理替换为从提供的图片URL、视频资产或画布中加载的纹理。

此拼图支持通过齿轮图标激活的高级选项：

enable "once ready do" slot(启用"一旦准备好"插槽)
  显示/隐藏拼图的插槽，这些插槽将在纹理完成加载后立即执行。
flexible texture input(灵活的纹理输入)
  允许在"texture(纹理)"输入中使用 text puzzles(文字拼图) 以替换默认下拉菜单。
prevent texture sharing(防止纹理共享)
  在指定新图像之前始终创建源纹理的副本。这可以防止将同一图像指定给在不同材质之间共享的纹理。

有关使用示例，请查看 Custom Image 演示（也可在资源商店中找到）。

要使用透明视频，请将内容编码为WebM或HEVC格式，并将材质类型设置为 Blend（请参见： Blender/ Max/ Maya 中的透明度）。

#

### get texture param(获取纹理参数)

在指定材质的纹理中检索以下参数：宽度、高度、长宽比或尺寸。

#

### set color(设置颜色)

在指定材质中设置颜色参数的R、G和B分量。

Blender

您可以在基于节点的材质中添加 RGB 节点，它们的名称将显示在下拉菜单中。此外，BSDF Principled、BSDF Diffuse和BSDF Glossy节点的 Base Color（或 Color）输入也可以访问。

如果是 符合glTF标准的PBR材质，BaseColor(基础色) 和 Emissive(自发光) 输入只能通过此拼图访问。

3ds Max

您可以在（标准或物理）材质中添加 Controllers(控制器)，它们的名称将显示在下拉菜单中。此外，标准或物理材质节点的 Diffuse（或 Base Color）颜色输入也可以访问。

如果是 符合glTF标准的PBR 材质，Base Color(基础颜色) 和 Emission(自发光) 输入只能通过此拼图访问。

Maya

您可以在材质中添加 Color Constant(颜色常数) 节点，它们的名称将显示在下拉菜单中。

如果是 符合glTF标准的PBR 材质，color(颜色) 和 emissive(自发光) 输入只能通过此拼图访问。

此拼图也可以用来修改环境着色器。在下拉菜单中，环境着色器的名称以"Verge3D_Environment"开头。

关于Verge3D用户可用材质的更多信息，请参考本手册的材质系统概述章节：Blender、3ds Max、Maya。

#

### get color(获取颜色)

获取指定材质中的颜色参数：

- red — 红色分量。
- green — 绿色分量。
- blue — 蓝色分量。
- rgb — 以矢量/列表值表示的RGB颜色分量。
- css (hex) — CSS样式字符串，如 #AA00FF。
- css (rgb) — CSS样式字符串，如 rgb(127, 0, 255)。

指定 flexible color input 参数，可将自定义材质参数作为字符串值指定。

#

### set value(设置数值)

为指定材质设置数值参数。

Blender

您可以在基于节点的材质中添加 Value 节点，它们的名称将显示在下拉菜单中。

如果是 符合glTF标准的PBR 材质，可以通过此拼图访问以下输入：metalness、roughness、bumpScale、emissiveIntesity 和 envMapIntensity。

3ds Max

您可以在材质（标准或物理）中添加 Controllers(控制器)，它们的名称将显示在下拉菜单中。

如果是 符合glTF标准的PBR 材质，可以通过此拼图访问以下输入：Metalness、Roughness、Bump Scale、Emissive Intensity 和 Environment Map Intensity。

Maya

您可以在材质中添加 Float Constant(浮动常数) 节点，它们的名称将显示在下拉菜单中。

如果是 符合glTF标准的PBR 材质，可以通过此拼图访问以下输入：metalness、roughness、bumpScale、emissiveIntensity 和 envMapIntensity。

此拼图也可以用来修改环境着色器。在下拉菜单中，环境着色器的名称以"Verge3D_Environment"开头。

关于Verge3D用户可用材质的更多信息，请参考本手册的材质系统概述章节：Blender、3ds Max、Maya。

#

### get value(获取数值)

获取指定材质的数值参数。指定 flexible value input 参数，可将自定义材质参数作为字符串值指定。

#

### material from(从...获取材质)

检索指定给对象的材质名称。默认情况下，如果同一对象有多个材质，则返回第一个材质。

此拼图支持通过齿轮图标激活的附加选项：

multi-material index(多材质索引)
  默认情况下，"material from"拼图不支持多材质网格，只会返回找到的第一个材质。启用 multi-material index(多材质索引) 并指定 index(索引) 输入（例如Blender中的材质槽编号），可从多材质网格中获取所需的材质。
return unique material id(返回唯一材质ID)
  默认情况下，"material from"拼图返回人类可读的材质名称。然而在某些情况下，例如同名材质和/或共享材质，您可能只想选择单个对象的材质，而不是一次更新所有材质。为此，您可以启用 return unique material id(返回唯一材质ID) 复选框，使此拼图返回唯一的材质标识符，而不是其名称。您可以使用此ID（看起来像这样：5c464bf0-043a-40ee-b864-5c026436d7de）将其传递给其他材质拼图。

#

### total materials(材质总数)

检索指定给对象的材质数量。

例如，要将相同的材质指定给多材质对象，您可以使用以下拼图：

#

### texture from text(从文本创建纹理)

使用指定文本创建图像，并以 Data URL 格式返回。

#### 参数：

text
  输入文本。
width, height
  生成图像的尺寸（以像素为单位）。建议使用2的幂值（256、512、1024等）。
font family
  font-family CSS属性用于渲染文本。您可以使用系统字体如"Arial"，或通过 load font(加载字体) 拼图加载的自定义字体。
size
  在生成图像上绘制的文本大小（以像素为单位）。
horizontal align
  文本在生成图像上的水平对齐方式：center、left、right。
vertical align
  文本在生成图像上的垂直对齐方式：middle、top、bottom。
line height
  文本的行高（以像素为单位）。如果设置为 0，则自动检测。
justify
  如果启用了两端对齐，则在必要时在单词之间插入空格。

#### Box参数（通过"齿轮"图标激活）：

激活后，文本将在一个框容器内渲染，其大小和位置可以使用以下参数调整：

box x
  文本框左边距（以像素为单位）。
box y
  文本框上边距（以像素为单位）。
width
  文本框宽度（以像素为单位）。
height
  文本框高度（以像素为单位）。

#### Color参数（通过"齿轮"图标激活）：

text color
  文本颜色。
background color
  背景颜色。

在下面的示例中，从文本生成的图像通过 replace texture(替换纹理) 拼图用在了模型上：

#

### color picker(拾色器)

将选定的颜色作为CSS值返回。

#

### compose color(组合颜色)

从线性RGB（或启用alpha输入的RGBA）分量组合颜色，并将其作为CSS值返回。

#

### generate normal map(生成法线贴图)

将图像转换为法线贴图，并以 Data URL 格式返回。

参数：

(source image)
  图像URL，通常是黑白高度图。也可以提供 Data URL 格式的图像，如 texture from text(从文本创建纹理) 拼图的输出。
strength
  影响高度的线性因素。推荐值：0.01 到 5。
level
  影响高度的指数因素。推荐值：4 到 10。
blur / sharp
  高斯滤波器中的模糊/锐化系数。推荐值：-10（模糊）到 10（锐化）。
filter
  用于边缘检测的Sobel或Scharr算法选择器。
invert R
  在法线贴图的R通道中反转方向。目前，Blender、3ds Max和Maya必须禁用此功能，但将来可能需要对其他支持的工具启用。
invert G
  在法线贴图的G通道中反转方向。为与3ds Max的法线贴图空间兼容，必须启用此功能。但对于Blender/Maya，必须禁用。
invert height
  更改高度的解释方式，使较暗的像素对应较低的高度。

在下面的示例中，从加载的图像中生成的法线贴图通过 replace texture(替换纹理) 拼图用在了模型上：

#

### enable/disable wireframe(启用/禁用线框渲染)

为指定材质启用或禁用线框渲染。可用作非写实渲染技术、调试或性能优化。

## 在使用拼图时遇到困难？

欢迎您随时在 论坛上提问！您还可以加入中文用户社区QQ群(171678760)，在线寻求帮助。