跳转至内容

Blender 3D:新手到专家/光线追踪

来自维基教科书,为开放世界提供开放书籍

之前学习过使用漫射和镜面着色器来控制材质的外观。这些设置只会影响材质如何反射来自灯光的直接光;但在现实世界中,物体也受到来自其他被照亮物体间接光的照亮。

来自维基百科文章的特别突出的光线追踪示例

特别是,有一个重要的案例,即光线在到达照相机之前从镜子和其他光滑或抛光表面反弹,以及光线穿过透明物体并折射(弯曲)。

在现实世界中,这种光可以照亮其他物体,并且它也可以在从非镜面表面反弹后这样做。对这种间接照明进行建模的普遍问题称为全局照明,通常缩写为“GI”。不幸的是,我们一直在使用的 Blender 内部渲染器无法完全处理 GI;为了应对这种情况,我们必须使用 Cycles 渲染器,该渲染器将在后面介绍。因此,现在我们将自己限制在不照亮其他物体的镜面反射上。

设置场景

[编辑 | 编辑源代码]

让我们创建一个非常基本的模型,我们可以用它来试验各种光线追踪效果。打开一个新的 Blender 文档。确保默认立方体被选中。转到属性窗口中的修改器上下文,并将阵列修改器添加到立方体。

立方体将立即变成两个立方体,但它们靠得太近,看起来像一个长方体。这是因为阵列修改器的默认设置是使用相对偏移量 (X, Y, Z) = (1.0, 0.0, 0.0)。将这些偏移量更改为 (1.5, 1.5, 1.5),这样副本在更有趣的角度上会更加分散,并将重复次数增加到 5。

现在尝试旋转和重新定位照相机和立方体,以使它们全部进入视图。如果您按下 F12 以立即渲染,您应该看到类似于右边的图像。到目前为止,并没有什么特别令人兴奋的。但由于我们将处理反射和折射,因此在周围环境中有一些东西可以反射和折射会很好。

一个容易添加的东西是世界纹理。转到属性窗口中的纹理上下文。确保世界纹理(最上面面板最上面三个按钮中最左边的那个)被选中。创建一个新的纹理,并将它的类型更改为“魔法”,它具有各种不同的颜色。转到影响面板;默认情况下,左上角的复选框(影响背景渐变)已选中;但这没有任何作用,因为默认的天空设置不是有渐变。因此,取消选中该框,改为选中左边的第二个框(影响地平线颜色)。

同样在“尺寸:”设置下,将 X、Y 和 Z 缩放都设置为 3.0;通过缩小图案,这将把更多细节带入视图。

现在,如果您按下 F12 ,您应该会得到一张背景更有趣的图像。

好的,我们准备开始玩材质设置了...

光线追踪透明度

[编辑 | 编辑源代码]
游泳池的左侧充满水材料,右侧为空;地板没有断裂,只是因为光线路径弯曲,所以看起来像是断裂的。

在物理学中,折射是指光线从一种物质(例如空气)穿过边界进入另一种物质(例如水)时发生的情况;它在进入密度更大的物质时会减速,并在离开时会加速。物质的折射率是衡量光速相对于真空(光以全速传播的地方)变化程度的指标。随着速度的变化,光束的方向也会发生变化,从而产生众所周知的“弯曲”效果,例如你在将茶匙放入一杯水中时或向下看游泳池时看到的效果(如右图所示)。

无论如何,回到我们的教程模型。确保立方体被选中。转到属性窗口中的材质上下文。找到透明度面板,并选中顶部的复选框以启用透明度。在位于该复选框正下方用于选择透明度类型的按钮行中,标题为“遮罩”、“Z 透明度”和“光线追踪”,选择“光线追踪”。

在这些透明度类型按钮正下方的可编辑字段中,左上角的那个标题为“Alpha:”;您必须将其降低到低于其默认值 1.0,才能看到任何实际的透明度效果。尝试将其降低到 0.5。

再往下一点,您会看到另外两个字段:“IOR:”(“折射率”)和“过滤器:”。

要模拟玻璃,将 IOR 设置为 1.5(其他有用的值是水的 1.33、钻石的 2.4 等等)。过滤器值控制光线穿过材料边界时吸收的材质漫射颜色的多少;将其设置为类似于 0.5 的值,尽管除非您在漫射着色器设置中指定了一种强烈的颜色,否则您可能不会注意到它的太多影响。

