数据转化

颜色为灰度

将颜色转化为 RGBA 灰度,方法是提取 Alpha 分量、求 RGB 平均值或者根据突出绿色、弱化红色的生理色模型计算 RGB 权重。生成的灰度值也可用作标量。返回的 R、G、B 和 A 分量都具有相同值。

mib_color_alpha
color "mib_color_alpha" (
    color           "input",
    scalar          "factor")
mib_color_average
color "mib_color_average" (
    color           "input",
    scalar          "factor")
mib_color_intensity
color "mib_color_intensity" (
    color           "input",
    scalar          "factor")
input
是指要转化为灰度的颜色。
factor
是指要与结果相乘的一个因子。对于正确的 Alpha、平均和强度值,该因子应设置为 1.0,值为 0 时,将不会执行运算 input 而返回黑色。

颜色贴图插值

根据给定的标量或颜色,执行多色贴图的查找和插值。贴图是一个最多含 8 种颜色的集合(而不是阵列)。实际的颜色数由参数指定。

mib_color_interpolate
color "mib_color_interpolate" (
    scalar          "input",
    integer         "num",
    scalar          "weight_1",
    scalar          "weight_2",
    scalar          "weight_3",
    scalar          "weight_4",
    scalar          "weight_5",
    scalar          "weight_6",
    color           "color_0",
    color           "color_1",
    color           "color_2",
    color           "color_3",
    color           "color_4",
    color           "color_5",
    color           "color_6",
    color           "color_7")
input
是指要查找的标量。
num
是指颜色列表中的颜色数。该值必须至少是 1 和最大为 8。
weight_*
指定在颜色扩散中颜色 1 至 6 的位置。值 0 表示将颜色置于低端,值 1 表示将颜色置于高端。权重必须是单调增加。颜色 0 始终具有值为 0 的权重,而颜色 num-1 始终具有值为 1 的权重。必须指定在这两个值之间的权重(即,少于两个颜色,或 num-2 权重)。
color_*
指定颜色扩散。仅定义前 num 个颜色。如果输入小于等于 0,则只运算 color_0;如果输入大于等于 1,则只运算 color_(num-1)。如果输入正好等于数值精度中的权重,则只会对对应的颜色进行运算。在所有其他情况下,会对完全相邻的两个颜色进行运算和插值。

混合

接受基础颜色和最多 8 个输入(具体数目由参数决定),其中每个输入都包含输入颜色、权重标量和模式。按顺序计算输入结果,每次都对上一个输入结果进行运算(首先从基础颜色开始,默认为透明黑色)。支持下列模式:

模式操作计算
0混合 R = A·(1−Ba)·w + B·w
1混合 R = A·(1−w) + B·w
2相加 R = A + B·w
3有界限的相加 R = bound(A + B·w, 0, 1)
4相乘 R = A·B·w
5有界限的相乘 R = bound(A·B·w, 0, 1)
6替换 Alpha Rrgb = Argb; Ra = Ba

R 是下一个结果,A 是前一个结果,B 是当前的颜色,w 是当前的权重。下标 r、g、b 和 a 分别为红色、绿色、蓝色和 Alpha 分量。请注意,模式 6 不能确保得到的 Alpha 值是有效的,也就是说,不能小于红色、绿色或蓝色。在帧缓冲区存储颜色时,除非预乘处于禁用状态,否则 mental ray 将会校正 Alpha。

mib_color_mix
color "mib_color_mix" (
    integer         "num",
    integer         "mode_0",
    integer         "mode_1",
    integer         "mode_2",
    integer         "mode_3",
    integer         "mode_4",
    integer         "mode_5",
    integer         "mode_6",
    integer         "mode_7",
    scalar          "weight_0",
    scalar          "weight_1",
    scalar          "weight_2",
    scalar          "weight_3",
    scalar          "weight_4",
    scalar          "weight_5",
    scalar          "weight_6",
    scalar          "weight_7",
    color           "color_0",
    color           "color_1",
    color           "color_2",
    color           "color_3",
    color           "color_4",
    color           "color_5",
    color           "color_6",
    color           "color_7",
    color           "color_base")
num
是指有效的输入数。最小为 1,最大为 8。
mode_*
是指合成模式,如上所述。
weight_*
是指合成权重 w,如上所述。
color_*
是指合成的颜色 B,如上所述。
color_base
是指基础颜色。

扩散

将一个颜色输入分散为最多 8 个颜色输出(确切数量由参数决定)。在指定的转化中,每个输出等于对应的输入与权重的乘积。该公式为

模式操作计算
0加权颜色 R = w·A
1Alpha 中的灰度颜色 Rrgba = w·Aa
2平均强度中的灰度颜色 Rrgba = w·(Ar+Ag+Ab) ⁄ 3
3加权强度中的灰度颜色 Rrgba = w·(0.299·Ar+ 0.587·Ag+ 0.114·Ab)
4红色分量中的灰度颜色 Rrgba = w·Ar

R 表示当前结果(八个中的一个),w 表示当前权重,“模式”表示当前转化,A 表示所有输出所共用的输入颜色。模式 4 旨在将标量转化为灰度颜色。

mib_color_spread
struct {
    color           "out_0",
    color           "out_1",
    color           "out_2",
    color           "out_3",
    color           "out_4",
    color           "out_5",
    color           "out_6",
    color           "out_7"
} "mib_color_spread" (
    color           "input",
    integer         "num",
    integer         "mode_0",
    integer         "mode_1",
    integer         "mode_2",
    integer         "mode_3",
    integer         "mode_4",
    integer         "mode_5",
    integer         "mode_6",
    integer         "mode_7",
    color           "weight_0",
    color           "weight_1",
    color           "weight_2",
    color           "weight_3",
    color           "weight_4",
    color           "weight_5",
    color           "weight_6",
    color           "weight_7")
num
是指用于计算的有效输出数。最小为 1,最大为 8。
mode_*
是指相应编号的模式,如上所述。
weight_*
是指权重 w,如上所述。

Copyright © 1986, 2015 NVIDIA ARC GmbH. All rights reserved.