创建用于材质和着色器的 seExpr 表达式

您可以创建 seExpr 着色器表达式以修改指定给描述的材质和着色器。例如,您可以使用任意材质创建着色网络,然后使用 seExpr 着色表达式将颜色信息从着色器传递到头发修饰中的基本体。

若要执行此操作,您必须创建 xgen_seexpr 节点,以便表达式可以访问材质中的着色参数。该节点可以读取 Ptex 贴图并计算描述中的表达式。然后,xgen_seexpr 节点在渲染时将该数据的结果传递到材质。

本示例介绍如何通过将噪波添加到镜面反射度通道以使用 seExpr 表达式来修改着色器。

创建自定义着色器参数

  1. 在 XGen 窗口中,单击“预览/输出”(Preview/Output)选项卡。
  2. “预览/输出”(Preview/Output)选项卡中,转到“自定义着色器参数”(Custom Shader Parameters)部分。
  3. “名称”(Name)旁,键入 SpecNoise。
  4. 确保选择“浮点型”(Float)作为参数类型,然后单击

    Maya 将创建一个新的浮点类型着色参数,名为 SpecNoise

    接下来,创建一个噪波表达式来控制镜面反射颜色。

创建噪波表达式

  1. 单击着色参数旁边的图标 ,打开“XGen 表达式编辑器”(XGen Expression Editor)
  2. “XGen 表达式编辑器”(XGen Expression Editor)中,执行下列操作之一:
    • 若要使用示例“fbm”噪波表达式,请单击“采样数”(Samples)选项卡,然后浏览至“全局 > 颜色 > 程序 > 噪波 > fbm”(Global > Color > Procedural > Noise > fbm)
    • 若要创建简单的噪波表达式,请键入 rand(0.3, 1.3)*noise(0,1)
  3. 单击“接受”(Accept)

    接下来,您可以创建计算表达式的 xgen_seexpr 节点。

创建 xgen_seexpr 节点

  1. 打开“Hypershade”“窗口 > 渲染编辑器”(Windows > Rendering Editors)),然后选择指定给描述的着色器。
  2. “节点编辑器”(Node Editor)“窗口 > 节点编辑器”(Window > Node Editor))中,显示着色器节点连接。

    有关显示节点连接、创建节点和连接节点的信息,请参见节点编辑器基础知识

  3. 创建 xgen_seexpr 节点。
  4. 将节点的“输出值”(Output Value)连接到着色器节点的“镜面反射颜色”(Specular Color)输入。

    您还可以将 xgen_seexpr 节点连接到另一个颜色通道,如 Spec1cosine。

    接下来,向 xgen_seexpr 节点注册表达式。

向 xgen_seexpr 节点注册噪波表达式

  1. “节点编辑器”(Node Editor)中,选择 xgen_seexpr 节点。
  2. 在节点的“属性编辑器”(Attribute Editor)中的“表达式”(Expression)旁,键入 $SpecNoise。

    这会将该节点指向希望其计算的表达式。

  3. “自定义”(Customs)旁,键入 SpecNoise。

    这样就向该节点注册了该表达式名称。

  4. 在 XGen 窗口的“预览/输出”(Preview/Output)选项卡中,使用“自定义着色器参数”(Custom Shader Parameters)部分中的滑块控件调整 SpecNoise 表达式的输出值。

相关主题