赞
踩
为了建模这种非刚性物体的渲染,体渲染把气体等物质抽象成一团飘忽不定的粒子群。光线在穿过这类物体时,其实就是光子在跟粒子发生碰撞的过程。
下图是体渲染建模的示意图。光沿直线方向穿过一堆粒子 (粉色部分),如果能计算出每根光线从最开始发射,到最终打到成像平面上的辐射强度,我们就可以渲染出投影图像。而体渲染要做的,就是对这个过程进行建模。为了简化计算,我们就假设光子只跟它附近的粒子发生作用,这个范围就是图中圆柱体大小的区间。
体渲染把光子与粒子发生作用的过程,进一步细化为四种类型:
吸收 (absorption):光子被粒子吸收,会导致入射光的辐射强度减弱;
放射 (emission):粒子本身可能发光,比如气体加热到一定程度就会离子化,变成发光的「火焰」。这会进一步增大辐射强度;
外散射 (out-scattering):光子在撞击到粒子后,可能会发生弹射,导致方向发生偏移,会减弱入射光强度;
内散射 (in-scattering):其他方向的光子在撞到粒子后,可能和当前方向上的光子重合,从而增强当前光路上的辐射强度。
出射光与入射光之间的变化量,可以表示为这四个过程的叠加:
我们先剖析下吸收的过程。
(文章最后提供了常微分方程的求解方法,感兴趣的读者可自行查阅)。
公式 (3) 有丰富的物理意义。
不同光学厚度下,光线透射度对比
除了吸收之外,粒子本身也可能发光。
粒子除了吸收光子,也可能会弹射光子,这个过程称为外散射,即光子被弹射出原本的光路,导致光线强度减弱。
光子可以被弹射走,自然就有其他光路的光子被弹射到当前光路,这一过程就是内散射。
内散射的过程比外散射又更加复杂,因为弹射到当前光路的光子可能来自多条不同的光路,因此需要综合考虑其他光路的辐射强度以及各种弹射角度。
我们把以上四个过程都综合到一个公式中:
公式 (11) 在计算机中是无法表达的,需要进一步离散化。
体渲染公式 (9) 是一种很典型的常微分方程 (ordinary differential equation, ODE)。
这篇文章基本把体渲染建模的原理和公式推导介绍完了,并顺带推出了 NeRF 中最重要的两个公式。从中可以看出,NeRF 对体渲染做了一些简化,但整体上遵循体渲染的模型框架。NeRF 所说的神经辐射场,其实就是用网络来建模场景中的光学厚度以及自发光颜色等信息,这也是 NeRF 最重要的贡献。
下一章会进一步深入 NeRF 的建模过程,看看如何把深度学习融入到整个体渲染框架中,从而实现三维重建。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。