- 0
- 0
- 约5.41千字
- 约 5页
- 2017-02-01 发布于重庆
- 举报
游戏程序设计3
任课教师:桂江生
《游戏开发》
(2013-2014学年第1学期)
实
验
报
告
学号:2011329700130
姓名:张军伟
班级:11数媒1班
实验三:基于BSP技术的室内场景渲染
一、实验目的
掌握BSP的原理,熟悉Ogre中基于BSP技术的室内场景渲染的使用方法.
二、实验仪器
Visual Studio 2008
三、实验原理及过程
//网上检索BSP相关技术
BSP Trees英文全称为Binary Space Partioning trees,二维空间分割树,简称为二叉树。
BSP原理
建立BSP Trees的最初想法是获得一个图元的集合,这个集合是场景的一部分,然后分割这个图元集合为更小的子集合,这里必须注意子集合必须为“凸多边形”。这意味着子集合中任一个多边形都位于相同集合中其它多边形的“前面”。
BSP相关技术
隐藏面剔除
室内场景中光照运算
BSP树的预渲染
//利用Ogre实现基于BSP技术的室内场景渲染描述程序实现时的思路包括对每个调用的API进行详细说明。
关于Radiosity的算法最早是由Goral、Cindy M、Torrance、Kenneth E、Greenberg、Donald P、Battaile和Bennett在论文《Modelling the interaction of light between diffuse surfaces》提出的。他们使用Radiosity来模拟能量在漫反射表面之间进行传送,漫反射表面对照到表面上的光线在所有的方向上都进行相同的反射,和它相反的是镜面反射表面,它只在反射方向上传播反射光。由于漫反射表面的这个特性,这就意味着对于所有的观察角度而言看起来表面都是相同的,这样对于场景中的每一个表面只需要进行一次光照运算,而且可以在场景的预渲染时进行,因此这项技术被大量的3D游戏所采用。
下面我再简短的讲解一下Radiosity是如何工作的,而将主要的精力放在如何使用BSP树来加速Radiosity的计算,对于Radiosity的详细介绍请参考前面的章节。Radiosity技术是设计用来使场景中光照看起来更加真实和光滑,如果我们使用一个一直向前传播而不考虑反射的光照模型,那么当场景中的灯光照亮场景中的物体时,并不会计算远处经过反射过来的光线,这样场景中的阴影看起来非常尖锐而物体表面也看起来非常不真实。为了使用radiosity技术我们需要把场景分割成一块一块很小的部分,每一部分我们称它为patch,每一个patch都有一个初始化的能量级别,如果它不是一个灯光这样的发光体的话通常为0,有许多方法来分配场景中的能量,这里我们将要使用的方法称为交互式radiosity。这个方法的过程是我们从场景中未发送能量的级别最高的patch开始发送能量,能量经过传递后将不再发送能量的patch的等级设为0,重复这个过程直到场景中的每一个patch的能量等级都小于一个预定值为止。
当能量从一个patch(j)开始发送到另一个patch(i)时我们使用下面的公式:
Bi = Bi + Bj * Fij * Ai / Aj
这里Bi = patch(i)的能量级别 Bj = patch(j)的能量级别
Ai= patch(i)的作用区域 Aj = patch(j)的作用区域
Fij = patch(i)与patch(j)之间的系数
在公式中系数Fij是由以下公式来确定的:
Fij = (cos qi * cos qj) / d2 * Hij
这里Fij = patch(i)与patch(j)之间的系数
qi = patch(i)与patch(j)法线之间的夹角
qj = patch(i)与patch(j)法线之间的夹角
d = patch(i)与patch(j)之间的距离
Hij = patch(i)与patch(j)之间的可见性系数。如果在两个patch之间只有一条光线可以跟踪,这个值为1,如果没有光线可以跟踪为0。一般情况下由于每一个patch都不是一个点而是一个区域,因此光线有很多条。
从上面的公式中我们可以看到在场景中进行radiosity计算是非常耗费时间的。这个函数的复杂度为O(n3),这里的n为场景中patch的数量。由于对于场景中每一个patch你需要发送最少一条光线到其它patch上,因此需要对场景中的几乎所有的多边形都进行光线跟踪计算。在上面的公式中系数H的计算非常耗费时间,下面我们将看一下如何在BSP树中对它的计算进行优化。
BSP树中的radiosity计算
在进行场景中的光照计算之前需要把场景中的面分割为patch,一个方法是在开始的时候设定每一个patch为预定的大小,当计算每一个patch的能量时
您可能关注的文档
- 计算机图形学OpenGL实验四.doc
- 计算机图形学_实验报告.doc
- 实验四 框架、层和行为的综合应用.doc
- 成教学院毕业论文格式(A4纸型).doc
- 11281024_徐乾舜_智能计算基础.docx
- (html)Skylin二次开发初学者范例.doc
- CAXA教案(改编).doc
- TopSolid家具设计实例教程.doc
- 毕业论文英文文献翻译-基于ARM的生物发酵智能控制系统的设计.doc
- 网页设计模拟模拟试题.doc
- 国际医院工程混凝土施工方案(创鲁班奖).doc
- 国际医院工程人货电梯基础方案(SC200_200型,创鲁班奖).doc
- 国际医院工程季节性施工方案(43页,鲁班奖工程).doc
- 大型住院和医技综合大楼基础工程施工方案(鲁班奖).doc
- 三等奖-国家核与辐射安全监管技术研发基地建设项目施工组织设计-总承包公司 来源: 资料小筑.doc
- 国际医院工程钢筋工程施工方案(创鲁班奖).doc
- 国际医院工程总承包管理施工方案(附表格,创鲁班奖).doc
- 国际医院工程通风与空调工程施工方案(43页,鲁班奖工程).doc
- 2018电力数据通信网络工程初步设计文件内容深度规定.docx
- 2023铁路道岔缺口监测系统设备.docx
原创力文档

文档评论(0)