概述
Dielectric_Priority
):玻璃1
,气泡2
(正确)。图像(在默认值)下查看,介质 _ 优先级:0
,这在物理上不正确。在现实世界中,当光到达两种介质(即透明)介质之间的边界时,它会折射和反射,而这两种介质的折射率不同, 例如,在以下液体玻璃中,光在空气、玻璃、液体和冰之间的不同边界处折射。
介质优先级:玻璃:3
,冰和气泡:2
,液体:1
。
介质 _ 优先级:0
,物理上不正确
PS:本文仅适用于最新版 Arnold(核心 6.1.0 版,即 C4DtaA 3.2.0 版以上),最新版 Arnold 下载请移步...
在渲染器中创建这样的场景,通常是将玻璃和水建模为闭合网格(填充常量 IOR 材质)来完成的,这些网格要么是齐平的,要么是相交的,要么是具有气隙的。或者在某些渲染器中,必须显式地为 IOR 更改的每个接口建模,并在每侧标记 IOR,像这样手动将场景分解成独立的接口,IOR 会跳转将非常不方便。同样,将几何图形建模为齐平或气隙会产生各种问题。
所以在 Arnold(和许多其他渲染器)中采用的方法是使用嵌套介质(Nested Dielectrics),这意味着通过使电介质对象重叠来对场景进行建模,并在它们重叠的空间区域中,通过优先级系统,将材质解析为重叠的介电体之一。这可以正确跟踪 IOR 在光线折射时如何变化,从而导致逼真的渲染。
为什么需要优先级
一杯水的例子
为了搞清楚这些概念,我们以一杯水为例,这包括四种透明介质(即玻璃、水、冰和周围的空气),它们都是由折射率(或 IOR)定义的介质。当然,场景中可能存在其他非介质,例如玻璃所在的金属桌。
在介质之间的边界处,当光线通过接口透射时,IOR 通常需要从一个值跳到另一个值,在渲染该对象时,光线在每个介质边界上反射或透射,每个表面上的菲尼尔因子和折射方向由边界两侧的 IOR 比率确定。
那么我们如何在渲染器中设置它呢?首先,阿诺德没有使用的两种方法进行比较。
显式 IOR 跳转(错误)
上面提到的一种方法是,显式地为各种接口建模,为每个接口指定外部和内部的 IOR(如下所示)。这将涉及到将对象分解为每个接口的单独网格,或以某种方式标记面。虽然这是一些渲染器所采用的正确方法,但对于艺术家来说,必须这样做显然非常不方便,尤其是复杂的几何体或动画时。
空气间隙或齐平接口(错误)
另一种方法是使用定义明确的 IOR 对闭合网格进行建模,并在它们之间放置空气间隙,以便它们不会接触或重叠,如下所示。这可能比通过接口分解模型更方便,但是不幸的是,由于它会在气隙中产生相互反射,因此在物理上并不正确。另一个不好的方法是将曲面精确地建模为齐平,这会引入数值不精确性问题。
Arnold 嵌套电介质
Arnold 采用的方法,也被许多其他渲染器使用,是基于 2002 年 Schmidt&Budge 的论文"光线跟踪图像中的简单嵌套介质"。在他们的方法(通常被称为嵌套介质)中,介质被建模为允许重叠的闭合曲面,但是我们必须通过分配优先级,来指定给定区域中存在哪些重叠曲面,也就是说,我们给每个介质分配一个整数优先级,然后在一个重叠区域中,最高优先级介质是假定存在的唯一介质,如下图所示。(请注意,空气没有优先权,因为我们可以将其视为没有介质)。光线在场景中反弹回来,在优先级分辨率之后,在幸存的界面上正确反射和折射,并且随着光线的传播,介质的 IOR 被正确“跟踪”了。
使用嵌套介质在玻璃中渲染气泡。
6666666666
666666666
666666
666
是非观
感谢分享
感谢分享