一种可扩展的三维图形引擎框架技术

更新时间:2024-01-17 作者:用户投稿原创标记本站原创 点赞:5485 浏览:17192

【摘 要】传统的三维图形引擎软件结构复杂,场景、资源和渲染的过程之间耦合度大、关联性强,新技术新功能难以及时的嵌入和集成,针对这样的问题,提出一种可扩展的三维图形引擎框架技术,该体系从三维渲染的场景组织、更新、剪裁和渲染的流程中,建立基于对象和组件的体制,从资源的访问、管理和装配,从对象的关系、构建和组织,从组件的封装、集成和扩展等方面进行构建,围绕这些设计思路,建立一种基于可扩展技术的三维图形引擎框架,便于开发者能够灵活建立应用框架,集成各类算法资源,快速组建面向各类应用的仿真虚拟平台.

【关 键 词 】可扩展 图形引擎 插件集成 场景图

一、前言

三维图形引擎技术一直以来,都是三维虚拟仿真及应用领域的核心和热点,随着D3D、OpenGL等三维图形环境的快速发展,计算机图形学研究方向上新算法新技术的不断创新,怎样才能够融合各类资源和技术,及时应用各种三维图形新技术,是三维图形引擎技术研究和应用的关键之一.从三维图形引擎的发展历史来看,也从面向单一应用的专用绘制引擎,向着具备扩展能力、面向通用化的图形引擎而发展,从而改变单一专用引擎不便扩展,难以嵌入新技术和新功能,应用开发难度大的问题.从国内外的发展来看,通用化的图形引擎也历经早期的OpenInventor等小型引擎,到现在日趋完善的OGRE、OSG等大型开源渲染引擎,以及Unity3D、Unreal Engine等优秀的知名商业产品,其发展过程的目标也是通过良好的结构和框架设计,突出引擎框架的可扩展性、通用性和模块化,从而减小软件模块之间的耦合度,通过灵活可装配的结构和组件,提供用户自由的筛选和集成所需的资源和内容、嵌入适应需求的模块和算法、快速构建应用软件[1].本文就是在这方面,结合当今在计算机图形学和软件设计模式上的研究,以设计基于可扩展性的对象、场景和组件体系,形成具备灵活性、通用性、自主性等特点的三维仿真渲染图形引擎.

二、图形引擎功能需求

面向灵活、通用的可扩展三维图形引擎框架,需具备支持快速开发、平立性、可写作可组装等的要素,具体的说,包括以下需求:

(一)良好的封装性

良好的框架应具备封装底层D3D/OpenGL等图形API实现细节的能力,并能够随时支持最新的扩展技术和特性,通过良好且简洁的接口,为用户提供便捷的应用层接口界面,用户能够根据软件开发的功能和技术要求,快速实施平台软件应用技术架构的设计、完成自主代码的编写任务和应用平台的形成,而无需过多的考虑底层三维图形接口的实现细节和内容;

(二)可扩展性架构

通用而灵活的引擎技术架构,需充分考虑体系的可扩展性能力,具体的体现在于,其一是场景图形和架构具有良好的层次组织关系,核心对象和资源具有模板化的能力,如可扩展的场景节点、渲染属性和交互事件管理机制等,便于用户参照模板的规范和接口,设计和应用最新的技术算法和功能体,并集成到体系中去;

(三)可写作组装性

通用的框架面向的是多变的用户需求和用户环境,因此,系统、模块和组件之间应能够保持良好的低耦合度和独立性,用户能够自由选择适合自己应用背景、软硬件条件的资源和对象组件,对系统进行按需写作和裁剪,实现满足不同实时性、逼真性、功能性的应用平台能力,实现系统的灵活组装;

(四)可移植性能力

用户所面向的环境可能是多种多样,如Windows、Unix和Linux等不同的桌面操作系统和嵌入式操作系统,保持在不同操作系统之间的可移植能力,使得基于引擎平台所开发的应用程序,只需要经过简单的与平台相关的适应性接口适配和编写,就可以编译并运行在这些不同的系统之上,而无需关心更多的代码移植和兼容性问题;

(五)可伸缩的性能

通用的技术架构能够满足和适应用户在不同环境和特定领域的功能和性能需求,引擎能够提供多种的场景组织方法、剪裁技术、渲染状态排序、渲染图生成、顶点数组/显示列表、缓冲区对象、着色语言等内容,并结合细节层次技术、节点写作技巧等方法,提供场景的动态调度控制和不同的多线程更新及渲染机制,这些内容皆可根据具体的情况由用户选择使用,以根据应用环境的特点形成不同的平台能力.

三、图形引擎设计方法

(一)设计理论准则

系统是指面向特定的功能和领域、按照某些规律结合在一起,从而相互依存、相互作用的各类实体和对象的集合.系统的基本特征是其整体性与相关性.以下从系统学的角度来分析和说明可扩展的三维图形引擎框架技术的基本理论和准则.

1.系统的开放性

系统开放性是指系统内对象及子系统与外部环境之间的信息和资源的交互,首先,平台的组织架构所具备的开发性特征,这种开发性包括可扩展性、可移植性、可组装性和可伸缩性,它能够允许用户基于开放的技术架构灵活的调整组件和功能体,并且便于用户对核心场景及图形算法、渲染技术进行选择、扩充和更新,从而保证体系对用户需求发展和未来技术发展的可适应性;然后是系统的接口层次所具备的开放性,通过定义规范且具备可扩展性的接口界面,不同层次的接口负责完成不同层次内外的信息交互和控制,并且能够适应信息的不同载体和来源,如基于网络、文件、数据流等不同信息的存储模式.

