3D图形学(8):基于图像的渲染

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq826364410/article/details/88937021

内容引自《Real Time Rendering 3rd》

基于图像的渲染(Image-Based Rendering,简称IBR)

一、 天空盒 Skyboxes

环境贴图(environment map)可以代表本地空间入射光亮度。虽然环境贴图通常用于模拟反射,但它们也可以直接用来表示环绕环境的远处物体。任何独立于视图的环境地图表示都可以用于此目的;立方体贴图(cubic maps)是最为常见的一种环境贴图。环境贴图放置在围绕着观察者的网格上,并且足够大以包含场景中所有的对象。

 

二、公告板 Billboarding

我们将根据观察方向来确定多边形面朝方向的技术叫做公告板(Billboarding,也常译作布告板)。而随着观察角度的变化,公告板多边形的方向也会根据需求随之改变。与alpha纹理和动画技术相结合,可以用公告板技术表示很多许多不具有平滑实体表面的现象,比如烟,火,雾,爆炸效果,能量盾(Energy Shields),水蒸气痕迹,以及云朵等。

基本原理:本质是构建旋转矩阵,一个变换矩阵需要3个正交基向量。通常是表面法线、指向上的方向、指向右的方向。还需要指定一个锚点,锚点在旋转过程中是固定不变的。选择模型空间的原点为广告牌的锚点。

例子:当模拟粒子效果时,我们希望广告牌的法线方向是固定的,即总是指向视角方向,指向上的方向是可变的。根据初始的表面法线(视角方向)和指向上的方向,得到向右的方向,对其归一化后,再由法线方向和指向右的方向计算正交的指向上的方向,以计算得到新的顶点位置。

有三种不同类型的Billboard,分别是:

Screen-Aligned Billboard 对齐于屏幕的公告板
World-Oriented Billboard 面向世界的公告板
Axial Billboard 轴向公告板
 

其中:

  • Screen-Aligned Billboard的n是镜头视平面法线的逆方向,u是镜头的up。
  • Axial Billboard的u是受限制的Axial, r = u* n,(n是镜头视平面法线的逆方向,或,视线方向的逆方向),最后再计算一次n' = r * u,即n'才是最后可行的代入M的n,表达了受限的概念。
  • World-orientedbillboard就不能直接使用镜头的up做up,因为镜头roll了,并且所画的billboard原本是应该相对世界站立的,按Screen-Aligned的做法就会随镜头旋转,所以此时应该r = u * n(u是其在世界上的up,n是镜头视线方向的逆方向),最后再计算一次u = r * n,即u'才是最后的up,即非物体本身相对世界的up,亦非镜头的up。

 

三、颜色校正 Color Correction
 

色彩校正(Color correction)是使用一些规则来转化给定的现有图像的每像素颜色到其他颜色的一个过程。颜色校正有很多目的,例如模仿特定类型的电影胶片的色调,在元素之间提供一致的外观,或描绘一种特定的情绪或风格。一般而言,通过颜色校正,游戏画面会获得更好的表现效果。

颜色校正通常包括将单个像素的RGB值作为输入,并向其应用算法来生成一个新的RGB。颜色校正的另一个用途是加速视频解码,如YUV色彩空间到RGB色彩空间的转换。基于屏幕位置或相邻像素的更复杂的功能也可行,但是大多数操作都是使用每像素的颜色作为唯一的输入。

对于一个计算量很少的简单转换,如亮度的调整,可以直接在像素着色器程序中基于一些公式进行计算,应用于填充屏幕的矩形。

而评估复杂函数的通常方法是使用查找表(Look-Up Table,LUT)。由于从内存中提取数值经常要比复杂的计算速度快很多,所以使用查找表进行颜色校正操作,速度提升是很显著的。

 

四、镜头眩光和泛光 Lens Flare and Bloom

