光模拟 Light Simulator

1 先导

1.1 光与物体表面的作用

  • 吸收
  • 反射
  • 投射

光在界面的反射和折射是光与物质极化和电子相互作用的结果,才有介电常数和折射率这一说。

分清界面透过率和整体透过率。界面透过率小,反射率就大。通过界面的光,吸收越大,整体透过率就越小。

1.1.1 光的吸收

  • 吸收和物质的能带结构有着直接关系。(能带结构?)
  • 简单来说取决于物体的电子是否易于吸收光子能量进行跃迁,
    稳定物质如绝缘体/电解质/水等不易吸收。
  • 金属比较特殊,无带隙,电子处于自由态,不存在跃迁的说法,对光的反射很强。

1.1.2 透明程度

  • 首先取决于材质对光的反射率,然后是材质的吸收以及材质内部的结构是否均匀一致

1.1.3 推荐阅读

为什么玻璃是透明的,而金属不是?

如何理解光的反射/透射和吸收

1.2 反射与折射

1.2.1 折射公式 -> Snell’s law.

  • 入射角度与折射角度的关系

1.2.2 折射与反射比例与角度有关 -> Fresnel’s equation(可由麦克斯韦方程推出)

  • 一般来说在靠近垂直方向观察时候,反射较弱而折射较强
  • 金属的Fresnel效应较弱 绝缘体的Fresnel效应较强

  • kr为反射系数 kt为折射系数, n为相对折射率(入射与折射角度正弦之比)

1.2.3 折射率与折射系数

  • 物体折射率指的是光在真空中的传播速度与光在该介质中的传播速度之比
  • 折射系数说的是反射光与折射光的比例,总为 1 - 反射率 (反射率的计算参见Fresnel euqation)

2 light effects

2.1 镜面反射 specular Reflection

2.2 漫反射 Diffuse Reflection

  • 效果与视角无关
    各个方向出射的光强一致

2.3 高光 Glossy

  • 既非完全镜面也非完全粗糙
  • 微面 microfacet
    In computer graphics we often like to describe rough surfaces, using the image of a surface made of lots of microfacet, where each one of these micro facets is orientated in a slightly different direction and act on its own as a perfect mirror
  • 粗糙程度 roughness
    仍然是镜面反射,但是物体表面是粗糙的,导致反射方向不一致

2.4 子表面射散 Subsurface Scattering

  • 半透明材质
  • 在蜡/用大理石做成的小物体中清晰可见
  • 很薄的有机材料(皮肤 叶子)在用逆强光照射时候也可见

2.5 焦散 Caustics

2.6 柔阴影 soft shadows

  • 与物体表面材质无关

3 光传输 Light Transport

物体的外观由光线如何与物体表面材质发生作用以及光线如何在空间中运动决定
light effect可以被分为两种

  • 物体表面如何与光线交互 shading
    • reflection, transparency, specular reflection, diffuse reflection and subsurface scattering
    • design mathematical models that approximate the way light interacts with matter, at a fraction of the time it would take if these interactions where to be physically simulated
  • 物体如何收到光线 light transport
    • indirect diffuse, indirect specular and soft shadows
    • More generally, light transport is interested in the paths light rays are to follow as they travel from a light source to the eye (which we call light paths).
    • what happens in path?

3.1 全局光照 global illumination

模拟直接光照间接关照(物体没有直接收到光源的照射)

  • 只模拟直接光照
    只需要找到从相机射出的光线与场景中物体的交点, 然后从这些交点向光源射出光线即可(这些光线也叫shadow ray)
  • 间接光照
    可想而知从交点直接向光源发射光线是不够的,因为存在物体收到的是其他物体反射的光线。 可以重复之前发射光线的方法继续寻找新的交点,直到碰到光源或者重复次数达到一定数目。(极大的计算量,计算量主要都来自于光线与物体求交的计算。)

其他模拟方法包括point cloud based, photon maps, virtual point lights, shadow maps等等。

Radiosity也可以用来计算全局光照,如今使用不多,主要在80 90年代。

3.2 problem

  • 产生大量的噪音 Noise
    直接使用ray tracing计算间接光照有时候反而导致noise
  • 难以模拟焦散 Caustics
    从光源出发才是最自然的

    无法从P点得知光线的来源

3.3 Blinn’s Law and Moore’s law

  • Moore’s law
  • Blinn’s law

3.4 how many sencondary rays is needed ?

  • mirror needs 1 ray
  • transport needs 2 rays
  • diffuse needs many rays

3.5 unidirectional

只从eye出发追踪到light source
而不从light source出发

3.6 bidirectional

从eye出发发射光线到光源的同时,从光源逆向光线

4 shading

4.1 反射率 albedo

物体的颜色显然不是仅仅取决于落到物体上的光照强弱,还与物体本身反射率有关