浅谈OSG与游戏引擎

一、前言

3D游戏就是三维游戏,3D 中的D是Dimensional(维)的缩写。三维游戏中的点的位置由三个坐标决定的[1]。客观存在的现实空间就是三维空间,具有长、宽、高三种度量。三维游戏(3D游戏)是相对于二维游戏(2D游戏)而言的,因其采用了立体空间的概念,所以更显真实,而且对空间操作的随意性也较强。也更容易吸引人。特点是游戏的视角可以随意变动,具有较强的视觉冲击力。而3D 游戏中的游戏引擎则是整个游戏的核心[2],一个好的游戏引擎能够为游戏带来莫大的优势。

二、三维图形图像及3D游戏的引擎讨论

早期有一段时间,游戏开发者关心的只是如何尽量多地开发出新的游戏,并把它们推销给玩家。尽管那时的游戏大多简单粗糙,但每款游戏的平均开发周期也要达到8—10个月以上[3]。这一方面是由于技术的原因,另一方面则是因为几乎每款游戏都要从头编写代码,造成了大量的重复劳动[3]。渐渐的,一些有经验的开发者摸索出了一条“偷懒”的方法,他们借用上一款类似题材游戏中的部分代码作为新游戏的基本框架,以节省开发时间和开发费用。游戏引擎的概念就是在这种背景下诞生的。游戏引擎是指一些已经编写好的可编辑游戏系统或者一些互交式实时图像应用程序的核心组件[4]。游戏引擎实现的功能主要是游戏要素如地形、天空、建筑、任务、动画、声音、环境等,这些都是三维游戏所不能缺少的。

从编程角度看,游戏引擎是加上是一个面向游戏开发的通用内核,它把游戏程序设计中最常见的、最通用的、最核心的功能集成为一个通用的游戏开发平台和集成环境。在此基础上在进行游戏开发,游戏编程人员不需要从头做起,简单的通过API、COM接口等,直接调用游戏引擎提供的强大功能,就可以方便和快速地开发新游戏。从游戏开发角度来看,引擎相当于游戏的底层框架平台。框架平台搭建好后,只要往里填充内容就可以了。如果把游戏引擎比拟为一个“游戏操作系统”,那么最终的游戏产品则可以比拟为一个个具体运行在“游戏操作系统”上的应用程序。[3]

近几年来,由于3D硬件绘图技术的突破,使得实时描绘的画面越来越精致,而且3D游戏性更多元化更逼近真实世界,因此在游戏产业中,3D游戏已经逐渐取代2D游戏而成为游戏市场的主流,即使是网络游戏,也慢慢趋向3D化。在3D游戏制作方面,欧美和日本的一些厂商都拥有自己成熟的3D游戏引擎,他们所制作的游戏也有庞大且固定的玩家群,诸如《虚幻》系列、《合金装备2》等,甚至被奉为经典,市场潜力巨大。国内3D游戏近年来也不乏精品,如长久以来倍受好评的《轩辕剑》,《仙剑》系列都开始向3D游戏过渡。目前流行的3D游戏开发技术主要有Direct3D和OpenGL。OGRE和OSG本身被定位为一个纯粹的图形引擎,其中OpenSceneGraph(简称OSG)使用OpenGL技术开发,是一套基于C++平台的应用程序接口(API)。OSG开发的主要意义在于,将3D场景定义为空间中一系列连续的对象,以进行三维世界的管理。正是由于场景及其参数定义的特点,通过状态转化、绘图管道和自定制等操作,OSG还可以用于优化渲染性能。OGRE(Object-Oriented Graphics Rendering Engine,即:面向对象图形渲染引擎)是一个用C++开发的面向场景、非常灵活的3D引擎,它旨在让开发人员更容易、更直接地利用硬件加速的3D图形系统开发应用[5]。这个类库隐藏了底层系统库(如:Direct3D和OpenGL)的所有细节,提供了一个基于世界对象和其他直观类的接口。

OSG引擎有一系列图形学相关的功能模块组成,主要为图形图像应用程序的开发提供场景管理和图形渲染优化的功能[6]。它使用可移植的ANSI C++编写,并使用已成为工业标准的OPENGL底层渲染API。OSG具备跨平台的特性,可以运行在大多数类型的操作系统系统上,并使用抽象层的概念,使OSG的函数接口可以独立于用户的本地操作系统使用;但是OSG也包含了针对某些平台相关的支持代码。OSG主要具备以下一些优势:

快速开发。OSG场景图形内核封装了几乎全部的Openggl底层接口,并随时支持最新的扩展特性。应用程序的开发者可以将重心放在三维程序开发的实质性内容以及与各种场景对象交互的方法上,而不再过多的关注底层的代码。[2]高品质。OSG经历了许多开发成员的反复检查、测试和改善,直接参与OSG 核心代码开发并有所贡献的开发人员已经接近400人。[7]

高性能。OSG的核心代码支持多种场景裁剪技术、细节层次节点、渲染状态排序、顶点数组、现实列表、VBO、PBO、FBO、Opengl着色语言等;以及文字显示,粒子系统,阴影系统,雨、雪、火焰、烟雾等特效模拟,场景的动态调度,多线程渲染等各种机制。他们共同使OSG逐渐成为一个高性能的三维图形引擎。

高质量代码。要编写高质量的程序,开发者必须了解自己所用的引擎结构。如果引擎不开放代码,那么与他相光的开发信息就被封闭起来,用户只能借助开

发商的文档和客户支持来获得开发信息。开放源代码使得程序员可以检查和调试所有开发包的源代码,充分了解代码内部信息。

可扩展性。基于场景图形的扩展思想,OSG提供了强大的可扩展能力,包括各类型的扩展节点、扩展渲染属性、扩展回调、扩展交互事件处理器等,为用户的程序开发提供了灵活的支持能力。

可移植性。OSG提供了Windows、UNIX、Linux、Mac OS X、IRIX、Solaris、HP-UX、AIX和FreeBSD系统的移植能力,基于OSG开发的程序只要经过一次编写,就可以编译运行在这些平台之上,不需要关心更多的代码移植的细节。

三、总结

随着CG产业的不断的发展,OSG和OGRE也将会更加的完善和高效,在游戏引擎中对其的依赖性会不断增加,我们只有通过不断的学习才能够掌握这个图形图像引擎的精髓,从而做到为我所用、做我所想,因此需要我们有足够的耐心、细心和决心,相信只要我们努力,OSG、OGRE以及游戏产业都将会有更广阔的发展空间,而OSG、OGRE的发展最终能够给3维游戏带来更加喜人的变化!

你可能感兴趣的:(OSG)