您的图像肯定看起来不正确,并且看来光线在穿过网格时,您没有正确计算光线的内部路径。从它的外观来看,我要说的是您正在计算视线首先进入立方体的点与它首先撞击内壁的点之间的距离,并将其用作您的吸收距离。这基本上是假设光线在第一次撞击玻璃时总是会从玻璃中射出,这是一个很差的假设。
实际上,当光从空气进入玻璃时,通常不会立即离开玻璃。这是因为当光线入射到玻璃/空气界面时,会发生称为全内反射(TIR)的现象。当光从具有较高折射率(IOR)的介质传播到具有较低IOR的介质时,就会发生TIR,这恰好是光入射到玻璃物体的内壁时发生的情况。维基百科的这张图片很好地展示了它发生时的样子:
从根本上讲,这意味着如果光线以浅角度照射,光线将完全从介质内部反射出去。为了解决这个问题,您需要评估菲涅耳方程每当您的光线碰到玻璃/空气界面(也就是网格的内表面)时。菲涅耳方程将告诉您反射光与折射光的比率,而在TIR情况下为1。然后,您可以计算适当的反射和折射光方向,并继续跟踪穿过介质或介质外部的光路。如果您假设一个具有均匀散射系数的简单凸网格,那么用于比尔定律的距离将是退出介质之前所有内部路径长度的总和。这是具有您的散射系数和IOR为1.526(苏打石灰玻璃)的立方体的外观,该立方体使用我自己的路径跟踪器进行了渲染,该路径跟踪器同时考虑了内部和外部反射和折射:
最终,内部反射和折射是使玻璃看起来像玻璃的主要部分。正如您已经发现的那样,简单的近似实际上并不能削减它。如果添加多个网格和/或非凸网格,情况将变得更加糟糕,因为您不仅必须考虑内部反射,还必须考虑离开介质并在不同点进入介质的光线。