“深度:”设置控制光线在渲染器放弃跟踪之前穿过材料边界的次数。更大的值会产生更逼真的结果,但代价是渲染时间会更长。在您在其他透明物体前面有透明物体的更复杂场景中,此值将产生确定的影响;在这里它可能不太重要。

半玻璃...

现在,如果您按下 F12 ,您应该看到类似于右边的图像。立方体仍然看起来有点灰色;如果您将 alpha 设置为 0,它们会看起来更加透明。

另外尝试玩一下“光泽度:”下的“数量:”滑块:默认值 1.0 会产生完美的平滑折射,而小于 1.0 的值会产生“磨砂玻璃”效果,模糊光线穿过材料时的效果。

菲涅耳系数

[编辑 | 编辑源代码]

现实生活中的材料从来都不是完全不透明的或完全吸收的;即使是像闪亮的金属这样的东西看起来完全不透明,光线仍然能够渗透到表面的一小部分,即使是最黑的黑色烟灰,也仍然会发生一些(微小的)反射。

一般行为是,当直接观察材料表面时,材料最透明,当几乎平行于表面观察时,材料最反射(和往常一样,维基百科拥有所有血腥细节,如果你有兴趣的话)。

如果您看一下透明度设置面板,您会在 Alpha 字段的右侧看到一个标记为“菲涅耳:”,在它的下面还有一个标记为“混合:”,当菲涅耳值设置为高于其默认值 0 时,它会变为活跃状态。

菲涅耳(发音为“fray-nel”)值是功率,它控制着表面的透明度随观察角度变化的速度;0 表示透明度在所有角度都不变,而较高的值会导致透明度朝边缘更快下降。您可以为该字段设置的最大值为 5.0。

光线追踪镜像

[编辑 | 编辑源代码]

在材质设置中,透明度面板下方,你会看到镜像面板。选中顶部的复选框以启用它。请注意复选框下方的“反射率:”可编辑字段;您需要将其设置为除默认值 0.0 以外的值,才能实际观察到任何镜像效果。

那是玻璃,还是玻璃?

如果您现在渲染,您应该会看到类似这样的东西。

另请参阅指定反射颜色色板:默认白色表示反射保持其颜色不变,这是玻璃、塑料或陶瓷反射的特征。金属反射往往会呈现金属的颜色。

光泽度设置控制反射的镜面程度:将其从默认值 1.0 降低会为反射添加模糊,使表面看起来不太光滑。

请注意,镜像面板有自己的菲涅耳设置。返回透明度面板,并将 Alpha 设置为 0。这将完全禁用漫反射和镜面着色器,从而提供纯光线追踪材质,并且也会使透明度菲涅耳无效。相反,我们将在镜像面板中控制菲涅耳。非零菲涅耳功率的行为与之前类似;但是,它不会从正面看到的表面上逐渐淡出透明度到边缘看到的着色器效果,而是会从透明度逐渐淡出到镜像。

更像玻璃?

将菲涅耳值设置为约 2.5。将渲染与之前的没有菲涅耳的渲染进行比较。

纯镜像

最后,将反射率设置为 1.0,将菲涅耳设置为 0。现在如果您渲染,您应该会得到一组完全不透明、镜面反射的立方体。

为什么我的阴影是黑色的?

[编辑 | 编辑源代码]

考虑右侧的渲染:这是一个默认文档,添加了一个平面;立方体启用了光线追踪透明度,IOR 为 1.5,过滤器为 0.5,深度为 5,Alpha 为 0,其他设置保持默认值。平面有一个材质,所有设置都保持默认值。

光应该能够穿过立方体并照亮直接位于其背后的平面部分;那么为什么阴影完全是黑色的呢?

问题是,默认情况下,Blender 内部渲染器不会费心计算透明阴影。相反,它假设任何阻挡光线的东西都完全阻挡光线,可能是因为它假设相反的情况会降低速度。要解决此问题,请选择平面(不是立方体),并在其材质设置中,查找阴影面板。请注意左上角的两个复选框:默认情况下,“接收”复选框已选中,“接收透明”复选框未选中。选中后者。现在,任何分配了此材质的物体表面都将适当地计算出正确的非透明阴影。

现在,当您重新渲染时,您应该会看到看起来更准确的透明阴影。

想象一下,如果您有一个场景,其中有很多具有不同材质的非透明物体从很多透明物体接收阴影:您必须在所有这些可能接收透明阴影的材质上选中“接收透明”选项!是的,这可能很麻烦。更不用说焦散的问题了,BI 渲染器根本无法处理。如果您想渲染这样的真实场景,那么您需要了解Cycles...

华夏公益教科书