C4D高级渲染设置之薄膜着色器
薄膜着色器
使用薄膜着色器可以轻松地在镜头上创建闪烁的肥皂泡(此处具有不同的厚度 (mm))和抗反射涂层(注意指纹,它本身是薄膜)。
您可能想知道为什么所有光谱颜色都会在肥皂泡、水面上的油膜、珍珠母贝等表面闪烁。发生这种情况的原因是一种特殊的物理效应,称为“薄膜”或“干涉”效应。这种效应发生在非常薄的透明表面上,其厚度约为可见光波长(约 500 nm)的厚度。光线被薄膜的正反两面反射:
两条反射光线重叠导致干涉。
两条反射光线重叠(干涉),路径的不同会导致波的放大和衰减,即颜色的变化。
这些颜色变化主要取决于以下属性:
-
反射光的波长,即光的颜色
-
视角
-
薄膜厚度
-
折射率
对这些属性的微小修改将导致渲染结果的重大变化。
薄膜着色器(如果实施)按如下所述在物理上正确工作,即,如果您想渲染逼真的结果,您必须创建逼真的照明设置(例如,通过使用物理天空、发光反射器)。
执行
薄膜着色器可以像任何其他着色器一样加载到任何材质通道中。只有在通道的图层颜色菜单中加载到反射通道的纹理字段(最好在贝克曼或GGX图层中)时,它才会在物理上正确工作。应禁用镜面反射层。
对于肥皂泡,还应启用透明通道并启用其添加剂。
打开以下场景以查看示例:
一般来说,以下适用: 为了充分利用这种效果,您应该确保使用合适的反射物体;HDRI 纹理可以应用于天空对象,也可以使用具有发光材料的图层。
请注意,薄膜效果也可用于皮革、橡胶和金属等材料。
基本属性
层
如果将元素分配给图层,则其图层颜色将显示在此处。此字段反映图层面板中的图层颜色。您可以将图层从图层管理器或类似的图层字段拖放到此字段中。您还可以使用位于小三角形后面的菜单分配图层或从当前图层中删除元素。
模糊偏移[0..100%]
MIP和SAT映射仅近似于最佳计算,因为精确计算会大大增加渲染时间。SAT映射比MIP映射更准确。但有时这些近似值会使纹理过于模糊或过于锐利。
因此,您可以使用模糊偏移和模糊比例来模糊或锐化贴图。模糊偏移软化纹理。
模糊比例[-100..100%]
模糊比例微调MIP或SAT映射的强度。正值会增加模糊;负值会削弱它。强值会模糊细节,但有助于防止动画过程中出现闪烁。较弱的值会带来更多细节,但会增加闪烁的风险。
对于地板,尝试使用大约+20%的正模糊强度。地板最容易受到透视变形的影响,因此需要特殊处理。
着色器属性
颜色
如果要为薄膜反射着色,请使用此设置。此处定义的颜色与反射相乘。但是,只有纯白色才是物理上正确的(没有将着色器加载到“纹理”字段中)。
质地
混合强度[0..100%]
该混合强度设置可用于在无级混合着色器纹理与所定义的字段颜色。
厚度 (nm) [0.00..5000.00]
完美肥皂泡的不同厚度值。
此设置以纳米 (nm) 为单位定义薄膜的厚度。默认值 500nm 表示可见白光的近似中值波长。为了获得逼真的结果,应使用反映现实世界中的值。
如上图所示,颜色在800厚度内变化很大,而更大的值会逐渐减少紫色/绿色份额,直到反射完全为白色。甲厚度的值0不会产生在所有任何反射。
在现实世界中,薄膜的厚度会有所不同。这可以使用以下Variation设置来定义。
变化 (nm) [0.00..5000.00]
质地
肥皂泡或油膜在水中的闪烁效果是由薄膜厚度的变化引起的。
的变化(nm)的值定义了的薄膜的厚度的从顶部到底部的变化。例如,如果定义了400的厚度值和100的变化值,薄膜的厚度将在 300 纳米和 500 纳米之间变化。精确分布是使用纹理字段中图像的灰度值定义的。
以下适用:
-
黑色= 最小厚度
-
白色= 最大厚度
灰色调会产生相应更大或更小的厚度。
上述应用于纹理的值将产生以下结果:
由于肥皂泡的厚度向底部增加(重力导致水向下流动),因此应始终将明暗渐变集成到着色器中。
IOR [1.00..10.00]
IOR 预设
如果光线照射到薄膜上,它会发生不同的折射,具体取决于材料(另请参见 sa折射)。该值可以在此处定义。选择菜单包含几个默认材料,它们的值将在选择时自动设置。
一般来说,较小的值会产生更多色彩的结果,而较大的值会产生相应的色彩较少的结果。使用实际值时可获得最佳结果。从下拉菜单中选择薄膜的材料(不是薄膜所在的材料)。请注意,此折射率仅用于计算薄膜的着色 - 不进行渲染光线发散等真实世界的计算!
光谱样本[1..100]
此设置可用于微调整体质量。较低的值会产生相应的不太真实的结果,而较高的值会产生更好的结果。与往常一样,质量越好,渲染时间就越长。
请注意,非常高的值在某些时候不会将质量提高到相同的程度。
更具技术性的解释:在内部,着色器在其计算中使用光谱颜色(考虑不同的行为(例如,不同光谱颜色的不同折射强度))。如果应从这些光谱颜色生成 RGB 值,则此处定义的样本总数将从整个可见光谱中获取,并从该 RGB 值中取平均值。