原理化毛发 BSDF节点

仅适用于Cycles引擎

../../../_images/render_shader-nodes_shader_hair-principled_node-melaninconcentration.pngMelanin concentration选项下的原理化毛发 BSDF节点界面。

原理化毛发BSDF 节点是基于物理特性的,适用于对毛发进行着色。

毛发着色

该着色器共有三种 参数化 的方式来对毛发进行着色。

  • 直接着色
  • 选择所需的RGB颜色,着色器会粗略计算必要的 吸收系数 (吸收系数详细说明见下文)。
  • Melanin concentration
  • 现实生活中,真黑素(在棕黑色头发中普遍存在)和褐黑素(红色头发)的数量和比例决定着毛发的颜色。该模式利用输入的 黑色素 数值来确定两者的数量,利用输入的 黑色素红 的值来确定两者的比例,进而实现对毛发进行着色。提高浓度会加深毛发颜色(下面的五个颜色示例都是在 黑色素红 设定为 (1) 时的结果):

    • 白色 (黑色素值设为 (0)),
    • 亚麻色 (黑色素值设为 (0.25))
    • 淡红色 (黑色素值设为 (0.5))
    • 棕色 (黑色素值设为 (0.75))
    • 黑色 (黑色素值设为 (1))设定好上述参数后,可利用 染色 输入项来实现染发的效果。
  • 吸收系数

  • 指定由 Beer-Lambert law `__定律确定的衰减系数 :math:_sigma{a}`。该模式主要针对技术用户,以便于他们直接使用文献中报道的系数。

随机粗糙度

逼真的头发应该在每条发股间具有些许差异。该着色器利用 随机色彩随机粗糙度 来实现上述效果。实现方式是将 黑色素/粗糙度 的比值重新映射到 (色彩/糙度 \pm 随机化\%) 。

输入选项

  • 颜色
  • 发股的RGB颜色。仅在直接着色模式下起作用。

Hint

使用以下公式将所选颜色转换为吸收系数(参见 4.2 章 [CBTB16]):

[\sigma{a} = \frac{\ln(Color)}{\left(5.969 - 0.215\beta{N} + 2.532\beta{N}^{2} -10.73\beta{N}^{3} + 5.574\beta{N}^{4} + 0.245\beta{N}^{5}\right)^{2}}]

在指定了径向粗糙度的情况下, (\beta_{N}) 是应用随机化后头发的径向粗糙度。

../../../_images/render_shader-nodes_shader_hair-principled_demo-color.jpg使用直接着色参数化头发颜色。(顶部为RGB参数。)

  • 黑色素
  • 色素的绝对值。范围: ([0, 1]) 对应于 ([0\%, 100\%]) 。

Hint

这是对下面基础指数函数的线性映射:

[melanin_qty = -\ln(\max(1.0 - Melanin, 0.0001))]

../../../_images/render_shader-nodes_shader_hair-principled_demo-melanin.jpg黑色素。

  • 黑色素红
  • 褐黑素与真黑素的比例。范围: ([0, 1]) 对应于 ([0\%, 100\%]) 。

Hint

The ratio formula is: (eumelanin = Melanin(1.0-MelaninRedness)),(pheomelanin = MelaninMelaninRedness).

在随机化后,得到的最终值会通过下式转化为吸收浓度(参见 6.1 章 [EFHLA11], 范围调整为 ([0, 1])):

[\begin{split}\sigma_{a} =eumelanin \left[\begin{matrix} 0.506 \ 0.841 \ 1.653 \ \end{matrix}\right] +pheomelanin \left[\begin{matrix} 0.343 \ 0.733 \ 1.924 \ \end{matrix}\right]\end{split}]

../../../_images/render_shader-nodes_shader_hair-principled_demo-melanin-redness.jpg黑色素红。

  • 染色
  • 生成染发效果。不受随机化的影响。可以通过将颜色设置为白色来禁用它。

Hint

计算方式是通过将上面的 颜色 转换并添加到黑色素浓度的吸收系数中。

../../../_images/render_shader-nodes_shader_hair-principled_demo-tint.jpg染色效果。黑色素值设定为 0.1,其余为RGB数值。

  • 吸收系数
  • 吸收系数 (\sigma) 。
  • 糙度
  • 指定发股方向上平滑闪光的程度。数值太低会使头发变得光滑,看起来几乎是金属质感的,而发光效果看起来像萤火虫;设置太高会导致朗伯散射效果。

../../../_images/render_shader-nodes_shader_hair-principled_demo-roughness.jpg糙度。

  • 径向粗糙度
  • 指定发股切线方向上平滑闪烁的程度。数值太低会出现集中闪光效果;将其设置得太高会将光线扩散至发股的宽度上。

Hint

从数学层面上理解为:该参数可以映射到逻辑分布的比例因子 (s) 上 (参见 4.1 章 [CBTB16])。

../../../_images/render_shader-nodes_shader_hair-principled_demo-radial-roughness.jpg径向粗糙度。

  • 涂层
  • 通过将粗糙度降低到给定的数值,来模拟第一次光反射(漫反射),进而模拟出一层闪亮的毛发。范围: ([0, 1]) 对应于将原始糙度调节至 ([0\%, 100\%]) 。

../../../_images/render_shader-nodes_shader_hair-principled_demo-coat.jpg涂层。

  • IOR
  • 折射率 (IOR) 定义光线改变方向的程度。折射率设定为1.0时,光线可直接透过;值越高,折射越强。默认值为 (1.55) 。
  • 偏移量
  • 通过增加头发角质层相对于发股的角度来倾斜头发的闪烁。人类的头发通常具有较低的偏移值。
  • 随机色彩
  • 对于每根发股,通过 (随机系数) 改变黑色素浓度。范围: ([0, 1]) 对应于初始黑色素浓度 ([0\%, 100\%]) 。

Hint

黑色素浓度会与 (随机系数) 相乘得到最终值,其中 (随机系数 = 1.0 + 2.0(随机数- 0.5) 随机色彩) 。

../../../_images/render_shader-nodes_shader_hair-principled_demo-random-color.jpg随机色彩。

  • 随机粗糙度
  • 对于每根发股,通过 (随机系数) 改变糙度。范围: ([0, 1]) 对应于初始糙度值 ([0\%, 100\%]) 。

Hint

使用的公式与 随机色彩 中的一致。

../../../_images/render_shader-nodes_shader_hair-principled_demo-random-roughness.jpg随机粗糙度。

  • 随机数
  • 产生随机数。如果没有与其它节点相连,则从 毛发信息 ‣ 随机 中获取随机数。

属性

  • 参数化
  • 可以选择以上三种着色方式的任何一种。

输出选项

  • BSDF
  • 标准着色器输出。

参考文献

该着色器最初由Chiang等人报道 [CBTB16],并已成功应用在迪士尼电影"疯狂动物城"® 中。

[CBTB16](1, 2, 3) Chiang, M. J. , Bitterli, B. , Tappan, C. and Burley, B. (2016),A Practical and Controllable Hair and Fur Model for Production Path Tracing. Computer Graphics Forum, 35: 275-283.doi:10.1111/cgf.12830
[EFHLA11]d'Eon, E. , Francois, G. , Hill, M. , Letteri, J. and Aubry, J. (2011),An Energy‐Conserving Hair Reflectance Model. Computer Graphics Forum, 30: 1181-1187.doi:10.1111/j.1467-8659.2011.01976.x