Archive for August, 2012

我的新引擎RedEngine for OpenGL介绍(Introduction of RedEngine OpenGL)

Saturday, August 25th, 2012

制作时间:2012年

这个算是我的毕业设计,大约花了一个月的时间,这一个月的时间在家里也就是敲代码调程序。正好趁此机会熟悉一下OpenGL,原本还很担心要总头开始学一个API会不会很困难,结果看起来还是很不错。OpenGL和DirectX9.0相似的地方太多了,毕竟是在同一个时代的硬件上运行的东西,DirectX里面对应的函数GL里面都会有。所以基本不用太担心,使用GL明显感觉平台依赖性很低,所有的输入数据全部要手动准备,这一点虽说是理所应当,不过对于以前一直利用傻瓜式API的开发者来说确实很新鲜。
由于这次不是游戏引擎,只是单纯的图形引擎,所以没有额外的中间件,又由于是全新的引擎,所以从模型导入导出,资源处理方面下的功夫比以前要多得多。
支持技术(Features):
Model:
Custom Autodesk 3ds Max Export plugin
Graphics:
Phong Shader(Normal,Specular)
Emissive Map
Environment Map
HDR(Linear High Dynamic Range)
Linear Color Space Gamma Correction
Deferred Light
Volume Light
Deferred PCF Soft Shadow
由于有了开发第一个引擎的经验,所以这个引擎基本沿袭了之前的设计架构。由于只是停留在OpenGL 2.0的技术水平,所以Geometry和Tesslation模块没有。基本还是上一代的技术。主要原因还是硬件条件不允许,08年买的GTX260也就支持到DirectX10,不过现在买的新电脑配的是GTX670,能上新的API了,接下来准备学习DirectX11了。
一些抱怨:学校研究这方面的老师实在是很少,不如说中国国内研究实时图形学的也没几个。大学几年自学的知识不少都用在这上面了。虽说看起来这个图形引擎没有之前的那个功能多,但是作为毕业设计来说这个工程已经是相当巨大了,写论文的时候即便是每一个功能就介绍几行字,也都写出40多页纸了,答辩的时候更是花了半小时也没介绍出多少东西,台下的教授不是研究这个的,直接公开说“我一行也看不懂”,评分也评不出来。
给出一些截图:

RedEngine OpenGL

RedEngine OpenGL

RedEngine OpenGL

RedEngine OpenGL

RedEngine OpenGL

RedEngine OpenGL

RedEngine OpenGL

RedEngine OpenGL

我的独立游戏 Castle Quest 游戏介绍 (Introduction of My Indipendent Game Castle Quest)

Wednesday, August 22nd, 2012

开发时间:2011年

这个游戏是我为了参加2011年的GDC China IGF 大赛制作的,使用的是我的RedEngine引擎。花费14时 x 40天整整一个暑假的时间。内容几乎全部都是自己完成,建模实在很辛苦,同时也在一直进行引擎的深入开发,同时也得感谢配音的同学。
本来准备送去Intel LEVEL UP 2011 Game Demo Contest,最后由于大赛规定要在Steam上公开游戏程序,就放弃了。由于使用LUA脚本,程序在混淆上面出现了问题。实在是不想公开我的心血。最后还是作罢。

注:同样是因为来到这里,一些从非常漂亮的角度截取和用于技术性展示的截图都没能贴上来,比较遗憾。同时原来的文章中有很多技术性说明,在此也省略了,只作为结果的展示用博文。

这里是当时比赛提交用的视频(PV):

游戏整体是以画质为卖点。一些流行的特效都被加入其中。其他的一些必要的功能在视频中也有解释。相对于RedEngine,游戏程序中增加了必要的UI操作,脚本调用模块,摄像机轨迹等模块。

开发工具:
Visual Studio 2008
XNA Game Studio 3.1
Autodesk 3ds Max 2010
Photoshop cs4
NVIDIA Texture Tools

以下为部分截图:

Castle Quest

Castle Quest

Castle Quest

Castle Quest

Castle Quest

Castle Quest

Castle Quest

Castle Quest

Castle Quest

3D游戏引擎RedEngine介绍( Introduction of 3d game engine RedEngine)

Saturday, August 18th, 2012

支持技术(Features):

Graphics:

Phong Shader(Normal,Specular)

Emissive Map

Environment Map

HDR(High Dynamic Range)

Deferred Lighting

Motion Blur

Volume Light

PCF Soft Shadow

SSAO(Screen Space Ambient Occlusion)

DOF(Depth Of Field)

SSS(Subsurface Scattering)

Octree/Frustum Occlusion Culling

Model & Animation:

Billboard

Instance Model

Height Field

Particle System

Skeletal animation

Physics(supported by Nvidia PhysX wrapped by StillDesign):

Rigid Body

Cloth simulation

Fluid simulation

Ragdolls simulation

……

Script:

LUA Script language support

Audio:

Fmod support

Misc:

Camera Track

Game Script Manager

Particle Editor

User Interface

 

简介(Introduction)

开发于2009~2011,最初是学习用小程序,经过多次的重构以后,变得结构清晰,方便扩展,添加了一些基本游戏引擎应该有的组件,包括物理,脚本,声音的支持与管理。

引擎使用的API是微软的XNA。关于API,由于是在.NET Framework上运行的,所以语法的问题不再成为困扰,可以专心来学习图形学和引擎运作的算法,但弊端也十分显著,XNA很难成为开发大型游戏的工具,运行环境严重被限制,只能支持DirectX9.0c,shade model 3.0,所谓次世代的技术几乎都不支持。于是转战OpenGL(RedEngine GL),目前也正在学习DirectX 11,以适应新时代的变化。

