在3D渲染引擎中,我应该使用哪些单位来表示光照?

3
阅读渲染、图形处理、照明等学术论文时,我发现提到和使用了各种单位。例如,Bruneton的大气散射论文似乎使用每平方米坎德拉(cd/m^2)表示亮度。然而,Jensen的夜间模型使用每平方米瓦特(W/m^2),意味着辐照度。其他论文提到辐照度、亮度、照度等,似乎没有共同的照明计算表示方法。那么,在实现所有这些论文时,如何确保计算“协作”良好呢?
更让人困惑的是,大多数关于自适应色调映射的论文似乎都不考虑单位,仅建议以对数格式(分贝)呈现像素(称为亮度)。分贝没有参考强度/功率是无用的。
这就引出了一个问题,单个像素代表什么单位?当我通过对像素的亮度取对数求平均来计算场景的“平均亮度”时,我到底在计算什么?术语"亮度"本身意味着照明的区域和源的立体角。这带来了两个问题:“点光源的立体角是多少?”“像素的面积是多少?”
因此,我的问题是,三维图形引擎中的照明应该用什么单位表示,以便在各种光源(从微弱的星光到明亮的阳光)下实现适当的校准亮度控制,这个单位与单个像素的亮度有何关系?
2个回答

1
简而言之:辐射亮度的适当单位是以每平方米坎德拉(cd/m^2)测量。

稍微详细地说:计算机图形学通常关注人们看起来应该是什么样子。描述这一点的单位有:

  • “发光通量”以流明lm为单位进行测量,其定义与特定波长处光的总辐射功率(以瓦特为单位)成比例。
  • “光强”以坎德拉cd为单位进行测量,可以定义为每球面度流明lm/sr)。

直观地说,当您将相同数量的能量分散在更大的区域上时,它变得成比例地更暗淡。这产生了另外两个量:

  • “辐照度”是单位面积的发光通量。它以lm/m^2为单位,并且与W/m^2成正比。
  • “辐射度”是单位面积的光强。它以cd/m^2lm/(sr.m^2)为单位进行测量。

现在,回答你的问题:
每个像素代表相机测量的有限立体角度,以 steradian 为单位。在你的问题中,相关的区域是正在呈现的对象的面积。
辐射度(以 cd/m^2 为单位)代表表面亮度,并具有唯一的特性,即沿任何未被阻挡的观察路径不变(这使其成为渲染引擎最合适的数量)。每个像素的颜色表示该像素所占立体角度内的平均辐射度。
请注意,根据定义,点源不占用任何立体角度;它的辐射度在技术上是无限的。然而,它的辐照度是有限的,从技术上讲,它只应对给定像素值产生有限(如果可能很大)的影响。无论如何,如果你想直接呈现点源,你需要将它们与面源区别对待,并处理除辐射度以外的其他数量不在给定光线上不变的问题...
当Jensen等人的论文"A Physically-Based Night Sky Model"在各种照明来源的表格中使用辐照度相关的W/m^2时,我猜测他们的意图是描述整个夜空作为平均值贡献的相对程度,摘除任何视觉细节。
最后,请注意真正基于物理的模型需要在可见光谱范围内进行积分以评估亮度和颜色。因此,这样的模型必须从可见波长的watts分布开始,并使用标准的人类色度学模型来评估lumens

Radiance的国际单位是每平方米每立体弧度瓦特,与人类感知无关。我猜你指的是亮度,它是以cd/m²为单位,并根据人类感知进行调整。对我来说令人困惑的是,这个面积代表什么?如果我有一个像素看到10 cd/m²,那么这个测量中的平方米是什么?同样地,如果我放大一个光源,使其覆盖更多的像素,这会如何改变场景对我的自适应色调映射器的亮度?假设不管被光源覆盖的像素数量如何,你都希望获得相同的平均亮度。 - stix
抱歉,我在单位部分部分参考了CG文献和色度/物理参考资料。我会重新检查我的参考资料,并想办法稍后重新措辞答案... - comingstorm
如果你有一个光圈有限的相机,那么m^2将指其光圈的面积。理想化的CG相机将局部光分布的极限视为光圈收缩到零,而不必担心像衍射和光子统计学这样的小事情... - comingstorm
那么,如果我有一个光源,光强为100 cd/sr*m^2,我可以任意定义一个像素为“1立体角单位”,然后乘以虚拟相机光圈面积来获得当前像素的值? - stix
再次强调,你的虚拟相机并没有光圈面积——它是一个理想化的点,就像点光源一样。辐射度(用CG行话来说,以“lm/(sr*m^2)”为单位)告诉你可见光在区域和角度上的分布... - comingstorm
显示剩余3条评论

-1
亮度的国际单位是每平方米坎德拉,因此如果您想要表示实际物理量,很难反驳使用该单位。至于这个单位如何与单个像素的亮度相关,那将取决于在像素视图区域中所代表的照明源部分的亮度以及引擎计算的场景其他部分的贡献 - 据推测,这将完全取决于渲染器。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接