功能:mtoa 多维材质实现方法,以实现将多种材质或者多种纹理通过 ID 方式分配给不同物体。
思路:aiSwitch 是将多种 shader 切换输出,但 aiSwitch 的切换方式是以 index 值为准,比如当输入 0 时,则输出 0 的 shader,这样我们可以给每个物体添加不同的 index 值,并将其传递到 aiSwitch 的 index 属性上。
实现方法:
依次将多个 shader 连接到 aiSwitch 的输入中,创建一个 aiUserDataFloat 节点,将 outvalue 输出到 aiSwitch 的 index 上:

aiUserDataFloat 节点上的 attribute 上填写传递的属性名称,比如 index。

选择物体的 Shape 节点,并给其添加一个浮点类型的属性,mtoa 对自定义属性命名格式如下:
mtoa_constant_<attribute-name>
在这里,我们建立一个 index 的属性名称,则为 mtoa_constant_index。数据类型为浮点,其它默认:

创建属性完毕后会在物体的 Shape 节点下多出 index 属性:

给每个物体设置好 index 的编号,最后渲染就能得到对应的 shader 结果:
