光场 Light Field / lumigraph
定义
把人能看到的东西记录下来,然后放在眼前代替真实世界,可以得到一样的视觉效果。这个提前记录下来的东西,就是简易版的光场。
全光函数
Plenptic Function(全光函数): 用于描述前面提到的“提前记录好的人能看到的东西” ,the set of all things that we can ever see.
函数定义:
$$ P(\theta, \phi, \lambda, t, V_x, V_y, V_z) $$
说明:
\(\theta, \phi\):朝某个方向看
\(\lambda\):颜色
t:时间
\(V_x, V_y, V_z\):在某个位置器
返回值:在任意一个位置,任意的时刻,朝任一个方向,所接收到的任意波长的光的强度。
光场
光场是从全光函数的一个子集。即在任意一个位置,朝任一个方向,去(光线可逆)的光的强度。
❗ 光场参数中的位置和方向都是2D的。 ✅ 物体表面的任意一个位置,可以用纹理坐标(u, v)表示。3D空间中的方向可以用\(\theta, \phi\)表示,因此都是2D的。
因此得到了这样的结果:
通过光场可以得到物体从任意位置的观测。
记录光场
实际上可以不关心到底是什么物体,只需要物体的光场。
但在记录的时候,描述每一根光线的方式有点不同。这里面使用2D position和2D position来描述“任意一个位置,朝任一个方向”。
❓ [?] 前面提到用“2D位置+2D方向”,这里提到用“2D位置和2D位置”,其实是同一个目的,都是用于描述光场中的一根光线,为什么会需要两个不同的参数化方式呢?
光场参数化
方式一:
参数为2D position和2D direction
方式二:[25:04]
参数为2D position (u, v)和2D position (s, t)
参数化效果
[27:41]
图a):从同一个位置,看向目标的不同位置,得到的是原图
图b):站在不同位置,看向目标的同一位置。
Fly's Eye 光线
苍蝇眼睛的呈像原理就是光场。
👆 左图三个颜色代表来自三个方向的光,不是代表光的三元色成分
通过 f 将像素接收到的 irradiane 分解成 radiance 分别存储
💡 万物皆可prepare,关键是方便的测量方式与合适的存储结构。
本文出自CaterpillarStudyGroup,转载请注明出处。
https://caterpillarstudygroup.github.io/GAMES101_mdbook/