现在的位置: 首页 > 综合 > 正文

[OpenGL 2.0] 体积雾 | 体渲染初步

2013年04月06日 ⁄ 综合 ⁄ 共 669字 ⁄ 字号 评论关闭

上面是雾的浓度由低到高的两张截图,

由于是初步尝试所以以下的描述可能存在问题

----------------------------

这里的体积雾是一种后期效果,是对体渲染的一个初步尝试,主要步骤包括视线测交和积分。

视线测交在这里就是测试视线与一个虚拟box的交点,这个有简洁的实现方法;

但沿路径积分部分就纯粹是试验性质的,尽管就结果而言还是比较理想的,看来微积分要好好复习了...

----------------------------

这里面的体积雾与传统的硬件雾效是有区别的,

传统的做法是使用与点相关的某项参数的二次表达式(即 ax^2 + bx + c )的值

来产生混合参数衰减场景的颜色,

常见的参数比如点与视点的距离, 点与某个平面的距离,这些是与点的位置有关的,

或是更直接的单独赋予点的雾坐标等等

----------------------------

而体积雾是将雾空间作为一种场,

然后沿着视线逐步混合衰减的(即模拟积分的过程)

体积雾只是一种特殊的应用而已,在这里它是一种线性场,

我们还可以赋予其他的场特性(其实就是函数关系)来产生不同的效果,

现在常用的方式是使用三维纹理记录空间中的各种场数据(譬如速度,密度)模拟流体,云彩等等

也可以用来显示三维点阵数据,譬如医学上的一些应用,比如显示器官的立体图像,

因为通常数据是由层片的形式采集的而不是网格形式的,所以这种方法更适合。

----------------------------

总而言之,体渲染就是用来模拟用三角形网格不易于模拟的事物,

按照Nvidia Gems里面某一章的标题就是

“超越三角形”

抱歉!评论已关闭.