• 渲染方程和蒙特卡罗方法(一)


    渲染方程和蒙特卡洛方法(一)

    既然标题里有一,足以看出这次真的是开了一个大坑啊,这个地方也是我一直逃避的地方,可是总归还是要把这里弄明白的,我自己的水平有限写这个也只是为了巩固自己的图形学知识,这篇文章也是我对于GAMES101的学习笔记,若是有人能看到这篇文章,只建议自己做一个参考,希望能对你有所帮助。顺带一提:本文的公式,定理,图片均来自于GAMES101,非常好的计算机图形学入门课程,有兴趣可以在B站找到官方的课程。


    1 从渲染方程开始说起

    首先让我们先看看这个大名鼎鼎的渲染方程到底长什么样子吧。

    Lr(p,ωr)=Le(p,ωo)+H2fr(p,ωi,ωr)Li(p,ωi)cosθidωi

    乌拉!!就是这个样子,当然你现在可能一头雾水,别着急下面我们来具体的看看这个公式。

    1.1 辐射度量学(Radiometry)

    别害怕,我们只会在这里介绍几个物理定义

    Radiant energy : Q [J = Joule(焦耳)]

    ​ the energy of electromagnetic radiation

    Radiant flux(power) ϕdQdt [W = Watt] [lm = lumen]

    ​ Energy per unit time

    Radiant intensity I(ω)dϕdω

    ​ power per unit solid angle

    Solid Angle Ω=Ar2

    ​ ratio of subtended area on sphere to radius squared

    上面最难以理解的概念,大概就是固体角了吧。

    首先我们从二维的角度去理解,弧长的定义为l=nπr180 => 圆形角的弧度d=lr 于是我们可以类比到三维,如上图所示。三维情况下,弧长对应为面积,半径则变为半径的平方,于是我们就可以得到固体角的定义。具体的我们可以将固体角理解为图中锥形区域的角度。

    知道了固体角,下面我们继续了解几个概念。

    1.1.1 Irradiance

    Definition : The irradiance is the power per (perpendicularprojected) unit area incident on a surface point.

    >E(x)dϕ(x)dA>

    注意当平面法向和光线入射方向的夹角不同时,平面接受到的irradiance是不同的。Lambert`s Cosine Law解释了这个不同情况下的irradiance是多少。

    注意:当我们提到光的衰减的时候,我们往往指的是Irradiance的衰减而不是intensity的衰减,很简单因为无论在某一方向上的光传播到多远,其固体角是不变的,但是单位面积上的power是在减少的也就是Irradiance是在减少的。

    1.1.2 Radiance

    Definition :The radiance (luminance) is the power emitted, reflected, transmitted or received by a surface, per unit solid angle, per projected unit area.

    Radiance is the fundamental field quantity that describes the distribution of light in an environment

    从定义上看,我们可以发现Radiance是在Irradiance的基础上多除以了单位固体角(也可以看作是在Intensity的基础上多除以了单位面积)这意味着Radiance比Irradiance多了方向性。

    至此,我们所需了解到的单位就已经介绍完了,可能你现在还是一头雾水,或者是已经有一些思路了,别慌,我们继续往下看。

    1.2 Bidirectional Reflectance Distribution Function (BRDF)

    ​ “哇,这么一大长串,这是什么啊?” 这是我第一次看到这一长串英文的反应,或许把它直译成中文我们可能更有感觉“双向反射分布函数”,好吧,感觉还是不知道什么意思(摊手)。简单的来说BRDF就是当从某一方向打到点p的光,p点的BRDF决定了这束光朝某个方向该怎么反射。具体的来说:

    The Bidirectional Reflectance Distribution Function (BRDF) represents how much light is reflected into each outgoing direction from each incoming direction

    个人觉得比较难理解的是为什么是Radiance / Irradiance 而不是 Radiance / Radiance 这里就要从定义上去理解它,因为 Irradiance 是从单位面积上的power,我们要反映的是从这个方向传过来给这个点上传递的单位面积的能量朝另一个方向上的单位面积反射多少能量所以这里我们要先将入射的Radiance转化为Irradiance,再通过BRDF转化为Radiance。

    知道了这些知识,现在我们就可以回到刚开始我们的渲染方程了。

    渲染方程其实就是基于真实的物理解释了当一个点朝某一个方向出射的Radiance应该是多少。由于它是基于物理的,这个方程是绝对正确和毋庸置疑的。现在的基于物理渲染的光线追踪其实都是在解渲染方程,不同的光追的技术,其实就是用不同的方法去求解渲染方程。那么我们应该怎么去求解它呢?——蒙特卡洛方法给出了一个简单的答案。

    嗯,就先写到这里吧,下一节再专门解释蒙特卡洛方法吧,bye~

    2.参考

    GAMES101-现代计算机图形学入门-闫令琪

  • 相关阅读:
    自动化测试过程中所入的坑3——解决问题思维的转换
    自动化测试所入的坑2
    js原生触发angular事件
    Selenium2Library源码中browser的传递
    Selenium自动化测试中的等待
    Android adb 命令学习笔记
    Robot学习笔记
    Xpath 与Css 定位方式的比较
    Selenium填坑笔记
    python批量更改文件名
  • 原文地址:https://www.cnblogs.com/haiyi/p/12824421.html
Copyright © 2020-2023  润新知