论文部分内容阅读
随着互联网产业的蓬勃发展,Web相关技术体现出了越来越重要的价值。而任何一个有吸引力的Web程序中都必不可少的元素之一就是图形。但是,随着Web程序的复杂度不断提高,传统的二维平面图形已无法满足程序的需要,于是,用于Web程序的交互式三维图形应用应运而生。但是早期的Web交互式三维图形技术存在不足之处,如Java Applet占用资源多,性能低,且无法利用图形硬件加速功能;Flash和Silverlight技术虽然性能较高,但是却存在需要插件支持和难以跨平台使用两大问题。而WebGL技术的出现完美的解决了上述问题,这项绘图技术标准通过为OpenGL ES2.0增加一个JavaScript绑定,将JavaScript和OpenGL ES2.0结合在了一起,从而为HTML5Canvas提供了硬件3D加速渲染。这样Web开发人员就可以借助系统显卡来在浏览器里更流畅地展示复杂的3D场景和模型,从而为开发人员开发通用的高性能Web交互式三维图形应用提供了可能。但是直接利用底层WebGL接口进行开发,效率非常低下,因此需要将常用的WebGL功能封装起来,为用户提供一种中间件机制,从而使用户在无需了解底层细节的情况下,快速开发Web交互式三维图形应用。这种中间件机制,通常就被称为3D图形引擎。本文的主要工作就是研究并实现基于WebGL的3D图形引擎。本文首先对3D引擎的基本架构和目前主流的3D引擎进行了介绍,接着对3D引擎相关的理论背景知识进行了探讨,然后对基于WebGL的3D引擎SimpleGL的设计与实现进行了详细的研究,最后通过与其他引擎的对比测试分析了该引擎的优缺点。本文主要内容如下:第一章绪论。首先介绍了WebGL技术出现的背景和研究基于WebGL的3D图形引擎的必要性;接着介绍了3D引擎的基本架构和主要组成模块,并对各模块的主要功能进行了研究,随后对目前主流的3D引擎(如Quake系列、Unreal系列等商业引擎和Torque和Irrlicht等开源3D引擎)进行了介绍。第二章相关理论背景。主要介绍了3D引擎开发中涉及到的一些数学理论基础:包括坐标系与标架、齐次坐标表示、常用的仿射变换(如平移、缩放、旋转)和透视投影技术、光照技术(包括平行光、点光源、环境光等)等。随后介绍了WebGL渲染管线和着色器相关知识。第三章系统设计与实现。首先介绍了SimpleGL图形引擎的基本架构,随后分别对场景图模块、资源管理模块、网格模块、游戏资产序列化模块、材质和着色器模块、3D模型导入模块、输入模块和数学库这几大模块的设计与实现进行了详细的分析和研究。重点介绍了各个模块的设计思想,并对主要的方法和属性进行了说明。第四章系统性能测试与分析。通过单一绘制调用、视见体裁剪和材质改变这三项基准测试,对SimpleGL引擎性能进行了测试。并通过与Three.js和Unity引擎进行对比,分析了SimpleGL引擎的优缺点。第五章总结与展望。对SimpleGL图形引擎的设计与实现进行了评价,并对本文所作的工作进行了总结。指出了该引擎的一些优点和目前存在的一些不足,并对引擎未来的进一步改进(如增加音效模块、物理引擎模块、动画模型模块等)进行一些展望。