用户 MEL 脚本笔刷设置

对于任何笔刷节点,以下选项将在“Paint Effects 笔刷设置”(Paint Effects Brush Settings)窗口和属性编辑器中显示为“管”(Tubes)部分的子集。

可以编写 MEL 脚本,这些脚本会在笔刷的生长模拟过程中应用效果。有两种类型的脚本:创建脚本和运行时脚本。

通常,您需要修改 Maya 脚本目录中提供的样例脚本,如下所示:

  1. 从 Maya 脚本目录复制所需函数的 MEL 文件:

    (Windows 和 Linux)mayapath/scripts/paintEffects

    (Mac OS X) mayapath/Maya/Contents/scripts/paintEffects

  2. 将文件粘贴到本地脚本目录中,然后重命名它。
  3. 修改该函数。更改函数名称以与文件名前缀(例如 leafDroop)匹配。请勿修改函数的声明(其输入参数列表)。
创建脚本(Creation Script)

创建脚本将覆盖普通的管创建例程,从而覆盖许多控件。在 Maya 脚本目录中提供了以下样例创建脚本:

  • paintCreateFunc.mel – 模拟普通的管创建。
运行时脚本(Runtime Script)

每次将新分段添加到管时,都会调用运行时脚本。通常,需要做的大多数事项会使用运行时脚本。Maya 脚本目录中提供了以下样例运行时脚本:

  • paintRuntimeFunc.mel – 在管的底部创建两片叶,并应用随机摆动。
  • paintCollideFunc.mel – 使管与一个两单位球体碰撞,该球体位于 0, 1, 0。可以使用该函数来创建一个新函数,后者将球体的位置绑定到场景中的某个对象。
  • leafDroop.mel – 使所有叶向下垂落。可以使树上的重力为负值,这样树会始终向上生长,但使叶向下生长(如果不生成次分支,该函数就是可用作新函数的模板的最简单函数)。
  • widthNoise.mel - 使宽度沿着管以随机的方式变化。它仅影响基础管和细枝,而不影响叶或花。
    注: 创建脚本不能用作运行时脚本,反之亦然。

    使用运行时函数时,复杂对象的线框重画速度可能较慢,因为会为每个管分段调用该函数。

运行时回调

可以使用笔划或笔刷的名称,以基于该名称定制运行时过程。

使用回调函数的自定义“Paint Effects”笔刷必须在所有回调过程定义的结尾有两个参数:笔刷名称和笔划名称。通过这些参数可以知道笔刷的名称以及触发回调的笔划的名称。

这些回调参数显示在示例脚本中(例如 <maya_home>/scripts/paintEffects/leafDroop.mel)。

为了练习运行时回调,可以执行下列操作:

  1. <maya_home>/scripts/paintEffects/leafDroop.mel 复制到 <maya_home>/scripts/startup
  2. leafDroop.mel 中回调内部的某个位置添加 print ("brushName="+$brushName+"\n") ; 语句。
  3. 在 Maya“建模”(Modeling)菜单集中,选择“生成 > Paint Effects 工具”(Generate > Paint Effects Tool),然后选择“生成 > 模板笔刷设置”(Generate > Template Brush Settings)
  4. “Paint Effects 笔刷设置”(Paint Effects Brush Settings)窗口中,单击“管”(Tubes)
  5. 选中“管”(Tubes)复选框。
  6. 单击“用户 MEL 脚本”(User MEL scripts)
  7. “运行时脚本”(Runtime Script)文本区域中,键入 leafDroop
  8. 在 Maya 场景视图中,绘制一些“Paint Effects”笔划,然后应该看到已调用 leafDroop 过程。