首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >射线追踪和计算机图形学。颜色感知函数

射线追踪和计算机图形学。颜色感知函数
EN

Stack Overflow用户
提问于 2021-05-30 14:01:47
回答 1查看 168关注 0票数 1

摘要

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

背景

我最近对用射线追踪技术创建计算机图形有了兴趣。

一个基本的射线跟踪模型可能会像这样工作

  • 从摄像机(眼睛)的中心在每个要呈现的屏幕像素的方向上计算射线矢量
  • 对世界上所有的对象执行向量碰撞测试。
  • 如果发生碰撞,则在发生碰撞的地方记录对象的颜色。
  • 从碰撞点到最近的光创建一个新的矢量。
  • 将光线的颜色乘以物体的颜色

这创造了合理的,但看起来平平的图像,即使表面法线包括在计算中。

模型扩展

我的兴趣是试图通过在光计算中包含距离来扩展这个模型。

如果一个物体在距离d处被光照亮,那么如果物体从光源移出一个距离2d,那么照明强度就会降低4倍,这是逆平方律。

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

通过玩弄我的代码,我发现这个逆平方定律并没有产生我所期望的真实照明。

例如,我为一个房间/场景的模型构建了一些初始对象,用来测试事物。

  • 有一些物体在离相机3-5的距离.
  • 有些墙为房间划了一条边界,我把它们放在离相机10到100的距离上。
  • 有一些灯,距离相机10级。

我发现的是

  • 如果房间的边界距离相机10以上,颜色值就会很模糊。
  • 如果房间的边界距离相机100公里,那么它是完全看不见的。

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

讨论

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

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

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

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

EN

回答 1

Stack Overflow用户

发布于 2021-08-08 11:49:43

如果物体在距离d处被光线照亮,那么如果物体离光源有2d的距离,那么照明强度就会降低4倍,这是逆平方律。

这里你描述的物理量不是强度,而是辐射通量。有关射线追踪中辐射测量概念的讨论,请参阅第5.4章基于物理的绘制

如果房间的边界与摄像机的距离超过10,那么颜色值就会非常模糊。如果房间的边界是距离相机100的距离,那么它是完全看不见的。

逆平方律可以作为光线追踪器中点灯的一种有用的一级近似(在实现更精确的照明模型之前)。关键是辐射通量从距离的平方处脱落,它只适用于从点源到表面的光,而不适用于从表面反射到摄像机的光。

换句话说,将摄像机从场景中移回不应降低渲染图像中物体的亮度,而只应缩小它们的大小。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67762041

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档