注:引擎所使用的技术都是过时的技术,在此仅做介绍。

diffuse wit HDR

 这些都是早期的开发中的截图,上图是普通的albedo/diffuse输出+HDR,blur filter。此处已经有骨骼动画(skeletal animation)、骨骼绑定(bone attach)等动画功能,其他的渲染输出(normal map/depth map/etc…)在此就不贴出来了。

deferred light

这张是延迟照明(Deferred Light)的色彩输出,能支持大量光源的渲染技术,此处有平行光与点光源,可以看到地上的光源数量非常多,通过法线贴图(normal),高光贴图(specular)实现的Phong shade。

 

soft shadow

 这是阴影(shadow)的截图,PCF的软阴影,当然咱得承认这里没有PSSM、CSM之类的大规模阴影技术,虽然现在有了,当时没做真是个败笔。

motion blur

动态模糊(Motion Blur),这里是Object Motion Blur,从DirectX SDK和别人的一些例子里找的参考,这里没有Cryengine里的Camera Blur的技术,还是传统的逐帧模糊。效果是最好的。 

Depth of field

 景深(Depth of field),同样是传统的做法,gl里会简单很多,NV的例子里做的更漂亮,不过这里就用最原始的做法好了,支持远景和近景模糊。

ssao

这张是SSAO,当然这张是很早以前的截图了,尝试了很多的方法,包括Game Programming Gems,Blizzard的SSAO,Crytek,Gamedev上面外国人讨论的好几个做法。这张的SSAO并不是最终敲定的AO,在我的游戏Castle Quest里面可以看到最终确定的AO版本。

subface scattering

 次表面散射(Subface Scattering),这里使用的是GPU Gems上给出的算法。虽然公式中全部都是简化模型,但最终做出来的效果非常漂亮。

Volume Light

 容积光(Volume Light),同样是参照GPU Gems上的原始方程计算出来的,效果看起来很棒。

ragdoll

 布娃娃(Ragdoll),在Nvidia PhysX SDK中看到这么一个例子,就试着在引擎中实现了一下,图是引擎连接至PhysX Visual Debugger以后的截图,全场景都是在附加物理引擎的情况下运行的。

还有其他的一些功能和引擎的具体实现技术在这里不作介绍,一是限于篇幅,一是这些技术我想网上的参考资料与书上的内容会介绍的更详细吧。这个引擎也不准备继续再进行开发了,这也是没有截新图的原因,另一个原因是我来这边以后带过来的只有已经成为游戏的Castle Quest,也不会再加载以前的场景专门为一篇博文截个图。本文存档,记录下开发过的一些程序。

在大学参与的项目《虚拟铁路》(My Project In College – Virtual Railway)

Monday, August 13th, 2012

参与时间:2010年

本项目也是基于3D图形引擎OGRE制作的虚拟铁路系统。包括GPS数据处理,3D场景虚拟,UI指示,Flash播放,视频播放多媒体呈现方式为乘客提供列车相关信息,周边信息。同时为列车调度提供便利。与上次一样,小组的比赛,包括架构设计,需求分析,系统测试,项目管理4个角色,除了程序以外,还产生了大量的文档。

想想这还真是一段相当难忘的经历啊。为了这次的比赛,导师还专门把我派去上海铁路通信工厂的地方去实习了一个暑假,大二就跑出去实习什么的实在是很难得啊,多亏了这次实习我是提前体会到了职场的辛苦,果然还是做学生最好了。团队的同学都是我在大学里关系最好的几个朋友,每天出来开会,讨论,去南京参加比赛,等等经历的重要性远超制作程序本身学到的技术知识。

本项目参加了2010年全国软件创新大赛,获得全国二等奖。

使用技术:

MFC

OGRE

CEGUI

Adobe Flash

MCI

ADO

以下是部分截图:

Idrive Virtual Railway

 

Virtual Railway

Idrive Virtual Railway

开发中的:

Virtual Railway

Virtual Railway

Virtual Railway

文档中还有大量的系统结构图,流程图,等等其他图表,这里没有Visio,图就不放了。

 

在大学的项目《虚拟商城》(My Project In College – Virtual Shopping Mall)

Friday, August 10th, 2012

参与时间:2009:

本项目是基于虚拟现实技术(Virtual Reality)的网络在线3D虚拟购物系统。

这个项目是我受邀与学长们参与的项目。参加了2009年全国大学生软件创新大赛。整个项目从开始立项到制作完成大约花了3个月的时间。光是项目文档就有几个M。主要分图形,网络,数据处理三大模块,图形部分又分3D和UI,每一个模块拿出来都算是一个不小的独立项目了。立项的时候这么说了,以网络游戏的制作技术为基础制作本项目。当时试用了好几个图形引擎,包括irrlicht,ogre好几个引擎。我在大学1年级的时候就玩过OGRE,所以对这个引擎还是有不少心得的。于是后来加入了团队。说实话,这个组合当时在网上查了下非常流行,很多像我们这样的团队或者个人都拿出这样一套方案来做项目。估计大家在评估了各家的开源技术以后发现这个是版权问题最好解决,国内文档最多的组合了。

使用技术:

Graphic:

OGRE(Open Source 3D Graphics Engine)

CEGUI(Crazy Eddie’s GUI System)

Network:

RakNet

Data Storage:

TinyXML

MySQL

以下是截图:

Virtual Shopping Mall

Virtual Shopping Mall

Virtual Shopping Mall

Virtual Shopping Mall

Virtual Shopping Mall

Virtual Shopping Mall