镜头眩光(Lens flare)是由于眼睛的晶状体或者相机的透镜直接面对强光所产生的一种现象,由一圈光晕(halo)和纤毛状的光环(ciliary corona)组成。光晕的出现是因为透镜物质(如三棱镜)对不同波长光线折射数量的不过而造成的,看上去很像是光周围的一个圆环,外圈是红色,内圈是紫红色。纤毛状的光环源于透镜的密度波动,看起来像是从一个点发射出来的光线。Lens flare是近来较为流行的一种图像效果,自从我们认识到它是一种实现真实感效果的技术后,计算机便开始模拟此效果。

泛光(Bloom)效果,是由于眼睛晶状体和其他部分的散光而产生,在光源附近出现的一种辉光。在现实世界中,透镜无法完美聚焦是泛光效果的物理成因;理想透镜也会在成像时由于衍射而产生一种名为艾里斑的光斑。

常见的一个误解便是将HDR和Bloom效果混为一谈。Bloom可以模拟出HDR的效果,但是原理上和HDR相差甚远。HDR实际上是通过映射技术,来达到整体调整全局亮度属性的,这种调整是颜色,强度等都可以进行调整,而Bloom仅仅是能够将光照范围调高达到过饱和,也就是让亮的地方更亮。不过Bloom效果实现起来简单,性能消耗也小,却也可以达到不错的效果。

 

五、景深 Depth of Field

在光学领域,特别是摄影摄像领域,景深(Depth of field,DOF),也叫焦点范围(focus range)或有效焦距范围(effective focus),是指场景中最近和最远的物体之间出现的可接受的清晰图像的距离。换言之,景深是指相机对焦点前后相对清晰的成像范围。在相机聚焦完成后,在焦点前后的范围内都能形成清晰的像,这一前一后的距离范围,便叫做景深。

 

六、运动模糊 Motion Blur

现实世界中,运动模糊(Motion Blur,或译为或动态模糊),是因为相机或者摄影机的快门时间内物体的相对运动产生的。在快门打开到关上的过程中,感光材料因为受到的是物体反射光持续的照射成像。即在曝光的这个微小时间段内,对象依然在画面中移动,感光材料便会记录下这段时间内物体运动的轨迹,产生运动模糊。

我们经常在电影中看到这种模糊,并认为它是正常的,所以我们期望也可以在电子游戏中看到它,以带给游戏更多的真实感。

若无运动模糊,一般情况下,快速移动的物体会出现抖动,在帧之间的多个像素跳跃。这可以被认为是一种锯齿,但可以理解为基于时间的锯齿,而不是基于空间的锯齿。在这个意义上,运动模糊可以理解为是一种时间意义上的抗锯齿。

正如更高的显示分辨率可以减少但不能消除锯齿,提高帧速率并不能消除运动模糊的需要。而视频游戏的特点是摄像机和物体的快速运动,所以运动模糊可以大大改善画面的视觉效果。而事实表明,带运动模糊的30 FPS画面,通常看起来比没有带运动模糊的60 FPS画面更出色。

实现运动模糊的方法大致分3种:

  1. 直接渲染模糊本身。通过在对象移动之前和之后添加几何体来完成,并通过次序无关的透明,避免Alpha混合。
  2. 基于累积缓冲区(accumulationbuffer),通过平均一系列图像来创建模糊。
  3. 基于速度缓冲器(velocity buffer)。目前这个方法最为主流。创建此缓冲区,需插入模型三角形中每个顶点的屏幕空间速度。通过将两个建模矩阵应用于模型来计算速度,一个用于最后一个帧,一个用于当前模型。顶点着色器程序计算位置的差异,并将该向量转换为相对的屏幕空间坐标。

运动模糊对于由摄像机运动而变得模糊的静态物体来说比较简单,因为往往这种情况下不需要速度缓冲区。如果需要的是摄像机移动时的运动感,可以使用诸如径向模糊(radial blur)之类的固定效果。

猜你喜欢

转载自blog.csdn.net/qq826364410/article/details/88937021