gpt4 book ai didi

graphics - 我应该在 3D 渲染引擎中使用什么单位进行照明?

转载 作者:行者123 更新时间:2023-12-02 08:02:30 25 4
gpt4 key购买 nike

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

例如,Bruneton's Atmospheric Scattering paper似乎用坎德拉每平方米(cd/m^2)来表示亮度。然而,Jensen's Night Model使用瓦每平方米 (W/m^2),表示辐照度。其他论文提到了辐照度、亮度、照度等,但似乎没有使用照明计算的通用表示。那么,如何才能确保在实现所有这些论文时,计算将“很好地”协同工作呢?

更令人困惑的是,大多数关于自适应色调映射的论文似乎根本放弃了单位,只是建议以对数格式(分贝)渲染像素(称为亮度)。如果没有引用强度/功率,分贝就没用。

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

我的问题是,3D 图形引擎中的照明应采用什么单位来表示,以允许对各种光源(从微弱的星光到明亮的阳光)进行适当的、校准的亮度控制,以及该单位与各个像素的亮度有何关系?

最佳答案

简单地说:辐射度,以坎德拉每平方米 (cd/m^2) 为单位测量,是合适的单位。

<小时/>

简单地说:计算机图形学通常关注的是事物对人们来说应该是什么样子。描述这一点的单位是:

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

直观上,当您将相同量的能量传播到更大的区域时,它会相应地变得不那么亮。这会产生另外两个数量:

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

现在,回答您的问题:

每个像素代表相机的有限立体角,以球面度为单位进行测量。在您的问题中,相关区域是正在渲染的对象的区域。

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

请注意,根据定义,点源不占据任何立体角;从技术上讲,它的光芒是无限的。然而,它的辐照度是有限的,从技术上讲,它只能对给定的像素值产生有限的(如果可能很大)影响。无论如何,如果您想直接渲染点源,则需要将它们与面源区别对待,并处理除辐射以外的量在给定光线上不是不变的问题...

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

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

关于graphics - 我应该在 3D 渲染引擎中使用什么单位进行照明?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34563197/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com