材质编辑器参考

指导如何使用材质编辑器创建着色器。

Windows
MacOS
Linux

材质编辑器(Material Editor) 是一个基于节点的图形界面,它允许你创建着色器,这些着色器可以应用到您的几何体,比如静态和骨架网格体,或者与其他系统一同使用(比如级联) 以创建有趣的材质。

在这个页面中,您将了解一些可以与在使用材质编辑器时遵循的一般良好惯例一同执行的功能, 如使用注释框指出您的材质网络的特定部分在做什么,使用变更路线节点清理引脚连线让您的网络更容易阅读, 当您看到错误的材质统计窗口时该做什么等等。

打开材质编辑器

可以通过 双击 任何材质资源或通过内容浏览器中的 右键单击 上下文菜单打开材质编辑器。当执行任一操作时, 该特定材质将在材质编辑器中打开以进行编辑。

注释材质表达式网络

使用注释是记录您的材料在做什么的好方法,使您和其他人更容易理解复杂的材质图表中发生的情况。

有两种方法可以给您的材质添加注释;当您悬停在一个材质节点上时,可以使用 描述(Desc) 属性或其注释气泡(…)向单个节点添加文本, 或者使用注释框来封装材质图表的较大部分。

向单独节点添加描述

每个材质节点包含一个 描述(Desc) 属性,该属性可通过其 详细信息(Details) 面板使用。此属性作为艺术家添加详细描述的一种方式而存在, 并用于描述某个特定节点的作用。使用此属性时,当鼠标悬停在节点上,文本将显示在文本气泡中。

您可以通过以下操作向节点添加文本描述:

  • 从材质图表中选择它,然后在 详细信息(Details) 面板中找到要输入文本的 描述(Desc) 属性。

  • 将鼠标悬停在节点上,然后单击 文本气泡(…)以输入您的描述。

此外,如果希望注释始终可见,可以单击文本气泡中的 Push Pin(@@@) 按钮,使其保持可见,并且在不再悬停在节点上时 不会最小化。

使用注释

注释是另一种对您的材料网络的某些部分正在做的事情做描述性注释的方式。创建它们将使您能够将注释框扩展到一组多个节点周围, 从而使其成为描述整个网络所有部分的完美方式,而不是使用 描述(Desc) 属性来描述单个节点。

注释以文本条幅的形式显示在注释框的顶部。此文本不会随着图表的缩放级别进行缩放,因此即使缩放到很远, 您仍然能够阅读注释描述。

要创建注释框,可以执行以下操作:

  • 当鼠标在材质图表上时,按 C 键盘快捷键。如果在图表中选择了任何节点,则注释框将缩放以包含所选节点。

  • 您可以右键单击并使用材质图表上下文菜单选择 新注释(New Comment) 以添加一个注释框。

可以用您的注释框做一些其他事情:

  • 在注释框中捕获的任何节点都可以通过拖动组注释文本来移动,从而移动其任何节点。可以通过拖动注释框的边缘来调整框架的大小,以添加其他节点。

  • 可以调整注释框的颜色,使其更直观。您可以使用 详细信息(Details) 面板设置 注释颜色(Comment Color) 属性,使用色轮选择颜色或输入特定的RGB值。

  • 您还可以通过双击注释文本条幅,或者选择注释框,然后在 详细信息(Details) 面板中修改 文本(Text) 属性来重命名您的注释。

实时预览、实时节点和实时更新

ToolbarLiveButtons.png

在对网络进行更改时,实时从每次更改中获得即时反馈是很有用的。材质编辑器提供了两个功能,可以为您的网络提供即时反馈; 实时预览(Live Preview)实时节点(Live Nodes)实时更新(Live Update)

这些选项之间的区别乍一看可能不明显,但它们各自执行一个特定的任务,以实时查看您的材质。

  • 实时预览(Live Preview)- 此选项允许任何更改在材质预览(Material Preview)窗口中自动实时更新,而无需使用 保存(Save)应用(Apply) 按钮。

  • 实时节点(Live Node)- 此选项允许节点所做的任何常量更改,例如用于平移器的材质表达式,以便它们在图表中实时回放。

  • 实时更新(Live Update)- 此选项允许网络中的每个节点在进行更改时重新编译其着色器。这些更改包括新节点的创建、节点的删除、节点连接和断开以及属性的更改。这种重新编译是必要的,以便在该节点绘制的材质预览保持为最新。然而,重新编译这些中间着色器可能很耗时,尤其是当您的材质包含较大的网络时。如果每次更改之后都会经历长时间的等待,那么您可能需要停用实时更新(Live Update)选项。

