已阅读5页,还剩32页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Liaoning Normal University( 2015 届 )本 科 生 毕 业 论 文 (设 计 )题 目:一个基于 C+的图形渲染引擎学 院: 计算机与信息技术学院专 业: 计算机科学与技术(动画与游戏软件)班级序号: 05 班 01 号学 号: 20111118080007学生姓名: 肖天意指导教师: 徐本强2015 年 5 月i目 录摘 要 .1Abstract .11 背景.21.1 三维图形渲染引擎概述.21.2 GPU 加速渲染技术及立体显示技术简介 .22 三维图形渲染引擎的需求.22.1 需求描述.22.2 需求分析.32.2.1 三维变换.32.2.2 光照着色.32.2.3 纹理映射.32.2.4 加载网格模型.32.2.5 GPU 加速渲染 .33 三维图形渲染引擎的实现.33.1 引擎的架构设计.33.2 图形流水线的实现.43.2.1 数学基础.53.2.2 三维变换.73.2.3 光照着色.83.2.4 光栅化.113.3 纹理.123.3.1 BMP 文件解析 .123.3.2 纹理过滤.133.4 网格模型.133.4.1 网格模型的解析.143.4.2 网格模型的加载及渲染.153.5 雾化.163.6 引擎的封装设计.174 GPU 加速渲染 .174.1 GPU 编程开发工具 .184.2 图形流水线并行模块分析与实现.184.2.1 CUDA 简介 .184.2.2 图形流水线的并行编程模型.184.3 并行计算模块数据处理.195 图形渲染引擎的应用.225.1 图形渲染引擎的编程模型.225.1.1 设备对象.225.1.2 编程模型.235.2 图形渲染引擎的封装.245.2.1 跨平台特性的实现.245.2.2 子系统的实现.255.2.3 三维场景中的物体.265.3 立体成像在图形编辑器中的应用.27ii5.3.1 立体成像原理.275.3.2 立体显示.276 运行结果与总结.286.1 运行结果.286.2 总结.32参考文献.33致 谢.34一个基于 C+的图形渲染引擎第 1 页一个基于 C+的图形渲染引擎摘要: 本文对三维图形渲染引擎的功能需求进行了分析,研究了 3D 图形流水线的基本工作原理,实现了一个简易的 3D 图形渲染引擎,并将其封装应用到一个跨平台 3D 图形编辑器中。该图形渲染引擎实现了对基本三维图形的构建和渲染,三维场景中的光照计算,三维场景雾化效果,加载BMP 位图,并将其作为纹理映射到 3D 图形上,加载 OBJ 网格模型,并给模型设置材质和纹理等功能。通过对硬件加速技术的学习研究,实现 GPU 对图形渲染引擎的加速计算。使用立体成像技术实现 3D 立体显示效果。关键词:三维图形引擎,渲染,三维变换,光照,纹理,网格模型,GPU 加速,图形编辑器Abstract: In this paper, three-dimensional graphics rendering engine needs were analyzed to study the basic principle of 3D graphics pipeline, and implement a simple 3D graphics rendering engine, and packaging applications to a cross-platform 3D graphics editor. The graphics rendering engine to achieve the basic constructing and rendering three-dimensional graphics, three-dimensional scene lighting calculations, the three-dimensional scene atomization loaded bitmap, and map as a texture to 3D graphics, loads mesh, and set up the material and texture to model functions. Through study and research on the hardware acceleration technology to achieve GPU accelerated computing for graphics rendering engine. Using three-dimensional imaging technology to achieve 3D stereoscopic display.Keywords: 3D Graphics Engine,Render,3D Coordinate Transformation,Illumination,Texture, Mesh,GPU acceleration,Graphics Editor.一个基于 C+的图形渲染引擎第 2 页1 背景1.1 三维图形渲染引擎概述随着计算机软及硬件的快速发展,计算机图形学在各个行业的应用也得到迅速普及和深入。计算机图形学已进入三维时代,三维图形在人们周围无所不在,科学计算可视化、计算机动画和虚拟现实已经成为近年来计算机图形学的三大热门话题,而这三大热门话题的技术核心就是三维图形。目前比较成熟的图形渲染引擎有 OpenGL、DirectX ,以及新兴引擎如 AMD 推出的 Mantle 和苹果公司的 Metal,它们的研究开发工作都集中在国外, 而国内的图形渲染引擎开发进程相对迟缓,没有自己的品牌引擎,因此,通过对图形渲染引擎的开发,全面了解并学习其中的技术要点是一次有意义的尝试和探索。1.2 GPU 加速渲染技术及立体成像技术简介图形处理器(Graphics Processing Unit,GPU)是现代 PC 机中的常见硬件设备,它早在 21世纪 90 是年代末就被应用于加速图形渲染。其作为 CPU 的协同处理器,拥有独立的存储设备,拥有同时启动大量线程的能力。与之对应的是,在图形渲染过程中,有大量的计算是线程无关,高度并行的,CPU 的优势正好得以发挥。本文也将采用 GPU 加速图形渲染技术来优化图形渲染引擎的渲染速度。本文使用的立体成像技术采用色分法的成像原理,只要用户佩戴红蓝眼镜后可以在 2D 环境下体验到 3D 立体显示效果。2 三维图形渲染引擎的需求三维图形渲染引擎以为上层应用提供接口的方式存在,其面向的直接用户是上层应用软件(如 3D 图形编辑器) ,所以对其进行详细的需求分析是十分必要的。2.1 需求描述图 2-1 图形渲染引擎用例图一个基于 C+的图形渲染引擎第 3 页一个图形渲染引擎是对底层图形通用算法的封装和一些底层工具的封装,向上层应用程序提供图形渲染服务。通过对图形渲染引擎的需求分析,可知其最重要的功能包括三维建模、三维坐标变换、三维图形渲染、光照着色、物体表面纹理映射、加载并渲染网格模型等。通过对图形渲染引擎的性能需求分析,加快图形渲染速度才能提升图形渲染引擎的实际应用价值,所以本文还是实现了使用 GPU 对图形渲染引擎进行加速。为了使图形渲染引擎拥有一个简易快捷的测试平台,本文对图形渲染引擎做了进一步封装,将其应用至图形编辑器中。具体的用例需求描述如图 2-1 所示。2.2 需求分析2.2.1 三维变换用户可以利用图形渲染引擎进行三维建模。通过设置世界变换矩阵、视点变换矩阵、投影变换矩阵、窗口变换矩阵来对空间中的物体做三维变换,将空间中三维坐标点变换为屏幕上的二维坐标。2.2.2 光照着色用户可以为三维场景添加光照,为场景中的物体设置材质等信息获得比较真实的效果。可以添加多个相同或者不同类型的光源,分别包括点光源、平行光、聚光灯;可以设置不同的光照计算模型及明暗处理方式获得不同的渲染效果。2.2.3 纹理映射用户可以通过使用本文实现的图形渲染引擎加载 BMP 位图,并可以将其作为纹理映射到物体表面。用户使用纹理映射功能具体需求如下:1) 用户可以在顶点信息中给出物体的纹理坐标;2) 用户可以通过 BMP 文件名称加载 BMP 位图;3) 引擎提供接口将纹理绑定到指定的物体上;4) 引擎提供接口控制纹理映射开关;2.2.4 加载网格模型用户可以通过 OBJ 文件名称加载网格模型,引擎需要提供接口渲染指定的已被程序成功加载的网格模型。 2.2.5 GPU 加速渲染在本文实现的三维图形渲染引擎中,用户可以使用经过 GPU 加速计算后的图形引擎接口进行三维图形渲染,图形渲染引擎需要提供一套基于 CPU 图形流水线的 API 和一套使用 GPU 加速计算过后的 API。3 三维图形渲染引擎的实现本章的主要工作内容是实现三维图形渲染引擎的三维图形渲染模块,这也是本文的重点,下面首先介绍三维图形渲染引擎的基本架构。3.1 引擎的架构设计一个基于 C+的图形渲染引擎第 4 页图形渲染模块基础支持模块数学基础支持模块纹理图读取支持模块网格模型加载支持模块CPU 图形渲染模块GPU 图形渲染模块图 3-1 3D 底层图形渲染引擎的基本架构数据输入 模 块 三维图形渲染引擎的基本架构可分为三个主要的模块:数据输入模块、图形渲染模块及基础支持模块。数据输入模块是引擎用于接收用户定义的顶点数据流,顶点信息结构如图 3-2。其中包括顶点坐标 posi,顶点向量 normal,纹理坐标 texcrood,顶点颜色信息 color。图 3-2 顶点信息结构图基础支持模块包含了数学支持模块,纹理图读取支持模块,网格模型加载模块。数学支持模块中,封装了一些计算机图形学算法中常用的数学运算操作。例如向量的标准化,投影和叉乘及矩阵的加法,数乘,矩阵乘法等基本操作。纹理读取支持模块完成对 BMP 图片的读取和解析,以支持图形渲染模块实现纹理映射。 网格模型加载支持模块用于加载由 3dMax、Maya 等三维模型制作软件直接导出的 OBJ 网格模型,用以支持图形渲染模块渲染比较复杂的模型文件。图形渲染模块是底层图形渲染引擎的主要内容,其实现了数据流的一系列转换处理,包括顶点坐标变换,顶点着色处理,像素着色,图形的光栅化等工作。而图形渲染模块又可分为工作在 CPU 下的渲染机制和工作在 GPU 下的渲染机制,这使得引擎可以跨平台工作。3.2 图形流水线的实现简单的三维图形渲染过程就是将空间中的三维物体显示到二维屏幕上的过程,其中包括了三维变换,光照着色,纹理映射等操作。这些操作的顺序并不是固定的,但是主要顺序是确定的:顶点处理,像素处理,光栅化,像素渲染。而此项目的图形流水线各功能模块顺序是确定的,如图 3-3 所示。一个基于 C+的图形渲染引擎第 5 页顶点数据 图元数据图元处理顶点处理像素处理(光栅化)像素渲染世界变换 消隐视口变换、裁剪投影变换纹理映射Alpha 混合等像素操作明暗处理窗口变换光照计算图 3-3 图形流水线3.2.1 数学基础数学模块的功能是实现基本的二维和三维几何代数操作,这个模块中主要定义了二维、三维向量、齐次向量、矩阵以及它们之间的运算关系,这些操作主要包括向量之间的加、减、乘、平移、缩放、旋转运算。其中,三维向量的具体定义如图 3-4。一个基于 C+的图形渲染引擎第 6 页图 3-4 三维向量图此外,还定义了 44 矩阵之间的加、减、乘和矩阵的转置、求逆、求秩以及矩阵与向量之间的运算等,这些运算主要是用于满足向量在不同坐标系之间的变换,这种变换是通过矩阵与向量的乘法操作实现的,具体定义如图 3-5。这些基本的运算是底层三维图形渲染引擎的基础。图 3-5 44 矩阵图本文采用笛卡尔右手坐标系来描述三维空间,采用 44 矩阵来表示坐标变换,使用齐次坐标来描述三维坐标,并将齐次坐标当成列向量来参与矩阵运算。需要注意的一个基于 C+的图形渲染引擎第 7 页是,由于矩阵乘法不满足交换律,所以在做矩阵转换时,如使用矩阵 A,B,C 转换向量v,本文应该按照顺序 C *B* A *v 来完成坐标转换。3.2.2 三维变换三维变换是一个将 3D 空间中的物体正确显示在 2D 屏幕上的过程。从三维空间到二维平面,通常都要经历以下几个步骤:1) 世界变换模型坐标是空间中的物体在自身坐标系中的坐标。在创建三维物体的时候,它们通常拥有自己的一套参考坐标系,通常情况下以物体的中心作为自身坐标系的原点。世界坐标表示的是物体在虚拟空间中的实际位置,世界坐标是绝对坐标,有固定的大小,不随观察者方向的变化而变化。将局部坐标变换为世界坐标,就是将每个物体的中心平移到世界空间中所需的位置,就像拍照过程中将三维物体置于适当位置 。2) 观察变换 观察坐标是以操作者的观察点和观察方向作为参考的坐标,观察坐标所定义的空间称为观察空间。观察坐标系有多种确定方式,在本项目中观察坐标系使用下列方法来确定,如图3-5所示:g图 3-5 观察坐标系图 vweut 眼睛位置是眼睛观察物体时所在位置e,观察者观察的方向可以看成一个向量g,以头顶方向为正方向,记为向上向量t。使用这些向量就能建立一个以e为原点,以uvw为坐标轴的坐标系,w指向g的反方向,v在g和t所确定的平面中:w = -g/|g|; (3-1)u = ( tw )/ (|tw|); (3-2)v = wu; (3-3)然后,通过对世界坐标系进行适量的平移,使得世界坐标系的原点o与视点原点e重合,通过旋转使得世界坐标系的xyz轴与
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年鹤壁辅警协警招聘考试真题附答案详解(培优a卷)
- 2025年阜新辅警招聘考试真题及答案详解(历年真题)
- 2025年黄山辅警协警招聘考试备考题库含答案详解(培优a卷)
- 2025年鄂尔多斯辅警招聘考试题库及一套完整答案详解
- 2025年盐城辅警招聘考试题库及答案详解(名校卷)
- 2025年肇庆辅警招聘考试题库及完整答案详解
- 2025年渭南辅警招聘考试题库附答案详解(典型题)
- 2025年达州辅警招聘考试真题完整参考答案详解
- 2025年潍坊辅警招聘考试题库附答案详解(完整版)
- 2025年阳江辅警招聘考试真题含答案详解(综合卷)
- 水处理生产工(高级)职业技能鉴定考试题库(含答案)
- 2024年高考英语新课标II卷讲评课件
- 二保焊安全操作规程及注意事项
- ISO9001-2026质量管理体系标准要求讲解、运用、推行培训教材
- 电影市场营销策划方案
- 水稳拌合站拆除安全培训课件
- 2025年广西现代物流集团有限公司招聘笔试备考试题及答案解析
- IP形象设计课件
- 香薰蜡烛制作课件
- 2022利达消防LD5503EN 气体灭火控制器使用说明书
- 老年人使用开塞露课件
评论
0/150
提交评论