2.系统的复杂性

三维图形应用软件由于其所涉及的多样化技术领域,具有结构复杂、内容庞大、信息交互负担重、资源管理和性能技术要求高的特点,具体的说,依托于三维引擎的应用处理、更新剪裁和渲染呈现等核心流水线过程,体系涵盖了组件和结构管理模型、系统资源和内存的分配方法、场景对象和数据的组织形式、渲染图形和状态的有效控制、事件和交互的灵活调度等各方面,怎样能够有机的组合和利用各种软硬件环境和算法技术,以处理复杂且多样的图形和信息数据资源,把系统的复杂性和多样性通过结构合理的体系框架所分解,是可扩展体系架构的关键任务之一. 3.系统的层次性

系统平台具有多层次性的特点,多层次性反应在体系结构的设计和组织过程之中,平台架构可以根据不同层次的任务进行划分,包括核心层、渲染层、控制层、接口层等,以合理且有层次的方式处理不同的信息和内容,核心层构建基本的场景图和对象关系、渲染层基于不同三维图形环境,完成图形对象的状态排序和渲染呈现、控制层基于不同的设计模式完成与用户和系统的事件交互、接口层通过标准的接口协议,实现与多样化数据信息的输入输出.分层次的体系结构能够将复杂的系统结构逐层分解,将不同的任务放在不同的阶段进行实施,使得系统具有清晰且有条理的组织结构形式.

(二)图形引擎结构模型

可扩展的三维图形引擎框架包括4个层次,核心层、控制层、渲染层和接口层,通过场景对象的管理、交互、渲染和输入输出,形成整个流水线过程[2],每个子系统都有若干个模块组成,完成其所特定的功能,可扩展的三维图形引擎框架如图1所示.

图1 可扩展的三维图形引擎框架结构

该引擎框架的主要特点包括:

1.通过独立的场景核心层,管理场景对象的构建、组织和流水线过程,并且通过资源管理,基于公共的格式维护不同的信息输入输出,输入输出基于标准的用户接口界面,以便于用户的扩展.核心层还维护分页调度线程,通过层次细节技术和对象写作技巧技术,支持多线程的信息访问和对象构建,以实现多线程并行处理的基础框架[4];

2.控制层基于Visitor设计模式,执行场景图对象与外部对象的事件和消息的交互控制、场景图更新过程等,其所执行的任务包括监听设备窗口和用户的消息和事件,记录并形成消息队列,根据用户的事件响应器执行消息响应的过程.基于Visitor访问器和对象回调等机制,递归场景图,实现对象的应用和状态更新;

3.渲染层通过对不同三维图形环境的接口封装,为用户的图形对象提供通用的图形渲染接口,基于图形渲染线程提供多线程的并行渲染能力,在场景流水线的过程中,通过对场景图的遍历,完成场景对象的状态排序和渲染图形结构的建立,将图形和渲染属性送入图形硬件,实现整个场景的渲染仿真;


4.接口层主要负责完成三维图形引擎与外部信息的互操作,如面向不同系统平台的窗口设备的嵌入,基于文件、网络、数据流等不同来源的信息输入输出,以及为用户提供嵌入自主扩展的图形算法、图形对象、结构模型等内容,接口层通过定义标准的I/O接口,实现内核与外部环境的交互.

(三)插件封装和扩展机制

基于插件的机制能够为系统提供一种灵活的扩展机制,使得软件的功能不受限于系统内已经实现的内置功能,用户编写的算法、对象、特效等都可以通过插件的形式注册到系统中,系统通过插件管理机制在运行时动态的调度访问所需的模块,实现资源、图形、算法等各方面的扩展能力[3].同时,基于插件的动态扩展机制也有效的带来了系统资源的可控性,使得软件不必在启动运行时,加载所依赖的所有模块和构件,而是将这些工作退后到运行时按照需求来进行模块的加载和卸载,这样的行为有利于优化对内存等系统资源的占用,如图2所示.

图2 基于插件的可扩展结构模型

引擎框架基于两类模型提供插件的机制,对象插件模型和I/O插件模型.对象插件模型对应于场景图的对象节点,即用户可以方便的使用自主实现的算法和图形结构,提供场景对象的扩展,实现诸如特效渲染、专用模型、复杂图形对象等内容的嵌入和集成.I/O插件模型提供对不同来源、格式信息数据的访问、解析和处理,以形成统一的内部格式,包括图形图像、音视频、矢量格式图、材质纹理等,I/O插件将具体的数据访问和解析工作放在场景对象的外部进行,使得场景对象只需关注与图形对象本身相关联的数据和属性.通过两类插件模式的有机组合,可以形成丰富的场景图结构.

四、结束语

本文首先讨论了可扩展的三维图形引擎框架技术的功能需求和系统设计准则,然后以一种具体的三维图形引擎框架为系统模型,并以其分层体系组织结构和基于插件的扩展模式为主要出发点,讨论了其设计方法、思路和特点,剖析了可扩展的三维图形引擎所应具备的要素,这些技术可以用于当前三维图形引擎框架的设计和研制.