以下面的示例为例,一个很棒的火箭外壳的平移纹理乘以一个矢量参数,用于提供颜色。

LiveNodesLiveUpdate.png

  • 在本例中,激活 实时节点(Live Node) 将导致火箭纹理在图表中节点的预览缩略图中实时平移。如果 实时节点(Live Node) 被停用,纹理将保持静止,即使平移器让它移动。但是,当您在图表区域中移动鼠标时,您可能会注意到一些小更新。

  • 如果要将颜色从青色更改为紫色,则只有在启用 实时更新(Live Update) 时才会看到更改。禁用实时更新(Live Update)后,即使颜色属性确实发生了更改,节点上也看不到颜色的更改。 以下面的示例为例,一个很棒的火箭外壳的平移纹理乘以一个矢量参数, 用于提供颜色。

另外,当 实时更新(Live Update) 被停用时,您可以按 空格键 手动强制更新所有预览。通过禁用 实时更新(Live Update),然后在您想查看更改时按下空格键, 可以实现快速迭代。

变更路线节点

RerouteNode.png

当制作复杂的材质时,有时您的着色器网络会变得难以读取或理解,因为连接线会与您的材质网络的大部分重叠或交叉, 以连接不同的输入。变更路线 节点使您能够轻松地组织和清理着色器网络,而不影响性能或添加到指令计数, 因为这些都是纯可视化的。

要在材质编辑器中添加 变更路线 节点,可以执行以下操作:

  • 从右键单击的 上下文菜单(Context Menu) 中或 实用工具(Utility) 类别下的 材质调色板(Material Palette) 中,您可以拖入 添加变更路线节点(Add Reroute Node) AddRerouteNodeCM.png

  • 双击 连接线以内联方式 插入 新的变更路线节点。

编译器错误

每次对材质网络进行更改时,都必须对材质进行编译以查看更改。如果网络中表达式的任何必需输入没有连接,或者传递的数据类型错误, 就会发生编译器错误。

这些类型的错误显示在两个地方。

  • 抛出错误的节点将在其底部显示"错误!(ERROR!)"。

  • 统计数据(Stats) 窗口将显示抛出的错误,该错误导致材质无法编译。如果您的统计数据(Stats)窗口没有打开,您可以通过转到 窗口(Window) > 统计数据(Stats) 来打开它。

编译器错误通过提供遇到的有关节点表达式类型的信息和对错误的描述,让您知道存在问题以及该问题是什么。

error_highlight.png

在此图像中,MakeMaterialAttributes节点使用法线(Normal)输入属性抛出一个错误,如下面的统计数据(Stats)窗口所示。

材质图表搜索

材质编辑器中的搜索功能使您能够快速地在材质网络中找到任何节点(包括注释),这些节点的描述中包含特定的文本片段, 或者特定于不同类型的节点的某些其他属性。这样就很容易向节点添加标识关键字并在稍后跳转到它们, 而无需杂乱地在图表中的节点网络中进行筛选。

您可以通过转到 窗口(Window) > 查找结果(Find Results) 来打开这个选项卡。

在搜索框中键入完整或部分关键字,将对在您的材质图表中呈现的节点的属性执行搜索。当前选中的结果将显示在视图中 并高亮显示。

根据以下属性值执行搜索:

搜索的属性(Searched Properties)

表达式类型(Expression Type)

描述(Desc)

所有节点(All Nodes)

纹理(Texture)

纹理样本(Texture Sample)

参数名(ParamName)

参数(Parameters)

文本(Text)

注释(Comment)

字体(Font)

字体样本(Font Sample)

材质函数(Material Function)

材质函数调用(MaterialFunctionCall)

还可以通过在搜索中使用"NAME="开关对特定类型的表达式执行搜索。例如,要找到所有纹理样本, 可以使用以下搜索:

NAME=texture

当在 搜索(Search) 面板中单击一个新的匹配项时,如果它原本不可见,则将在图表中显示出来。

要清除搜索,只需按下 清除(Clear)(X)按钮。

Tags
Select Skin
Light
Dark

Welcome to the new Unreal Engine 4 Documentation site!

We're working on lots of new features including a feedback system so you can tell us how we are doing. It's not quite ready for use in the wild yet, so head over to the Documentation Feedback forum to tell us about this page or call out any issues you are encountering in the meantime.

We'll be sure to let you know when the new system is up and running.

Post Feedback