我应该在3D渲染引擎中使用哪些单位进行照明?

时间:2016-01-02 06:16:35

标签: graphics 3d physics lighting

在阅读关于渲染,图形处理,照明等的学术论文时,我发现了各种各样的单元被提及和使用。

例如,Bruneton's Atmospheric Scattering paper似乎每平方米使用candellas(cd / m ^ 2),代表亮度。但是,Jensen's Night Model使用每平方米瓦特(W /平方公尺),这意味着辐照度。其他论文提到了辐照度,亮度,照度等,似乎没有使用的照明计算的共同表示。那么,甚至可以确定在实施所有这些论文时,计算能够“很好地”结合在一起吗?

为了增加混乱,大多数关于自适应色调映射的论文似乎都放弃了单位,只是建议以对数格式(分贝)渲染像素(称为亮度)。没有参考强度/功率,分贝是无用的。

这引出了一个问题,单个像素代表什么单位?当我通过平均像素的对数亮度来计算场景的“平均亮度”时,我究竟在计算什么?术语"luminance" itself意味着被照亮的区域和源的立体角。这又引出了两个问题:“点源的立体角是多少?” “像素的面积是多少?”

我的问题是, 在3D图形引擎中应该使用哪些单位来进行照明,以便在各种光源(从微弱的星光到明亮的阳光)中进行适当的校准亮度控制,以及该单位与单个像素的亮度有何关系吗

2 个答案:

答案 0 :(得分:1)

简要说明:以candela per square metercd/m^2)衡量的辐射度是合适的单位。

不太简单:计算机图形通常关注人们应该看到什么样的东西。描述这个的单位是:

  • "光通量"以lumenslm来衡量,其定义与特定波长的光的总辐射功率(watts)成比例。
  • "发光强度"以candelacd衡量,可以定义为lumens per steradianlm/sr)。

直观地说,当你在更大的区域上传播相同数量的能量时,它会成比例地变得不那么明亮。这会产生两个数量:

  • "辐照"是每单位面积的光通量。它以lm/m^2衡量,与W/m^2成比例。
  • "辐射"是每单位面积的发光强度。它以cd/m^2lm/(sr.m^2)
  • 衡量

现在,回答你的问题:

每个像素表示来自相机的有限量的立体角,其在steradian中测量。在您的问题的上下文中,相关区域是对象呈现的区域

辐亮度(以cd/m^2测量)表示表面亮度,并且具有沿任何无阻碍观察路径不变的独特属性(这使其成为渲染引擎的最合适数量)。每个像素的颜色代表该像素占据的立体角上的平均辐亮度

注意,根据定义,点光源不会占据任何立体角;它的光芒在技术上是无限的。然而,它的辐照度是有限的,并且在技术上它应该仅对给定的像素值贡献有限(如果可能很大)的效果。在任何情况下,如果你想直接渲染点源,你需要以不同于区域来源的方式处理它们,并处理除了辐射之外的数量在给定光线上不是不变的问题......

当Jensen等人的论文"基于物理的夜空模型"在各种照明光源的表格中使用与辐照度相关的W/m^2,我猜他们的目的是描述他们在整个夜空中的平均相对贡献,从任何视觉细节中抽象出来。

最后,请注意,真正基于物理的模型需要在可观察的光谱上进行整合,以评估亮度和颜色。因此,此类模型必须以watts在可见波长上的分布开始,并使用标准人体比色模型来评估lumens

答案 1 :(得分:-1)

亮度的SI单位是Candela per square metre所以如果你想要代表实际的物理量,就很难反对使用它。至于该单元如何与单个像素的亮度相关,该亮度将是在像素观看区域中表示的照明源的那部分处的亮度的函数,以及由发动机计算的来自场景中其他地方的贡献 - 可能是这个完全取决于渲染器。