《游戏设计雾化》PPT课件.ppt

《游戏设计雾化》PPT课件.ppt

ID:52093901

大小:986.50 KB

页数:19页

时间:2020-03-31

《游戏设计雾化》PPT课件.ppt_第1页
《游戏设计雾化》PPT课件.ppt_第2页
《游戏设计雾化》PPT课件.ppt_第3页
《游戏设计雾化》PPT课件.ppt_第4页
《游戏设计雾化》PPT课件.ppt_第5页
资源描述:

《《游戏设计雾化》PPT课件.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、mLecture12 Fog——雾化雾化效果是计算机图形学中应用最广的效果之一。能显著地增加视觉效果的真实感提供一定的深度感。在实时图形程序,特别是游戏设计程序中,为了确保图形系统的运行速度,图形开发人员往往在位于观察点远处的场景使用较为简单的三维模型,甚至不绘制物体,而在近处使用复杂模型,这样就可能造成物体变形、突然出现或突然消失等失真现象,雾化效果可以有效地避免这种失真现象。mContents雾化效果实现原理雾化混合因子计算方法顶点雾化与像素雾化添加雾化效果m在Direct3D图形系统中,

2、雾化是通过将景物颜色与雾的颜色,以随物体到观察点距离增加而衰减的混合因子混合而实现的。距离观察点越近,混合因子越大,场景内的物体颜色越大,雾的颜色越小,景物就越清晰;随着观察点拉远,混合因子逐渐变小,场景中物体的颜色变小,而物的颜色变大,景物越来越模糊。Direct3D计算雾化的方法如下:其中,color表示最终经过雾化处理的颜色,colorscene表示物体原来的颜色,colorfog表示应用程序中定义的雾的颜色,f表示雾化混合因子m雾化效果实现原理color=f*colorscene+(1-

3、f)*colorfog影响雾化效果的因素有两个:一个是雾化混合因子,另一个是雾的颜色。通常指定雾的颜色为白色,当然也可以指定其他任何颜色以实现特殊效果。大多数情况下考虑的是雾化混合因子对于雾化效果的影响通过指定Direct3D雾化计算公式,可以定义Direct3D图形程序中雾化效果随距离增加的趋势,雾化公式计算的结果就是雾化混合因子。m雾化混合因子计算方法color=f*colorscene+(1-f)*colorfog雾化效果是物体可见程度的反映,雾化混合因子越小,物体的可见度越低。枚举常量D

4、3DFOGMODE定义了三种雾化公式:m雾化混合因子计算方法typedefenum_D3DFOGMODE{D3DFOG_NONE=0,D3DFOG_EXP=1,D3DFOG_EXP2=2,D3DFOG_LINEAR=3,D3DFOG_FORCE_DWORD=0x7fffffff,}D3DFOGMODE,*LPD3DFOGMODE;雾化混合因子f随距离d而呈线性、指数、指数平方变化。由雾化公式计算得到的雾化混合因子f将用于Direct3D雾化计算公式,计算最终颜色。从三种雾化混合因子f计算公式和雾

5、化计算公式可以看出,物体距离观察点越远,f越小,物体原色越小,雾化颜色越多,物体越模糊。m雾化混合因子计算方法Direct3D采用了两种方法进行雾化处理,顶点雾化和像素雾化。顶点雾化是在Direct3D顶点坐标和光照流水线阶段实现,它根据物体多边形每个顶点到观察点的距离计算每个顶点的雾化程度,然后在多边形面上根据计算结果进行插值,得到每个像素点的值。像素雾化在Direct3D像素绘制阶段实现,它根据每个像素相对于观察点的深度计算雾化效果值,与顶点雾化相比,像素雾化计算更为精确,但同时也耗费更多的

6、系统资源。m顶点雾化与像素雾化顶点雾化与基于范围的雾化有时候,使用雾化会导致图像失真,即物体颜色和雾化颜色以意想不到的方式混合。对于顶点雾化,在默认情况下,雾化混合因子计算公式中的距离d为物体在观察坐标系中的深度值,这在某些情况下会导致失真。例如,在一个场景中有A、B两个物体,它们与观察点的距离相同,从理论上说,它们应具有相同的雾化效果,然而Direct3D默认以它们在观察坐标系中的深度值(即z值)作为d计算雾化效果,因此会导致物体A和B的雾化效果明显不同。m顶点雾化与像素雾化顶点雾化与基于范围

7、的雾化Direct3D为顶点雾化提供了基于范围的雾化处理(range-basedfog),在基于范围的雾化处理中,使用物体和观察点之间的实际距离作为参数d进行雾化混合因子的计算,因为雾化效果更精确,代价是计算量大。要使用基于范围的雾化,首先需要检查当前设备是否支持基于范围的雾化,检查的示例代码如下:m顶点雾化与像素雾化D3DCAPS9caps;g_device->GetDeviceCaps(&caps);if(!(caps.RasterCaps&D3DPRASTERCAPS_FOGRANGE))

8、returnfalse;如果设备支持基于范围的雾化处理,则需激活:g_device->SetRenderState(D3DRS_RANGEFOGENABLE,TRUE);像素雾化和与眼相关深度雾化顶点雾化得到了Direct3D硬件广泛支持,而且这种类型的雾化处理在大多数情况下可以正常工作,但当使用较大的多边形时也会出现问题。如果某个顶点与虚拟摄像机太近,而另一个顶点在雾化区域的某个位置,那么顶点雾化就会在这两个顶点之间进行线性插值,得到各个像素的雾化效果,这样计算的结果与雾化方程式对每个像素应用

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。