光线跟踪和计算机图形学.颜色感知功能



摘要

这是一个关于如何将光线跟踪模型中计算的光强度值映射到人类感知的颜色值的问题。我建立了一个光线跟踪模型,发现包括计算光强的平方反比定律会产生图形结果,我认为这是不直观的。我认为这在一定程度上与8位彩色图像的亮度值范围有限有关,但更可能的是,我应该而不是使用光强和像素颜色之间的线性映射。

背景

我最近对使用光线追踪技术创建计算机图形产生了兴趣。

一个基本的光线追踪模型可能会像一样工作

  • 计算从相机(眼睛)中心到要渲染的每个屏幕像素方向的光线矢量
  • 对世界上的所有对象执行矢量碰撞测试
  • 如果发生碰撞,请记录碰撞发生点处对象的颜色
  • 创建从碰撞点到最近灯光的新矢量
  • 将灯光的颜色乘以对象的颜色

这会创建合理但平面的图像,即使曲面法线包含在计算中也是如此。

模型扩展

我的兴趣是试图通过将距离纳入灯光计算来扩展这个模型。

如果一个物体被距离为d的光照亮,那么如果该物体被移动到距离光源2d的距离,则照明强度将降低4倍。这就是平方反比定律。

它并不适用于所有轻型车型。(例如,来自无限远处的光的强度与物体的位置无关。)

通过摆弄我的代码,我发现这个平方反比定律并不能产生我所希望的逼真的照明。

例如,我为房间/场景的模型构建了一些初始对象,以进行测试。

  • 有一些物体距离相机3-5米
  • 房间里有一些墙,我把它们放在离相机大约10到100米的地方
  • 有一些灯光,距离相机大约10米

我发现的是这个

  • 如果房间的边界距离相机超过10,则颜色值非常暗淡
  • 如果房间的边界距离相机100米,那么它是完全不可见的

这与我直觉上的期望不符。这在数学上是有意义的,因为我使用线性函数在颜色强度和RGB像素值之间进行转换。

讨论

将对象从距离10移动到距离100会将颜色强度降低(100/10)^2 = 100的因子。由于像素RGB颜色在0-255的范围内,显然100的因子是重要的,这可以解释为什么距离10处的物体移动到距离100处变得完全不可见。

然而,我怀疑人类对颜色的感知在某种程度上是非线性的,我认为这是一个已经在计算机图形学中解决的问题。(否则光线追踪引擎将无法工作。)

我的猜测是,存在某种颜色感知函数,它描述了绝对光强度应该如何映射到人类对光强度/颜色的感知。

有人知道这个问题吗?或者能给我指明正确的方向吗?

如果一个物体被距离d的光照亮,那么如果该物体被移动到距离光源2d的位置,则照明强度将降低4倍。这就是平方反比定律。

你在这里描述的物理量不是强度,而是辐射通量。有关射线跟踪背景下辐射测量概念的讨论,请参见基于物理的渲染的第5.4章。

如果房间的边界与相机的距离超过10,则颜色值会非常暗淡。如果房间的边界距离相机100,则它是完全不可见的。

对于光线跟踪器中的点光源(在实现更精确的照明模型之前),平方反比定律可以是一个有用的第一近似。关键是,辐射通量以距离的平方递减的定律只适用于从点光源到表面的光,而不适用于从表面反射到相机的光。

换句话说,将相机从场景中移回不应降低渲染图像中对象的亮度;它只应该缩小它们的大小。

最新更新