3D游戏

2024-05-21

3D游戏(共12篇)

3D游戏 篇1

随着游戏厅的解禁, 越来越多的投资者开始将其视为一个投资机会。虽然目前市场中游戏机有很多种, 但是大都大同小异, 因此拼游戏种类多与少方面, 小型投资者并没有优势可言。下面本刊记者为读者介绍一个新兴项目, 可以让小型投资者以小博大, 在市场之中赢得一席之地。

本文介绍的项目是3D游戏厅, 其核心设备是3D游戏机, 包括枪击类、格斗类和赛车类等游戏。在玩游戏的时候, 玩家只需要佩戴3D眼镜, 就如同身临其境。以一款“3D环游”赛车游戏为例, 初看设备外型颇似一辆炫酷的赛车, 当你坐上驾驶座, 戴上3D眼镜, 眼前的赛道、赛车、建筑全都立体化, 仿佛它们不是在屏幕里, 而是就在你的身旁。当你“发动引擎”, 手握方向盘, 听着赛车发出刺耳的呼啸声在赛道上飞驰, 你就会觉得自己就像真的坐在一辆赛车里, 正在驾驶着它在赛道上飞速前进。

新技术、新产品, 展会上大受欢迎

该项目于2012年分别亮相于中国特许展和广州游博会, 在两个业内权威展中, 3D游戏机颇受市场欢迎。以游博会为例, 不仅吸引了大量的国内玩家, 还吸引了不少海外玩家, 而且在展会期间就有不少海外商家 (如美国、英国、法国、中东地区) 向项目方订购游戏机。据业内专家介绍, 这种3D游戏机采用眼镜式3D技术, 目前在国内这种游戏机很少, 属于采用了新技术的新产品, 玩家在玩游戏机的过程中佩戴3D眼镜就能身临其境, 其应该是大型游戏机未来发展趋势之一。

投资最低30万元, 经营可剑走偏锋

据本刊记者调查了解, 3D游戏机的售价与常规游戏机相差无几, 根据游戏机的机型、功能等不同, 约20000—40000元不等。

对于投资者而言, 最低投资30万元, 因为要想取得一定经济效益, 投资者至少需要购置5—8台设备, 总投入约25万元。剩余5万元为流动资金, 包括场地租赁费、员工费等。

据业内经营者介绍, 草根投资者可以“剑走偏锋”, 不仅可以将投资门槛大幅降低, 还能取得不错的收益。

另类招数一:追着展会开游戏厅

海南的小伙子刘柳, 2012年2月份开始经营3D游戏机。最初他手头资金不足, 只够购置三四台设备, 但是他又不愿意放弃这样一个赚钱的好机会, 于是他想到了追着展会赚钱的思路。具体而言, 凡是展会他都会参加, 向组委会租赁一个区域, 作为活动区, 专门向参展者、逛展者有偿开放。

刘柳透露, 因为这个思路最大的好处是可以省去一笔较大的房租、水电费支出, 虽然参加展会也要支付一定的租金, 但是相比一个黄金地段的店铺租金要少很多。另外, 展会上具有较大的人流, 即使自己低价经营, 也能有利可图。截至2012年8月底, 刘柳一共参加了几十场展会, 大约赚取了近12万元的净利润。

同时刘柳表示, 经过一段时间的摸索, 他发现只要展会面向大众或者是青年人, 业务都不错, 反之效果就一般。

另类招数二:傍着夜店开店

深圳王先生的经营思路就是傍着夜店开店, 具体而言就是, 他专门与台球厅、KTV、酒吧、棋牌室等夜店场所合作, 在这些场所中摆放1—2台游戏机, 供顾客使用。王先生表示, 这个思路的优点是, 夜店的目标顾客主要以年轻人为主, 而3D游戏机也主打年轻人, 两者有交集, 人气有保证, 缺点是投资者要想赚钱, 至少要购置10台游戏机, 初始投资较高。

另外, 王先生表示, 一开始很多夜店并不愿意与自己合作, 认为这会影响他们的生意, 自己就告诉对方可以免费试用两周, 如果有效果就继续合作, 如果没有效果, 自己就撤出夜店。两周之后, 超过80%的夜店都愿意合作。因为3D游戏机丰富了顾客的选择, 不仅没有影响夜店的生意, 反而促进了他们的生意。现在王先生每个月大约能有3万元的纯利进账。

3D游戏 篇2

一、单选题(共 20 道试题,共 40 分。)

1.现有三组逆时针环绕的轮廓线,依次包含。现在,如果把区域的环绕属性设置为奇数类型,那么最终绘制出的区域描述正确的是 A.一个环形 B.实体块

C.一个环形加一个实体块 D.无法确定具体填充区域 满分:2 分

2.在进行点选操作时,我们使用一个名称标识了三个重叠的圆形。现在对它进行一次点击,那么它产生的点击记录为多少次 A.3 B.1 C.2 D.0 满分:2 分

3.在利用矩阵进行图形三维变换时,我们只用3×3矩阵无法完成的变换操作是

A.平移 B.旋转 C.错切

D.以上说法都不对 满分:2 分

4.在复合变换中,固定坐标模式的变换,对于坐标变换操作的调用和执行顺序描述中,正确的是

A.相对于同一个固定坐标系先调用的变换先执行 B.相对于同一个固定坐标系先调用的变换后执行

C.相对于同一个固定坐标系调用和执行的顺序没有必然联系 D.以上说法都不对 满分:2 分

5.函数glAlpaFunc用于设置alpha测试的参考值和比较函数的参数中,哪个参数的意义表示“绝不接受这个片段” A.GL_NERVER B.GL_ALWAYS C.GL_LESS D.GL_EQUAL 满分:2 分

6.函数void glBlendEquation(Glenum mode)函数中的mode对取值为GL_FUNC_SUBSTRACT描述正确的是 A.CsS+CdD B.CsS-CdD C.CdD-CsS D.CsopCd 满分:2 分

7.我们在绘制完物体后,如果锁定了深度缓冲区,接着再调换物体的z方向的次序,此时关于遮挡关系以下说法中正确的是 A.AB物体重叠部分会发生混合

B.遮挡关系发生改变,AB物体遮挡关系互调 C.遮挡关系不变 D.无法判断 满分:2 分

8.glPixelMap{ui us f}v(Glenum map,Glint mapsize,const TYPE* values)函数被加载,它的函数参数参数mapsize的取值有意义的是 A.10 B.20 C.32 D.42

满分:2 分

9.一束白光照射一个有光泽的蓝色球体,那么这个球体的整体看上去是蓝色的,它上面的亮点则是什么颜色的 A.红色 B.绿色 C.白色 D.蓝色 满分:2 分

10.白色的颜色值为

A.(0,0,0)B.(255,0,255)C.(255,255,255)D.(1,1,1)满分:2 分

11.现在有控制点为四个,每个顶点有三个坐标,现在我们想利用函数gluNurbsSurface进行NURBS表面设置,那么u_stride的值应该设置为 A.3 B.4 C.12 D.48 满分:2 分

12.进行点选操作后,假设当前的选择缓冲区为pSelectBuff,那么其中的pSelectBuff[0]的值得含义是

A.名字堆栈中压入的名字数

B.自上一个点击记录之后,与视景体相交的图元的所有顶点的最小窗口坐标的z值 C.自上一个点击记录之后,与视景体相交的图元的所有顶点的最大窗口坐标的z值 D.点击发生时名字堆栈的内容 满分:2 分 13.下列哪个不属于计算机上支持的像素位数

A.4位 B.24位 C.20位 D.32位 满分:2 分

14.OpenGL中如何判断一个点接收了光源的多少光线

A.通过距离光源的距离进行计算 B.通过法线相对光源的方向进行计算 C.通过物体的颜色值进行计算

D.通过物体和光源的颜色值的综合考虑进行计算 满分:2 分

15.OpenGL提供的投影矩阵堆栈个数为

A.1 B.2 C.4 D.8 满分:2 分

16.利用3×3矩阵进行二维点集变化时,我们使用的矩阵为[1,0,0;0,-1,0;0,0,1],那么变化后的效果为

A.沿着X轴对称变换 B.沿着Y轴对称变换 C.沿着原点对称变换 D.沿着直线y=x对称变换 满分:2 分

17.下列哪个颜色不属于三原色

A.红

B.蓝 C.绿 D.黑 满分:2 分

18.如果有两束光进入人眼,他们的成分为(R1,G1,B1)和(R2,G2,B2)那么叠加在一起的时候,如果红色分量超出1了,那么最后的叠加结果为 A.R1+R2 B.1-R1-R2 C.1 D.R1+R2-1 满分:2 分

19.通常,我们的运动模糊效果,可以利用哪个缓冲区实现

A.颜色缓冲区 B.深度缓冲区 C.模板缓冲区 D.积累缓冲区 满分:2 分

20.OpenGL中复杂的图形绘制一般都是如何实现的

A.用曲线模拟 B.用四边形拼接 C.用三角形拼接

D.只要是凸多边形拼接就可以 满分:2 分

二、多选题(共 10 道试题,共 20 分。)

V

1.下列哪些是OpenGL的常用库

A.GL B.GLU

C.GLAUX D.GLUT 满分:2 分

2.在多边形偏移中,可以有哪几种模式用于不同的多边形光栅化

A.GL_FILL B.GL_LINE C.GL_POINT D.GL_TRANGLES 满分:2 分

3.对计算机图形进行显示的方法中可以起到抗锯齿作用的有哪些方法

A.提高屏幕分辨率 B.采用区域覆盖法 C.加权覆盖法 D.抖动技术 满分:2 分

4.OpenGL允许把与颜色相关的哪三个不同参数和光源相关联

A.GL_AMBIENT B.GL_DIFFUSE C.GL_SPECULAR D.GL_AMBIENT 满分:2 分

5.OpenGL包含有哪几个缓冲区

A.颜色缓冲区 B.深度缓冲区 C.模板缓冲区 D.积累缓冲区

满分:2 分

6.实现物体坐标到达屏幕坐标的处理管线中,包括的处理步骤有

A.视图模型矩阵操作 B.投影操作

C.透视除法进行规范化 D.视口变换 满分:2 分

7.在局部光源模型中,随着光源的距离增加,光的强度不会随之衰减的有

A.环境光 B.散射光 C.镜面光 D.发射光 满分:2 分

8.以下是正交投影glOrtho函数作用特点的是

A.视体是一个椎体 B.物体近大远小 C.视体为立方体

D.物体的距离并不影响它看上去的大小 满分:2 分

9.以下是描述glBindTexture函数功能的是

A.将生成的纹理的名称绑定到指定的纹理上 B.创建纹理并加载

C.选择已经加载的纹理进行贴纹理操作 D.以上都对 满分:2 分

10.一下那些属于OpenGL的特点

A.标准支持灵活

B.具有良好伸缩性 C.具有良好扩展性 D.扩展性不强 E.满分:2 分

三、判断题(共 20 道试题,共 40 分。)

V

1.设置光源位置时,当我们的光源坐标位置(x,y,z,w)中的w为0时代表我们的光为局部光源 A.错误 B.正确 满分:2 分

2.glNormal*函数是glBegin和glEnd之间的合法函数

A.错误 B.正确 满分:2 分

3.无论是在反馈模式下还是选择模式下,物体的信息总是在任何片断测试之前返回

A.错误 B.正确 满分:2 分

4.函数glLoadName用于将当前的名字替换名字堆栈顶部的元素

A.错误 B.正确 满分:2 分

5.函数glPerspective(GLdouble fogy,GLdouble aspect, GLdouble near,GLdouble far)所定义的视体仅限于和X和Y轴对称的平截头体 A.错误 B.正确 满分:2 分

6.视图变换和模型变换可以互逆变换

A.错误 B.正确 满分:2 分

7.位图字体无法进行旋转

A.错误 B.正确 满分:2 分

8.过滤函数中的参数GL_LINER它会对一小块区域的纹理单元值进行加权平均,用于放大或者缩小 A.错误 B.正确 满分:2 分

9.对物体进行平移变换和缩放变换的顺序不会对最后结果产生影响

A.错误 B.正确 满分:2 分

10.OpenGL至少可以在场景中包含1个光源

A.错误 B.正确 满分:2 分

11.已知两个向量,可以通过运算V1^.V^2获得它们所在平面的法线

A.错误 B.正确 满分:2 分

12.glEnable(GL_DEPTH_TEST)函数的作用是开启深度测试

A.错误 B.正确 满分:2 分

13.为了使用mipmap,必须提供全系列的大小为2的整数次方的纹理图像,其范围从2*2到纹理的最大单元

A.错误 B.正确 满分:2 分

14.纹理坐标必须在RGBA模式下才能使用

A.错误 B.正确 满分:2 分

15.函数glDepthMask的flag参数设置为GL_TRUE,则标志着深度缓冲区可以写入

A.错误 B.正确 满分:2 分

16.对于基本的求值器使用绘制步骤为先开启求值器,设置控制点,设置绘制属性和模式,最后进行渲染 A.错误 B.正确 满分:2 分

17.位图是由0和1组成的矩形数组

A.错误 B.正确 满分:2 分

18.镜面亮点的颜色就是光源的镜面光的颜色

A.错误 B.正确 满分:2 分

19.颜色混合操作在颜色索引模式下是非法的

A.错误 B.正确 满分:2 分

20.glRotatef(fRot,0.0f,1.0f,0.0f)函数可以让图形绕着X轴偏转fRot角度

A.错误

告别3D游戏:显卡迈向通用计算 篇3

3D游戏一直是用户升级显卡的动力,游戏开发商总是不知疲倦地推出画面更真实的3D大作,并以耗费GPU资源为荣(如果新一代3D游戏对GPU要求低反而被认为是一件可耻的事情)。而nVIDIA与ATI则在市场竞争的驱使下进行一场GPU开发的竞赛,往往是新品还没有来得及捂热,“革命性”的下一代架构又开始登台亮相,游戏玩家们又得掂量再一次的升级。但显卡的意义似乎仅限于此,如果你对3D游戏毫无兴趣,只是玩一些纸牌、连连看、泡泡堂之类的益智小游戏,日常以办公和上网浏览为主,那么使用高端显卡便是莫大的浪费。计算工业在过去同样为此感到困惑,它们认为现有计算系统的晶体管资源利用率过低,在一套标准PC平台中,GPU所占用的晶体管数量往往比高端双核处理器还要多得多,但在很多时候,显卡都处于闲置状态,GPU所集成数量巨大的晶体管只在那边空耗能源,而CPU往往是疲于奔命—这就好比是一个部门的两个职员,一个老是忙得团团转,另一个通常都在那边闲呆。显然,将任务均分是个比较合理的解决方案,即让GPU能够与CPU一道来处理通用任务,但这对于过去的图形工业来说却是巨大的挑战。

GPU难以分担CPU任务的障碍在于架构限制。众所周知,GPU唯一的使命就是3D渲染,它的核心逻辑包含顶点渲染单元和像素渲染单元,两者最初都只能执行固定的图形指令。如果你将别的指令强加给GPU,GPU根本就无法识别,在这个时代,GPU难以走出3D图形体系。为了让程序员拥有更多的灵活性,GPU后来实现了可编程功能,允许程序员采用更加灵活的程序指令。随着图形API的不断升级,GPU的可编程能力也变得越来越强大。在DirectX 9.0C时代,顶点渲染指令和像素渲染指令的长度都达到512条,如果通过某种指令转换机制,将通用计算指令转为GPU可执行的指令格式,那么就可以让GPU完成3D图形之外的通用计算。而在最新的DirectX 10体系中,GPU的通用性获得进一步的释放:通用的渲染单元具有更强的可编程支持,GPU所配备的指令解码器能够将顶点/像素指令转换为可直接被通用渲染单元执行的微指令,这就赋予统一渲染单元更强大的能力。理论上说,只要有相应的API支持,基于统一渲染架构的新一代图形产品就能够完成许多3D图形之外的繁重任务,充分发挥出GPU在浮点性能方面的巨大优势。

计算机科学家与图形工业共同携手将GPU推向更广阔的市场,未来GPU将可作为超级计算机的浮点协处理器使用,也可以用于流处理的加速。而对于PC用户,GPU将在操作系统GUI界面渲染、网页内容渲染、PDF文件/图像文件处理中发挥巨大的价值。

GPU渲染操作系统GUI界面

在微软的Vista操作系统中,我们看到了Aero Glass视觉模式带来的卓越效果。标题栏和窗口边框都拥有半透明磨砂玻璃质感,窗口的放大、缩小动作流畅而富有动感,窗口可以三维的样式排列方便于定位……而要实现这样的GUI效果,光有性能强劲的处理器根本不够,因为处理器并不擅长于图形渲染相关的操作,由GPU完成GUI渲染便是唯一可行,也是最理想的方案。

微软在Vista系统中成功地做到这一点,它的技术奥秘就在于将操作系统与图形API紧密地结合在一起,加强系统对GPU的控制能力。我们知道,在2D GUI界面的OS中,专门负责3D渲染的图形API是个可有可无的角色,因为GUI界面的绘制是由处理器来完成的,只是将最终结果交给显卡,由显卡的2D功能将其输出到屏幕上显示,这样操作系统运行对显卡就没有任何要求,对显存的要求也仅限于能够存放24/32bit精度的色彩。但在Vista的Aero视觉模式中,GUI界面的渲染任务是由显卡来负责—微软公司通过图形API的深度整合成功地创建了这一模式:当Aero模式启用时,CPU不再直接负责GUI界面的渲染,而是将诸如动态缩放、半透明效果、玻璃效果相对应的渲染指令转交给GPU,GPU接到指令后完成相应的工作,并将结果输出到屏幕上。由于Vista Aero视觉模式的渲染任务都比较简单,对GPU的运算性能要求不高,因此从理论上说,集成图形都能够很好地满足Aero界面渲染的要求。问题在于微软将GUI渲染指令定格在DirectX 9.0标准,这就导致所有无法支持DirectX 9规格的显卡和集成图形产品出局。

比Vista领先半年时间,Linux环境也实现了由GPU来渲染GUI和桌面,而且Linux业界提出了XGL和AIGLX两套方案。XGL由Novell公司发起并完成,它是一套全新的X Server软件。在Linux/UNIX系统中,X Server负责整个图形环境的构建,过去它并没有丝毫掌控GPU资源的权力。而Novell的XGL与传统的X Server完全不同,它直接与OpenGL API紧密耦合,通过OpenGL图形指令来生成GUI界面,这种模式赋予操作系统GUI界面前所未有的想象力。借助GPU的力量,XGL除了可支持类似Vista Aero的动态窗口缩放、半透明标题栏之外,还可支持窗口半透明、更富动态感的淡入淡出以及窗口移动时宛若弹性布条般的视觉效果。由于XGL对OpenGL版本要求不高,GeForce 4 MX级别的显卡都能够轻松胜任,前提条件是显卡能够被驱动程序正确驱动。AIGLX则是RedHat发展的技术方案,它同样是一套与OpenGL结合的X Server系统,但与XGL从零开始编写不同的是,AIGLX是基于现有X Server系统上的改良,但它同样能够完成相同的任务,即由GPU来渲染Linux的图形操作环境。

Vista与Linux XGL/AIGLX技术的出现,意味着GPU首度在3D游戏之外找到了新工作,现在,显卡可以用来渲染操作系统的图形界面,而在显卡的帮助下,操作系统在视觉方面获得质的改善。GUI不再是冷冰冰、机械呆板的丑陋样式,而变得漂亮而富有动感,这不仅能令用户使用过程中感到赏心悦目,同时也将起到降低操作疲劳和提升生产效率的效果。也许你从来没对操控复杂的3D游戏动过任何念头,但现在也应该考虑为自己的PC配一块符合Vista或者Linux XGL/AIGLX要求的显卡:DirectX 9甚至DirectX 10支持、拥有256MB显存、能够很容易地在Linux系统中安装驱动程序……当然新一代集成图形芯片组也能够满足基本的要求,但它们显然难以应对未来操作系统的升级。而如果你使用的是Linux系统,便会发现在启用XGL/AIGLX模式时,系统的操控性能有非常显著的提升,原因就在于GPU承担了GUI渲染相关的任务,CPU因此获得解放,能够将更多资源投放到任务的执行进程中。

GPU给传统应用加速

GPU对普通用户的另一个重要用途便是加速网页内容、PDF文件以及图形图像的渲染。现在互联网有一个糟糕透顶的倾向,就是网页设计得越来越花哨,大量光怪陆离的Flash广告充斥着页面,而这些Flash极其耗用CPU资源,即便你现在用的是最时髦的双核处理器,打开一个Flash内容较多的网页并且用鼠标中键滚动几下,便会发现CPU资源占用率可以轻松向50%靠拢。换句话说是其中一个CPU核心处于接近100%的资源占用,硬件消耗比播放高清电影还要高出许多,这显然极不合理。除了Flash动画外,网页上显示图片也颇为耗费硬件资源,尤其是那些高分辨率的图片,都会对CPU提出不低的要求,这也是网页浏览耗费资源的一个重要的原因。

同理,如果用GPU来渲染这些视觉相关的内容,无疑会更具效率并且节约系统资源。现在软件工业已经朝着这个目标行进,比较有代表性的技术方案包括浏览器层级的完全GPU加速与通过OpenVG API的部分加速。采用完全GPU加速技术的便是正在开发的Firefox 3.0,它采用Gecko 2.0网页排版引擎,而在基础的2D图形库方面,Gecko 2.0将逐渐抛弃传统的软件实现方案,转而采用“Cario(开罗)”2D图形引擎。Cairo引擎基于OpenGL API构建,即采用OpenGL渲染指令,让显卡来完成2D图形图像的绘制。如此一来,基于Cecko 2.0引擎的Firefox 3.0浏览器便具有GPU硬件加速支持,网页所显示的内容,包括图形图像、Flash动画等各类视觉元素都由GPU负责处理,由此大幅度减轻了CPU的负担,让网页浏览工作变得更加轻松。除了Firefox 3.0之外,任何其他基于Gecko 2.0排版引擎的浏览器产品都能够支持这一功能。

Gecko 2.0和Firefox 3.0都将在上半年完成,在它们的引导下,网页内容GPU加速将会逐渐形成风潮。不过IE、Opera、Konqueror/Safari等浏览器并没有打算采取类似的做法来实现GPU加速,事实上,浏览器开发商无需作任何改变—关键在于未来的Flash动画和网页矢量图形将支持OpenVG API—OpenVG的全称是“Open Vector Graphics”,意为开放性矢量图形,它是一套专门用于矢量图形硬件加速的开放API借口。但除了矢量图形外,OpenVG还能够为Flash动画提供硬件加速功能,如果Flash支持这项技术,那么不管用户使用何种浏览器,都能够实现Flash动画的GPU硬件加速,从而大幅度改善目前网页浏览资源占用率过高的情况。

作为Flash的拥有者,Adobe公司尚未在Flash硬件加速领域迈开实际的步伐,但该公司已经率先实现了PDF文件的GPU加速。PDF是互联网通行的开放文档标准,它具有强大的图文混排能力和完善的版权保护机制,阅读器又是完全免费的,在出现之后迅速获得广泛采用,目前几乎所有学术性文档、政府公文、技术白皮书都采用PDF格式发行。PDF文件的渲染一直都是由CPU完成,但CPU显然效率不够高,渲染PDF文件总是存在明显的延迟,倘若PDF文件足够复杂而CPU性能又不够强,浏览PDF时会出现严重的顿滞。为此,Adobe与nVIDIA进行合作,在最新的Acrobat 8和Adobe Reader 8软件中引入GPU加速功能,即由GPU来渲染PDF文件。Adobe没有阐述具体的细节,只是介绍这项机制是通过DirectX 9.0c中的Shader Model 3.0实现的;硬件要求方面,nVIDIA平台一般建议GeForce 6600以上,AMD-ATI平台则要求Radeon X1300和FireGL V3300、3400和V5200等GPU,当然如果集成图形能够支持Shader Model 3.0规范,也能够支持这一功能。而除了Adobe公司外,Linux中的Gnome阵营也在完成类似的任务,它所依赖的同样是Cario图形引擎,Cario同样将被作为未来Gnome环境的2D渲染引擎,这样Gnome环境下的PDF查看器也将从中受益。

网页渲染加速以及PDF加速功能的实现,让GPU在日常应用中也能派得上大用场,对于长时间操作电脑的商业用户来说,配备一块性能中等的3D显卡不再是一种浪费,想必nVIDIA、AMD-ATI等独立图形厂商会对此眉开眼笑。

GPU实现流处理加速

超级计算机系统普遍都具有强悍的并行浮点计算能力,以便完成如科学计算、宇宙探索、气象预报、分子生物计算、核模拟、虚拟现实之类的研究。现行的超级计算机大都采用对等处理架构,即由通用的处理器来负责浮点运算。这一领域基本上都是RISC架构的天下,IBM的Power平台、富士通的SPARC64平台、英特尔的Itanium平台(EPIC架构)便是其中的代表者。为了实现尽可能高的性能,超级计算机都不遗余力地增加处理器数量,同时积极开发技术更先进的处理器产品,但这样做并不是特别有效率。当前世界上运算速度最快的计算机当属IBM的“蓝色基因/L(Blue Gene/L)”,它的峰值浮点性能达到367TFlops,但为此付出的代价就是动用了65536枚双核心处理器,也就是131072个CPU内核,硬件规模极其惊人。为此,IBM和SUN都提出采用协处理器加速的方法来获得更高的效率,其中的典型代表者就是IBM的Cell平台,它以专用设计获得远超通用处理器的浮点性能。

不过光就浮点运算能力而言,Cell显然不是GPU的对手。AMD-ATI的Radeon X1900 GPU即可拥有高达375GFlops的浮点性能,新一代R600 GPU更将具有512GFlops的超级计算能力(当然,nVIDIA的GPU同样拥有非凡的浮点效能)。ATI很早就提出了“流计算”的概念,即利用GPU的可编程特性以及R500架构所拥有的庞大像素处理器来完成一些通用的浮点计算任务,借此获得远超过通用型处理器的效能表现。ATI后来被AMD成功收购,而AMD继承了ATI的这项研究并在2006年度的超级计算机大会上拿出相应的“流处理器加速卡”—这块加速卡采用Radeon X1900 GPU和PCI Express X16接口,它与普通Radeon X1900显卡的区别在于:流处理器卡加入一些特殊的控制电路,内存控制器也经过调整以优化并行的流计算任务,为了满足繁重的任务需求,流加速卡配备了1.3GHz频率的GDDR3内存,且容量高达1GB之多。加上Radeon X1900 GPU自身具有的48个像素处理器(每个像素处理器由两个算术逻辑ALU、两个标量ALU和一个分支执行单元构成)和600MHz高频率,该流处理加速卡最终实现375GFlops浮点的通用计算能力。AMD流处理加速卡的另一项关键技术就是它所支持的“CTM(Close To Metal)”应用程序接口,CTM可以令应用程序直接访问GPU的原生指令集和内存,最终实现八倍于传统3D图形API的浮点效能。AMD将该款流处理加速卡与标准的Radeon X1950XTX显卡进行MatMult标准测试,基于CTM接口的加速卡在执行通用计算任务时可提供96GFlops的实际浮点性能,而基于OpenGL API的Radeon X1950XTX显卡的运算速度仅为12GFlops,同当前的主流型X86处理器相当。AMD对自己的这项成果非常骄傲,它们表示如果在超级计算机系统中采用流处理加速卡,那么理论上大约只要不到1000块加速卡就能够获得媲美IBM“蓝色基因/L”的性能水平。目前AMD已经开始向OEM厂商供应这种流处理加速卡(当然价格不菲),同时吸引超过60家企业和研究机构进入AMD的这一研究项目,AMD表示这种加速卡虽然暂时供应高性能计算市场,但未来将会引入消费市场,用于完成视频编解码加速和图像的处理,尤其是H.264编码任务非常适合由GPU来处理。当然要实现这个目标,需要硬件厂商与软件工业的共同努力。

在AMD锐意拓展高性能计算市场的同时,nVIDIA也没有闲着,事实上,早在2004年9月份,剑桥大学的BionicFX小组就率先采用GeForce 6800图形处理器来完成音频效果的计算。BionicFX发明了一项AVEX(Audio Video EXchange音频视频转换)技术,AVEX的工作原理是将音频流转换成图形格式的数据,这些图形数据在GeForce 6800 GPU上按照像素或区格来进行处理(按音频效果算法),并于显示内存中读取结构,最终计算结果再被还原为音频信号,由此完成了GPU处理音频效果生成的全过程。第一个采用AVEX技术的混响VST插件便是2005年冬季亮相的BionicReverb,这款插件可以实时模拟出各个真实声学条件下的混响音频,效果近乎完美,而在这背后就是堪称巨量的精确计算。得益于AVEX技术,GeForce 6800承担了这一任务,否则要是由通用的X86处理器来负责的话,系统资源估计会被拖垮。遗憾的是,nVIDIA并没有意识到其中的机会,所以未能及时投入相关的研究,错失在这个新领域领先对手的良机。现在nVIDIA也在积极从事这方面的研究以期赶上AMD,尽管没有披露何时拿出可供实用化的商业解决方案,但以GeForce 8800 GPU所采用的128个流处理器设计来看,nVIDIA同样能够让自己的GPU产品进入高性能计算市场。

现在,GPU又有了一个新的工作:用在超级计算机系统中,完成浮点加速任务。AMD和nVIDIA大概都可以在这个市场狂卖高端GPU产品了,而这个市场向来是利润丰厚:AMD的流处理加速卡定价高达2600美元,而它的成本和一块Radeon X1900 XTX显卡相当,后者的市场价格现在还不到400美元。在不远的将来,流处理加速技术会出现在消费市场,帮助CPU完成诸如影像编码之类任务,或许在跑Super Pi测试的时候,GPU也许还能够帮上大忙。

GPU加速物理计算

物理加速的概念由AGEIA公司在2005年率先提出,该公司同时也推出了世界上首款物理处理器(PPU):PhysX。如果用户计算机配备了一块基于PhysXPPU的加速卡,那么将构成CPU-PPU-GPU的三角协作系统—CPU负责程序指令的执行和任务分配,遇到物理计算指令就将它提交给PhysX PPU,图形渲染指令则提交给GPU。PhysX的专用化设计让它具有出色的物理计算能力,如目前最高端的双核X86处理器每秒只能生成数百个粒子或者刚性物体,而PhysX每秒可处理3.2至5万个,这将极大程度提高游戏体验的真实性。注意这种体验包括画面效果的提升以及游戏的互动性,例如当游戏角色身处爆炸区外,却不幸被弹片击中,那么它也将因此负伤或者死亡,而在那些不支持物理计算的游戏中,这样的场景完全不可能出现。

PhysX PPU推出之后获得游戏开发商的广泛认可,目前可支持PhysX的游戏已有数十款之多,并且这个数字还在不断增加,物理加速的概念被游戏工业广泛接受。nVIDIA与AMD-ATI显然不甘寂寞,在PhysX PPU推出后不久,nVIDIA和ATI都先后对外披露自己的GPU物理加速方案—以GPU来完成物理加速的原理与加速流处理如出一辙,都是利用GPU可观的浮点性能和可编程能力来完成。但是nVIDIA和ATI都不是GPU物理加速技术的主导者,真正的关键是Havok(业界著名的物理和动画引擎开发商)。Havok在2005年11月推出Hovok FX物理引擎,这个引擎可以让符合Shader Model 3.0标准的GPU执行物理效果的计算。Havok认为它们的技术更具效率,如在激烈碰撞的场景要求GPU(或PPU)与CPU交换大量的数据,而采用GPU来进行物理计算就可避免这种情况,有效提升系统的处理性能;其次,Havok FX引擎可与Havok的HydraCore技术配合使用,从而实现对多核心、多线程处理器的优化。必须注意的是,借助Havok实现物理加速并非是所谓的“软件方案”,Havok FX引擎本身是一个可利用GPU可编程特性来实现物理计算的API,地位与作为图形API的DirectX和OpenGL类似,如果3D游戏直接对Havok FX提供支持,那么GPU在运行这个游戏时就可以直接执行物理计算任务。从这个角度来讲,GPU+Havok FX引擎的物理加速与AGEIA PhysX PPU+PhysX API的物理加速方案并无本质区别,不同之处仅在于前者利用GPU来处理物理计算指令,后者则是采用PhysX PPU。

nVIDIA与AMD-ATI都宣称GPU物理加速方案性能优越,如AMD-ATI Radeon X1900XT每秒可完成50亿次物理撞击的处理,而PhysX PPU每秒仅能处理5.33亿次。表面上看GPU在计算性能方面占了绝对优势,但AGEIA则认为光比较计算性能并无意义,因为在物理计算体系中,交互性是一个极其重要的概念,所谓交互性就是物理计算的结果必须会对游戏的运行产生影响,例如爆炸反射的弹片击中游戏角色,那么这个角色就会负伤或者死亡,PhysX PPU便具有这样的能力。GPU固然拥有优秀的物理计算性能,但它只能渲染出逼真的画面而无法形成交互性,也就是说我们同样可以在GPU物理加速平台中看到真实的爆炸场面,但即便画面显示出游戏角色被弹片击中致命部位,这个角色也不会受到丝毫的影响。目前nVIDIA和AMD-ATI都带来了基于统一渲染架构的图形处理器,芯片浮点性能创下新高,可编程能力也更为突出,两家公司也都不约而同带来多显卡物理加速的方案,但它们都未能解决游戏交互性的问题。近期有消息说nVIDIA在研发独立的物理卡,如果这一消息获得最终证实,那么我们也不会对此感到太惊讶。事实上,如果nVIDIA和AMD-ATI能够获得更完善的物理处理技术,并将它与GPU直接集成,那么便可在保持卓越画面效果的同时解决交互性问题。不过与其自己独立开发,还不如在AGEIA发达之前将它抢先收购,毕竟作为物理计算的开创者,AGEIA有先入为主的优势,其PhysX PPU平台也已获得广泛支持。

尽管GPU物理加速目前存在缺乏交互性的不足,但它的积极意义也显而易见:GPU拥有更强大的物理计算能力,能够处理高度复杂的物理计算,让未来的3D游戏能够淋漓尽致展现壮阔的场景。倘若GPU物理加速能与专业的PPU协同运作,无疑是一套非常完美的方案,但这有赖于物理加速的API达成最终的统一。

前瞻

浅析中国3D游戏的设计与困境 篇4

一、阻碍我国3D游戏基础发展的因素

一切艺术创作的创新问题都是一个永恒的课题, 因为没有创新就没有发展, 所谓标新立异、推陈出新, 都是指在继承过去设计创作成果的基础上, 开拓新思路、发掘新的艺术表现形式, 寻找新题材。在3D游戏动画创作范畴, 还要探索新结构、新技术领域、开拓新的灵感来源。我国现阶段的3D游戏动画设计, 由于受社会经济和文化发展阶段的制约, 还没有形成既结合中国特色, 又具有鲜明时代感的设计风格趋向, 我们缺乏3D游戏动画专业基础知识和基本三维文化素养。其具体病症在于:对3D游戏动画的意义缺乏理解, 缺乏正确的3D游戏动画意识和观念;社会整体三维影视文化发展的落后;三维设计运营管理机制不完善。

我国的美工方面绝对在世界上算的上前列!可是为什么大部分的中国玩家会比较倾向的选择去玩国外的游戏呢?致命的原因一是设计者对设计感官的误差。二是市经济的负面冲击影响了游戏动画的发展。现阶段市场经济发展带来的不公平竞争, 导致的局面就是真正原创公司面临亏损, 却得意了“扒皮”公司。起原因是国内没有广泛的高素质的观众和消费群体, 这也是大部分群体接触不到高质量的精神消费品的一个必然结果。这是个很严重的社会问题, 是个无休止的恶性循环。解决这个问题的根本是提高观众群的审美意识和国家的支持。支持国产原创也是一个很有效可行的办法。三是管理机制的完善程度, 因为一个成功的团队是必须要有一个能纵观全局的智者来领导的, 反之的后果就是无数的人才呈一盘散沙的情况, 甚至是很多不可多得的人才转业从事自己不在行的职业。所以这是一个连环性的社会问题。

二、3D游戏的设计与制作

说到3D游戏的发展不得不说到它的制作方法, 因为3D游戏的分类很是广泛, 分析各种类型的制作方法与我国的人才能力, 才能找到我们在世界稳定的立足点。一我之功敌之长是很不明智的选择。

1、3D游戏与艺术修养的关系

大多数的人认为3D的制作和艺术修养没有很大的关系, 其实这是错误的思想。一个艺术功底非常扎实的人半路出家制作3D游戏要远远比一个没有艺术功底的人做几年甚至十几年要好的多。我说的好不是所谓的专业技能, 而是艺术意境。

在我看来艺术功底和审美是可以画上约等于号的, 一个没有艺术涵养的人只会一味的做着老板发下来的工作, 墨守成规是很难脱影而出的, 注定了只能做一个工匠。但是如果在工作的要求范围内加入一个人的艺术涵养也就是灵气, 那将大大的不一样, 因为那就是从工作升华到了创作!

我们有五千年的文化遗产, 有用不完的素材和灵感。可是现在情况却是我们宝贵的文化遗产没有在自己国家的人手中发光, 却让国外的人屡屡用我们的文化遗产。这丝毫不弱于民众危机, 若干年后我们的后代的思想会被他们拉扯过去, 会一味的崇洋媚外。

2、关于3D数字制作软件

首先说3D游戏的主要软件有3DMAX·ZB·MAYA等, 这是国内主要用到的软件。综合国内的情况3DMAX的使用很是广泛, 有很多领域要用到的软件。这个软件的特性主要体现在性价比上, 它可以支持各种的引擎, 上手速度快, 节省工作时间等优点。缺点在于不够MAYA的人性化, 节省时间的基础上缺乏灵活性, 但是确实很适合制作游戏。ZB是次时代单机游戏制作的一个重要软件, 对于艺术功底强的人很容易上手, 可对低模进行细致雕刻, 很方便的软件, 但是国内熟练的人才很少, 大多这样的人才都被国外次时代游戏公司高薪挖去。

3D动画或是CG一类的制作软件主要有MAYA·PS·PR等诸多后期软件。因为3D动画的要求是要精度的模型, 所以MAYA这样可塑性强的软件比较适合动画的制作。还有MAYA的动画系统十分齐全及人性化相比3DMAX的动画系统有很大让人发展想法的空间。再者动画需要各种各样的后期制作, 对于国内的后期在我看来在世界上还是算的上有发言权的。很多的国外大型电影和动漫游戏公司的后期都高价拿到中国来制作, 所以说我们有很强大的后期团队, 却极其的缺少优秀的领军人物!

在我国, 游戏设计成为方兴未艾的朝阳产业, 与世界发达国家相比, 中国的数字媒体才刚起步。远远不能满足国产动漫业对人才的需求。据北大方正影视游戏动画机构有关人士称, 从动漫业的发展趋势来看, 游戏设计人才总需求量大约在10 万人。目前市场上游戏设计人才难招, 主要缘于两方面:一方面是中国对游戏人才的教育还比较滞后, 还没有形成高质量的供给;另外游戏创作也需要实践经验, 而且游戏人才也需要艺术根底的, 其实游戏人才是一个需要全方面素质的人才, 其中, 教育是最根本的问题之一。最早的CG培训始于上世纪90 年代初期, 开始主要是一些平面培训班为了扩大授课范围而开设的三维软件培训班, 近两年, 专门的游戏、动画技术短期培训班才多了起来, 但其不菲的学费、脱产学习方式却使很多CG爱好者望而却步。

为了缓解国内游戏设计人才急缺状况, 提供适合各层次、各城市学员不同需求的培训课程, 以网络方式开展动画设计师远程培训, 远程教育具有性价比高、学习时间灵活、招生范围广阔等优点, 以远程教育方式开展的动画设计培训, 将会受到学员以及社会各界的关注与厚爱!

三、结论

3D游戏设计整体的多元化和部分个性化的发展, 使人们对设计形态、设计情感产生了更高的要求, 促使更新的题材和形式出现。设计师要想发挥独创性, 运用与众不同的表现角度和表现手法, 不走人家走过的老路, 关键在于3D游戏设计必须发展创新。

参考文献

[1]袁庆龙, 候文义.中国游戏产业论[J].鲁迅美术学院学报, 2001, 32 (1) :51-53.

[2]高志, 三维动画的发展[J].吉林:吉林美术出版社, 2006, 04 (4) :23-27.

3D游戏图形学实验一 篇5

实验指导书

浙江理工大学 二0一五年十月

数字图像处理实验指导书

课程实验指导

一、实验总体方案

1.教学目标与基本要求

1)掌握本书所介绍的图形算法的原理。

2)掌握通过具体的平台实现图形算法的方法,培养学生使用现代图形系统API的能力。

3)通过实验培养具有开发一个基本图形软件包的能力。2.实验平台

实验主要结合OpenGL设计程序,实现各种课堂教学中讲过的图形算法。程序设计语言主要以C/C++为主,开发平台是Visual C++。

3.实验步骤

1)预习教材与实验指导的实验具体方案部分相关的算法理论及原理。2)仿照教材与实验指导提供的算法,利用VC++ OpenGL进行实验。

3)调试、编译、运行程序,运行通过后,可考虑对程序进行修改或改进。

二、实验预备知识

OpenGL作为当前主流的图形API之一,在一些场合具有比DirectX更优越的特性。

(1)与C语言紧密结合

OpenGL命令最初就是用C语言函数来进行描述的,对于学习过C语言的人来讲,OpenGL很容易理解和学习。

(2)强大的可移植性

微软的Direct3D虽然也是十分优秀的图形API,但它只适用于Windows系统,而OpenGL不仅适用于Windows,还可以用于Unix/Linux等其他系统,它甚至在大型计算机、各种专业计算机上都有应用。并且,OpenGL的基本命令都做到了硬件无关,甚至是平台无关。

(3)高性能的图形渲染

OpenGL是一个工业标准,它的技术紧跟时代,现今各个显卡厂家无一不对OpenGL提供强力支持,激烈的竞争中使得OpenGL性能一直领先。

总之,OpenGL是一个非常优秀的图形软件接口。

下面对Windows下的OpenGL编程进行简单介绍。以下几点是学习OpenGL前的准备工作。

1.选择一个编译环境

现在Windows系统的主流编译环境有Visual C++,C++Builder,Dev-C++等,它们都支持OpenGL。这里选择Visual C++作为学习OpenGL的实验环境。

2.安装OpenGL工具包

1)将OpenGL工具包dll文件夹中的*.dll文件放到操作系统目录下面的system32文件夹(其路径一般为:C:WindowsSystem32)。

2)打开VC,在VC中选择Tools→Options→Directories,然后在Show directories for中选择Include files,在下面添加OpenGL工具包中Include文件夹的路径,如下图所示:

数字图像处理实验指导书

3)类似地,在Show directories for中选择library files,在下面添加OpenGL工具包中lib文件夹的路径,然后按OK。如下图所示:

3.建立一个OpenGL工程

打开VC后,在VC中选择File→New→Project,然后选择Win32 Console Application, 选择一个名字,然后按“OK”。在弹出的对话框中点An empty project,选择Finish。然后向该工程添加一个源文件,选择一个名字。

三、实验报告要求

(1)有实验报告封面

(2)给出简要的设计思路(原理)。(3)给出实现代码。

(4)给出实验结果的屏幕截图。(5)实验的心得体会或建议。

数字图像处理实验指导书

实验一VC++6.0+OpenGL绘图环境及基本图形学算法

实验项目性质:验证性实验 所属课程名称:3D游戏图形学 实验计划学时:3学时

一. 实验目的

1、熟悉OpenGL的主要功能;

2、掌握OpenGL的绘图流程和原理;

3、掌握OpenGL核心函数的使用;

4、理解基本图形元素光栅的基本原理;

5、掌握直线和圆的多种生成算法。

二. 实验内容

1、创建一个OpenGL工程,利用OpenGL库函数进行简单图形设计与绘制;

2、编程实现DDA算法和Bresenham算法生成直线;

3、编程实现中点算法生成圆。

三. 实验原理

1、基本语法(C版本下的OpenGL语法)

OpenGL基本函数均使用gl作为函数名的前缀,如glClearColor();实用函数则使用glu作为函数名的前缀,如gluSphere()。OpenGL基本常量的名字以GL_开头,如GL_LINE_LOOP;实用常量的名字以GLU_开头,如GLU_FILL。一些函数如glColor*()(定义颜色值),函数名后可以接不同的后缀以支持不同的数据类型和格式,如glColor3b()、glColor3d()、glColor3f()和glColor3bv()等,这几个函数在功能上是相似的,只是适用于不同的数据类型和格式,其中3表示该函数带有三个参数,b、d、f分别表示参数的类型是字节型、双精度浮点型和单精度浮点型,v则表示这些参数是以向量形式出现的。

OpenGL定义了一些特殊标识符,如GLfloat、GLvoid,它们其实就是C中的float和void。

2、程序的基本结构

OpenGL程序的基本结构可分为三个部分: 第一部分是初始化,主要是设置一些OpenGL的状态开关,如颜色模式(RGBA或ALPHA)的选择,是否作光照处理(若有的话,还需设置光源的特性),深度检验、裁剪等。这些状态一般都用函数glEnable(„)、glDisable(„)来设置,数字图像处理实验指导书

“„”表示特定的状态。

第二部分设置观察坐标系下的取景模式和取景框位置大小,主要利用了三个函数:

函数void glViewport(left, top, right, bottom)设置在屏幕上的窗口大小,四个参数描述屏幕窗口四个角上的坐标(以像素表示);

函数void glOrtho(left, right, bottom, top, near, far)设置投影方式为正交投影(平行投影),其取景体积是一个各面均为矩形的六面体;

函数void gluPerspective(fovy, aspect, zNear, zFar)设置投影方式为透视投影,其取景体积是一个截头锥体。

第三部分是OpenGL的主要部分,是使用OpenGL的库函数构造几何物体对象的数学描述,包括点线面的位置和拓扑关系、几何变换、光照处理等。

3、OpenGL状态机制

OpenGL的工作方式是一种状态机制,它可以进行各种状态或模式设置,这些状态或模式在重新改变它们之前一直有效。例如,当前颜色就是一个状态变量,在这个状态改变之前,绘制的每个像素都将使用该颜色,直到当前颜色被设置为其他颜色为止。OpenGL中大量地使用了这种状态机制,如颜色模式、投影模式、单双显示缓存区的设置、背景色的设置、光源的位置和特性等。许多状态变量可以通过glEnabel()、glDisable()这两个函数来设置成有效或无效状态,如是否设置光照、是否进行深度测试等;在被设置成有效状态之后,绝大部分状态变量都有一个缺省值。

四. 实验代码

1、如预备知识所述,安装OpenGL工具包,创建一个OpenGL工程,在源文件上输入如下代码: #include #include //初始化OpenGL场景 void myinit(void){ glClearColor(0.0, 0.0, 0.0, 0.0);glMatrixMode(GL_PROJECTION);gluOrtho2D(0.0,200.0,0.0,150.0);glShadeModel(GL_FLAT);//设置明暗处理 } //用户的绘图过程 void display(void)

//将背景置成黑色

数字图像处理实验指导书

{ glClear(GL_COLOR_BUFFER_BIT);//清除缓存

glBegin(GL_LINES);

//开始画一根白线

glColor3f(1.0f, 1.0f, 1.0f);//设置颜色为白色

//设置第一根线的两个端点,请注意:OpenGL坐标系的原点是在屏幕左下角 glVertex2f(10.0f, 50.0f);glVertex2f(110.0f, 50.0f);glColor3f(1.0f, 0.0f, 0.0f);//设置颜色为红色 //设置第二根线的两个端点 glVertex2f(110.0f, 50.0f);glVertex2f(110.0f, 150.0f);glEnd();//画线结束

glFlush();//绘图结束 } // //主过程:

// 初始化Windows的窗口界面 // 并初始化OpenGL场景,绘图 int main(int argc, char** argv){ glutInit(&argc,argv);glutInitDisplayMode(GLUT_SINGLE|GLUT_RGB);//初始化窗口的显示模式 glutInitWindowSize(400,300);//设置窗口的尺寸 glutInitWindowPosition(100,120);//设置窗口的位置 glutCreatWindow(“”); //创建一个名为“”的窗口 glutDisplayFunc(Display);//设置当前窗口的显示回调函数 myinit(); //完成窗口初始化

glutMainLoop();//启动主GLUT事件处理循环

数字图像处理实验指导书

return(0);}

glaux.lib glu32.lib glut32.lib opengl32.lib

注:glShadeModel选择平坦或光滑渐变模式。GL_SMOOTH为缺省值,为光滑渐变模式,GL_FLAT为平坦渐变模式。

该程序是在一个黑色的窗口中画两条线,分别用白色和红色绘制。首先,需要包含头文件#include ,这是GLUT的头文件。本来OpenGL程序一般还要包含,但GLUT的头文件中已经自动将这两个文件包含了,不必再次包含。然后是main函数,其使用GLUT库实现窗口管理。我们关注的是display()函数,它是我们真正绘图的地方。

函数glColor3f()以RGB方式设置颜色,格式为:glColor3f(red,green,blue),每种颜色值在(0.0, 1.0)之间。函数glVertex2f(x, y)设置二维顶点。函数glBegin(UINT State)、glEnd()是最基本的作图函数,下面对它作一介绍。

如上所述,OpenGL是一个状态机,glBegin(UINT State)可以设定如下状态: GL_POINTS GL_LINES

画点

画线,每两个顶点(Vertex)为一组

画线,把若干个顶点顺次连成封闭折线 画三角形,每三个顶点为一组 画多边形 GL_LINE_STRIP 画线,把若干个顶点顺次连成折线 GL_LINE_LOOP GL_TRIANGLES GL_QUADS GL_POLYGON 画四边形,每四个顶点为一组

还有GL_TRIANGLE_STRIP, GL_TRIANGLE_FAN, GL_QUADS_STRIP 等等。大家把每一种状态都试一试。另外,程序可以有多组glBegin()、glEnd()并列的形式,如:

......数字图像处理实验指导书

glBegin(GL_LINES);

glBegin(GL_QUADS);......glEnd();......除了上述的基本图元外,函数glRectf(x1, y1, x2, y2)可以画一个矩形,但这个函数不能放在glBegin()和glEnd()之间,下面的两句程序是画一个蓝色的矩形。

glColor3f(0.0f, 0.0f, 1.0f);glRectf(10.0f, 10.0f, 50.0f,50.0f);......glEnd();要求:利用OpenGL库函数绘制基本图形,输出绘制结果。

数字图像处理实验指导书

void display(void){

} glColor3f(0.0f, 0.0f, 1.0f);glRectf(10.0f, 10.0f, 50.0f, 50.0f);//画线结束 glFlush();//绘图结束 glClear(GL_COLOR_BUFFER_BIT);//清除缓存

glBegin(GL_LINES);

//开始画一根白线

glColor3f(1.0f, 1.0f, 1.0f);//设置颜色为白色

//设置第一根线的两个端点,请注意:OpenGL坐标系的原点是在屏幕左下角 glVertex2f(10.0f, 50.0f);glVertex2f(110.0f, 50.0f);glColor3f(1.0f, 0.0f, 0.0f);//设置颜色为红色 //设置第二根线的两个端点 glVertex2f(110.0f, 50.0f);glVertex2f(110.0f, 150.0f);glEnd();

2、创建一个新的OpenGL工程,在源文件上输入如下代码: //DDA算法

# include

数字图像处理实验指导书

void LineDDA(int x0, int y0, int x1, int y1){

}

void myDisplay(void){

glPointSize(5);glBegin(GL_POINTS);glColor3f(0.0f,1.0f,0.0f);glVertex2f(0.0f,0.0f);int x, dy, dx, y;float m;dx=x1-x0;dy=y1-y0;m=dy/dx;y=y0;glColor3f(1.0f, 1.0f, 0.0f);glPointSize(1);for(x=x0;x<=x1;x++){

} glBegin(GL_POINTS);glVertex2i(x,(int)(y+0.5));glEnd();y+=m;glClear(GL_COLOR_BUFFER_BIT);glColor3f(1.0f,0.0f,0.0f);glRectf(25.0,25.0,75.0,75.0);

数字图像处理实验指导书

} glEnd();LineDDA(0,0,200,300);glBegin(GL_LINES);glColor3f(1.0f,0.0f,0.0f);glVertex2f(100.0f,0.0f);glColor3f(0.0f,1.0f,0.0f);glVertex2f(180.0f,240.0f);glEnd();glFlush();void Init(){

}

void Reshape(int w, int h){

}

int main(int argc, char * argv[])glClearColor(0.0,0.0,0.0,0.0);glShadeModel(GL_FLAT);glViewport(0,0,(GLsizei)w,(GLsizei)h);glMatrixMode(GL_PROJECTION);glLoadIdentity();gluOrtho2D(0.0,(GLdouble)w,0.0,(GLdouble)h);

数字图像处理实验指导书

{

} 介绍一下glutReshapeFunc()函数:

首次打开窗口、移动窗口和改变窗口大小时,窗口系统都将发送一个事件,以通知程序员。如果使用的是GLUT,通知将自动完成,并调用向glutReshapeFunc()注册的函数。该函数必须完成下列工作:

a. 重新建立用作新渲染画布的矩形区域; b. 定义绘制物体时使用的坐标系。如:

void Reshape(int w, int h){ glViewport(0, 0,(GLsizei)w,(GLsizei)h);glMatrixMode(GL_PROJECTION);glLoadIdentity();gluOrtho2D(0.0,(GLdouble)w, 0.0,(GLdouble)h);

} 在GLUT内部,将给该函数传递两个参数:窗口被移动或修改大小后的宽度和高度,单位为像素。glViewport()调整像素矩形,用于绘制整个窗口。接下来三个函数调整绘图坐标系,使左下角位置为(0,0),右上角为(w,h)。glutInit(&argc, argv);glutInitDisplayMode(GLUT_RGB|GLUT_SINGLE);glutInitWindowPosition(100,100);glutInitWindowSize(400,400);glutCreateWindow(“Hello World!”);Init();glutDisplayFunc(myDisplay);glutReshapeFunc(Reshape);glutMainLoop();return 0;要求:

1)根据所给的直线光栅化的示范源程序,在计算机上编译运行,输出正确结果(示范代码有错误,指出并改正);

数字图像处理实验指导书

示范代码展示:

void LineDDA(intx0, inty0, intx1, inty1){

} float x, dy, dx, y;float m;dx = x1y0;m = dy / dx;y = y0;glColor3f(1.0f, 1.0f, 0.0f);glPointSize(1);for(x = x0;x <= x1;x++){

} glBegin(GL_POINTS);glVertex2i(x,(int)(y + 0.5));glEnd();y += m;

数字图像处理实验指导书

2)根据示范程序采用的算法,以此为基础将其改造为Bresenham算法,写入实验报告;

void Bresenhamline(intx0, inty0, intx1, inty1, intcolor){

int x, y, dx, dy;float k, e;dx = x1y0, k = dy / dx;e =-0.5, x = x0, y = y0;for(int i= 0;i <= dx;i++){

glPointSize(2.0f);glBegin(GL_POINTS);glColor3f(1.0f, 1.0f, 1.0f);glVertex2f(x, y);glEnd();

数字图像处理实验指导书

} } x = x + 1,e = e + k;if(e >= 0){ } y++, e = e4 * radius;float deltaE = 12;float deltaSE = 20-8 * radius;

glPointSize(3);glBegin(GL_POINT);glColor3f(0.0, 1.0, 0.0);glVertex2i(x, y);glEnd();while(y>x){

if(d <= 0){ d += deltaE;

数字图像处理实验指导书

deltaSE += 8;

}

else

{

d += deltaSE;

deltaSE += 16;

y--;

}

deltaE += 8;

x++;

glBegin(GL_POINTS);

glVertex2i(x, y);

glVertex2i(x,-y);

glVertex2i(-x, y);

glVertex2i(-x,-y);

glVertex2i(y, x);

glVertex2i(y,-x);

glVertex2i(-y, x);

glVertex2i(-y,-x);

glEnd();}

3D游戏 篇6

“Facebook”和“第二人生”整合在一起是什么?答案是游秀世界。

游秀世界是易城蓝天开发出的世界上第一款基于网页的3D社交娱乐平台。这是一个全新的体验:用户可以告别庞大的游戏客户端,只需要下载一个3M左右大小的插件,就可以直接在网页上运行3D互动游戏,同时可进行SNS社区的2D活动。

SNS平台加上网络3D游戏,两者相结合并不是件容易的事情。易城蓝天的CE0宋晨枫研究这种组合有很长一段时间。创立易城蓝天之前,宋晨枫在微软游戏工作室担任中国市场的游戏制作人,创建了中国首个视频游戏孵化中心,并负责其与中国顶尖游戏开发商合作开发面向中国的Xbox 360游戏。“SNS是整合人际关系的一种方式,用内容整合关系。变成关系渠道。”在研究了SNS后。宋晨枫得出这样的结论。

全世界的创业者都想参合SNS这块大蛋糕,Facebook抢了最大的一块,剩下的人难免要与其区别开来。在对比过程中,宋晨枫发现国内的SNS平台几乎都以2D游戏娱乐为主要卖点,功能同质化很严重,平台缺乏创新,用户难以持续保持活跃度。“Facebook的用户活跃度一直很高是因为它用户自创内容很多,并且拥有包括第三方软件开发商在内的完善的产业链。”宋晨枫说。相比之下,国内的SNS用户还不够成熟,不能自己创造内容,要靠平台引导。虽然开心网、人人网都说要做开放平台,但是他们自己缺乏独特的核心技术,国内的第三方软件开发商也一直不成气候。

基于这样的前提,2007年宋展枫组建了自己的团队创建了易城蓝天,其中有约7人来自微软、Google这样的软件互联网巨头。利用之前开发游戏的经验,他和他的团队花费了近两年的时间开发出了先进的网页3D引擎技术“Eden”(伊甸园)。率先实现了在网页环境下的3D应用,游秀世界便是基于Eden而开发出来的“游戏+社区”的全新平台。

“SNS平台活跃度要看两块,一块是社区的形成,即人际关系的拓展;另一块是平台内容能够即时更新。游秀世界的优势是人际关系这一块能够延续SNS的长处,平台内容则能利用公司自身独有的Eden技术来不断拓展比传统2D插件更富体验性的3D应用。”宋展枫对自己的产品非常有信心:与Facebook相比,游秀世界娱乐性更强,更能吸引客户;与开心网、人人网相比,游秀世界基于Eden基础的3D游戏更能保持用户持续的活跃度。

在商业模式上,宋晨枫对易城蓝天有阶段性的规划。第一阶段是企业品牌期,即依靠自有产品游秀世界将企业品牌树立。这一阶段企业主力打造游秀世界,等到用户积累到一定数量的时候,就选择像网游一样的出售虚拟道具作为主营业务,另外还会在游戏中插入一些植入式广告。第二阶段是软件开发期,即在品牌逐渐强大后,依靠自主知识产权的Eden技术,承接其他网站、社区3D网页软件设计业务。

3D游戏 篇7

关键词:Android平台,设计技术,设计方案

0 引言

Android是目前全世界最为普及的移动设备平台, 由于人类生活质量的不断提高, 其发展领域也开始向娱乐、文化、生活服务等各个方面进行拓展, 以其智能、便利等多种优势成为人们日常使用的基本设备之一。近年来, Andriod平台一直致力于打造优秀的移动设备游戏, 各类手机游戏层出不穷, 而3D游戏也成为了开发重点对象。对此, 下文将主要针对当前国内安卓设备3D游戏的发展状态作基本阐述, 然后深入探索3D游戏设计要点, 分析基本3D游戏开发基本要点和设计需求, 来完善3D游戏的设计制作过程。

1 3D移动设备游戏市场

1.1 3D移动设备游戏的市场背景

由于Android平台的横空出世和移动设备的普及, 如今的3D移动设备游戏成为了年轻人休闲娱乐的基本活动之一。移动设备游戏即是可以运用数据通信等功能在移动终端运行的游戏, 这种游戏不会受到太多因素的干扰, 玩家可以随时随地玩游戏来达到休闲娱乐的目的。在我国, 移动设备的游戏开发日趋成熟, 加之相关技术的不断提升, 也使得越来越多的移动设备开始支持3D图像处理及显示功能。近年来, 移动设备上的游戏由于硬件等方面的制约, 仍旧以2D游戏居多。相较于普通的2D游戏而言, 3D游戏在视觉效果拥有着更为精致卓越的表现力。市场上, 大量的开发商和制作商都开始意识到3D游戏的发展趋势, 纷纷投入到安卓设备3D游戏的开发和创作中去, 使得该行业发展壮大, 与此同时也带动了其他产业的发展。

1.2 Android平台3D游戏发展制约因素

尽管我国移动设备的游戏开发行业发展迅猛, 但也受诸多因素的影响, 主要包含以下几个方面。

1) 人才匮乏。对于移动终端的游戏设计需要运用到十分专业的设计技巧和方案。相比于国外而言, 我国在这方面的人才较少, 还需要不断培养和挖掘设计开发人员。

2) 移动终端限制。由于市场上各种移动设备在硬件等配置上的差异, 游戏的表现情况也大不同。这就使得部分设计而成的游戏无法与设备相兼容。

3) 网络连接问题。目前许多大型3D游戏都是网络游戏, 这就在一定程度上要求用户能够处于一个十分稳定的网络连接状态下, 如何网络不顺畅很容易导致游戏过程受到阻碍。

2 3D游戏基本设计需求

2.1 表面层板块

2.1.1 菜单设计

一个游戏的制作最基本的就是界面菜单设计, 其中需要包括开始游戏、结束或退出游戏的选项, 以及为方便玩家使用而设计的帮助选项等等。

“开始游戏”即是在刚刚启动游戏, 玩家为了进入到游戏过程中而设计的选项入口。

“继续游戏”即是当玩家暂停游戏后回到主菜单界面, 为了继续进行游戏而设计的入口, 使玩家可以接着之前的游戏进程而进行游戏。

“帮助”即是为了让玩家了解和熟悉游戏规则和过程, 将游戏相关简介及玩法放入其中供玩家浏览和解读。

“退出游戏”即是当玩家不想再继续进行游戏而选择的结束选项, 并退出这一游戏程序。

2.1.2 图层渲染设计

这一板块涵盖了诸多内容的设计, 其中包括了游戏界面设计、人物角色设计、游戏控制设计等等。定时重绘则是整个设计中最为关键的部分之一。在整个游戏运行过程里, 各个成分都处于运动过程, 为了呈现出更好的动画效果, 需要运用到定时重绘让3D效果更为

饱满, 并以这一技术手段来使玩家可以得到更好的游戏体验。另外, 过程控制也是主要的设计内容之一, 整个游戏都需要按照同一控制方式进行。与此同时, 游戏过程中的界面设计也需要借助于多个图层的构建来形成一个完善的界面显示系统, 使得3D效果可以更好地投射到游戏之中。

2.1.3 菜单显示设计

在游戏过程中, 为了方便玩家可以自由暂停、继续或退出游戏需要设计隐藏的菜单板块, 这个图层具有独特性, 需要单独设计图层, 可以运用滑入和滑出的方式来设计这一菜单板块。

2.2 游戏逻辑设计

2.2.1 运动方向设计

无论是哪种类型的游戏都需要基本的控制设计, 例如《愤怒的小鸟》这一游戏, 需要玩家通过触觉感应来控制小鸟射击方向, 以滑动的方式来选择运行轨迹进行游戏。再比如3D游戏《地铁跑酷》是通过控制人物左右运动而设计的跑酷类游戏。

2.2.2 游戏障碍设计

在各种游戏中, 缺少不了障碍物的设计。例如在《花千骨》3D网游中出现的打怪关卡, 都属于障碍设计。这一内容的设计可以充分调动想象力, 使玩家能够深入到游戏故事之中, 提高通关难度, 让玩家享受这一娱乐过程。

2.2.3 游戏奖励设计

为了让玩家角色能力得到提升, 可以适当地在游戏过程中设计奖励关卡, 例如跑酷游戏中玩家可以拾取大量金币, 然后在游戏商店购买更好的游戏装备, 提升人物能力或等级。奖励形式多变, 根据不同类型的游戏可以进行不同内容的构思和设计。

3 3D游戏的其他需求

1) 表现需求。3D游戏顾名思义需要拥有十分立体和真实的动态效果。一般情况下, 游戏背景界面设计在动画表现上连续性强, 音效也需要进行优化, 使得整个3D效果声画统一、和谐。只有这样才能让玩家初次启动游戏就会被这一强烈的画面感所吸引, 而对游戏内容更为好奇。整个菜单界面设计简洁, 不失表现力, 布局上也需要方便玩家控制使用。

2) 3D游戏通常都会使图形处理能力大幅提升, 这就意味着其需要支持的硬件设备性能要求更高。因此, 游戏设计过程也需要兼顾到Android开发和应用, 来使得二者能够更好的实现功能对接。除此之外, 在游戏过程中时常会出现运行错误等现象, 这就需要游戏设计过程中考虑到这些情况的发生, 并设计出合理及时的处理方案, 对异常现象进行第一时间的处理和解决。另外还要添加异常信息反馈程序, 来使得3D游戏设计得以完善和强化。

3) 大部分大型3D网游等游戏在设计初始阶段, 设计的游戏故事板块和任务完成板块较少, 不能达到玩家全部需求。所以, 在设计过程中还需要预留开发方向和相关内容, 使需求完善阶段能够对游戏内容进行拓展和延伸。

4) 根据用户Android系统版本, 需要增强游戏的可移植性, 来满足不同版本需求。

4 结论

综上所述, 当下我国Android平台的3D游戏受到了越来越多用户的喜爱。如何更好的设计完善3D游戏, 需要考量到游戏过程的各个细节并进行优化处理。3D游戏设计除了要满足人们日常使用的安卓移动设备的基本硬件配置等, 还需要全方位的致力于设计更加优质的游戏故事构架和基本操作过程及表现效果来引人入胜。相对来说, 安卓平台的3D游戏设计开发还需要不断地深入探索研究, 开发强大的游戏效果和情节过程来激发玩家的游戏欲望。这一过程还需要进行长期的努力探索和实验, 相信今后的开发制作会创造出更多优秀的游戏作品。

参考文献

[1]胡浩, 温静馨.3D游戏中人物动作的实时渲染[J].沈阳大学学报, 2012 (2) :26.

[2]谢景明.3D游戏引擎技术开发的研究[J].广州番禺职业技术学院学报, 2013 (4) :12-13.

3D游戏 篇8

关键词:法线贴图技术,凹凸映射图,法线向量,切线向量

在游戏中可以看到人物面部的皱纹,石质的浮雕等等凹凸效果都是通过3D凹凸技术完成3D效果表现。制作凹凸感的表现方法大致有二种方法,一种方法是在创建模型时,增加模型的网格数制作出凹凸感。这种方法的优点是准确、真实,但缺点是模型数据较大,点面数较高,对硬件设备要求很高。在游戏开发中很难应用的。另一种方法是通过材质表现实现凹凸效果。即在材质编辑器中使用凹凸(BUMP)贴图或法线(NORMAL)贴图来表现凹凸纹理效果。凹凸(BUMP)贴图只是一种视觉上的凹凸效果,模型的真实网格并没有发生相应的形变,如果视角变化,看起来就是一张简单的平面图。而法线(NORMAL)贴图中,在贴图过程中对贴图进行了一定的处理,从而保证了在视角变换以后仍然保证有较为明显的凹凸效果。

法线贴图是目前更为先进的凹凸表现技术,法线贴图改变了原来只是黑白的信息,而是采用蓝、紫色来代表相应的凹凸信息。使用了法线贴图的模型,其凹凸信息会在光的照射下产生相应的高光和阴影,在没有改变模型多边形数量的前提下,而获得更高的多边形的细节,因此,法线贴图技术广泛用于游戏引擎程序中。

1 法线贴图技术

法线贴图技术是一种虚拟3D技术。人之所以能够对物件看出立体感的主要原因是因为人的两只眼睛因看到景像的不同,则能够分辨出景像的立体感。但电脑的屏幕是一个平面,分辨3D效果就只能靠光照效果来实现,法线贴图就是把一个表面的凹凸情况用每个点的法线向量记录下来,在贴图的时候根据法线贴图做光影的变换,从而实现凹凸效果。光照计算是法线贴图技术的数学基础。

法线贴图的RGB值取并不是RGB的颜色,而是每个点的法线向量的三个分量。在贴图的时候根据法线向量的三个分量做光影的变换,而每个像素的光照度是由光照计算公式所用的法向量及切向量决定的。如果将一个贴图上所有的像素点和法线向量及切向量记录下来,再用RGB颜色编码方式进行记录,这样就可以实现后期的凹凸效果了。

2 凹凸映射图的构造

当物体从任何非边缘方向观察的时候,见到的表面细节通常是由表现的光照方式决定的。在法线贴图中就是记录下了一个需要进行光照的光影变换的贴图上的各个点的凹凸情况的贴图,而每个像素的光照度是由光照计算公式所用的法向量决定的。要记录所有的贴图中像素点的法向量信息,则需要通过数学的方法来完成,采用凹凸映射图技术能很好的解决光照及法向量的问题。通过使用纹理映射在每个像素点上对法向量进行扰动,从而可以提供更详细的光照细节。

对法向量进行扰动的高分辨率信息存储在一种三维向量的法线图的二维数组中,这个三维向量称为凹凸映射图或法向量映射图。凹凸映射图中的每个向量表示一个方向,在这个方向上,法向量相对于插值所得法向量做相对偏向。向量<0,0,1>表示一个没被扰动的法向量,任何其他的向量则表示对影响光亮度公式的向量的修改。

用一个高度图(Height map)的灰度图来储存每一个像素的平面高度,灰度值的不同表示不同的平面高度,从而构造一个凹凸映射图。

在查找二维纹理图中的纹理元素时要分别用到二维纹理坐标。设二维纹理图的宽度、高度分别用s,t方向上的坐标值,取值区间为0到1。

为了从灰度图中得到某一个像素间的高度差,首先要计算s和t方向上的切向量,而切向量依赖于邻近两像素间的高度差。在具有w×b个像素的灰度图中,用H(i,j)表示存储在位置的灰度值,这样可以将s和t方向上的切向量S(i,j)和T(i,j)表示为:

公式中的常量a是用于调节灰度值范围的比例系数,用它可以控制对法向量扰动的程度。如果用Sz和Tz分别表示S(i,j)和T(i,j)的z分量,则法向量N(i,j)可以通过下面的叉积得到:

设s、t、r为坐标组成从立方体中心指向待采样纹理像素的方向向量,并将这些坐标重新映射到区间[0,1]上,以生成2D纹理坐标。这样在立方体纹理图相应的面上,可以使用相应的纹理坐标实现二维纹理图的采样。

2D坐标的计算公式为:

立方体的六个面上存储的不是图像的颜色,而是向量阵列,每个向量以RGB形式进行编码记录。计算公式为:

根据公式(4),法向量的分量用对RGB颜色编码方式进行记录。在图1中给出了一个灰度高度图,以及用公式(2)得到的对应的凹凸映射图。凹凸映射图中包含了被扰动的法向量。图中大部分都是淡紫色的。这是因为对于未被扰动的法向量(0,0,1),计算得到的RGB颜色为。

3 切线空间

因为向量<0,0,1>在凹凸映射中表示未经扰动的法向量,得到的法线贴图并不能得到很好的凹凸效果,所以需要将它与光亮度公式中经常使用的插值法向量相对应。这可以通过在每个顶点位置构造一个坐标系来实现,该坐标系中顶点法向量总是指向z轴正方向。除了法向量,在每个顶点位置需要两个与表面相切的向量。这两个向量形成正交基。这样所形成的坐标系统称为切线空间。如图3。

在顶点位置,切线空间与顶点切平面和法向量相对应。建立了三角网格的每个顶点的切线空间坐标系,就可以在每个顶点位置计算指向光的方向向量L,并将L变换的切线空间,然后对切线空间中的向量L在整个三角面上进行插值运算。

4 切向量的计算

选择每个顶点的切向量,以使它们与凹凸映射图的纹理空间保持一致。则采用有一种更加通用的计算方法来计算每个顶点的切向量。

在每个顶点处找到一个3×3矩阵,使用该矩阵可以将向量从对象空间转换到切线空间。为了达到这个目的。先考虑比较直观的问题,就是在相反的方向上如何将向量从切线空间转换到对像空间。因为顶点的法向量与切线空间中的<0,0,1>相对应,所以可以知道切线空间中的z轴总是映射为顶点的法向量。设x轴与凹凸映射图的s方向保持一致,y轴与凹凸映射图的t方向一致,p为三角形网络内部一点,则表达式为:

其中T和B是与纹理映射图保持一致的切向量,E是三角形的一个顶点的位置,是该点的纹理坐标。

假设三角顶点位置分别为E、F和G,并且它们所对应的纹理坐标分别为,,。以顶点E作为相对基准,设

并且设

T和B的方程为:

结合(5)、(6)、(7)、(8)式,则矩阵形式为:

两边都乘以矩阵的逆,可以得到:

通过上式可以得到顶点为E、F和G三角形的切向量T和B。得到顶点了法向量N和切向量T与B,利用下面的矩阵,就可以实现从切线空间到对象空间的变换。

经正交规格化后,新的切向量T'和B'可以表示为:

则从对像空间转换到切线空间的矩阵为:

其中T'和B'正交于N,并且相互正交。

将指向光的方向向量从对像空间变换到切线空间,求变换后的指向光的方向向量与凹凸映射图一个取样之间的点积,就可以得到光的某种颜色的表面向各个方向均匀地漫反射光照值。图4及图5为通过读取灰度高度图时行数学运算得到的法线贴图。

5 结论

法线贴图技术是通过凹凸映射图、切线空间的数学方法来实现的。凹凸映射运算在每个顶点位置上计算出指向光的方向向量L。切向量T'从顶点的属性数组中读取,B'向量用公式(13)计算得到。再结合RGB编码格式,记表凹凸映射坐标及纹理映射坐标。随着3D游戏开发的不断发展,应用法线贴图的数学方法实现实时表示3D的凹凸效果,为游戏引擎的开发提供一种数学方法。

参考文献

[1]珍妮.诺瓦科.游戏设计完全教程[M].糜晓波,译.上海:上海人民美术出版社,2008.

[2]Rouse R.游戏设计原理与实践[M].尤晓东,译.北京:电子工业出版社,2003.

[3]荣钦科技.JAVA游戏程序设计[M].北京科海电子出版社,2003.

3D游戏 篇9

1 依托于教学内容构造游戏故事, 提供虚拟学习空间。

任何教育教学活动都有一定的教学目标, 故事剧本的设计必须依托于教学目标并且围绕教学内容来设计[1]。只注重游戏设计, 忽略教学内容的游戏故事将变得毫无意义。在此以小学四年级数学游戏故事设计来说明:主人公小拉克从数字森林 (第一章大数的认识) 出发, 通过与森林中怪物的搏斗, 成功进入泥泞沼泽 (第二章角的度量) , 再到天梯层 (第三章三位数乘两位数) , 秘图宫 (第四章平行四边形和梯形) , 奇货码头 (第五章除数是两位数的除法) , 海上乐园 (第六章统计) , 秘林小镇 (第七章数学广角) , 最后回到秘林魔堡 (第八章总复习) 。整个故事情节设置完全依托教学内容, 并且通过对教学内容的提炼与总结, 形成游戏故事中的剧情。

2 发挥动漫角色的魅力, 通过角色造型增强教育游戏的吸引力。

任何一款成功的教育游戏都有一个引人制胜的故事情节和一些令人着迷的虚拟角色。“教”“娱”平衡的角色设计是教育游戏设计的要解决的关键问题之一[2]。动漫游戏中的角色设计就是要在促进教学目标达成的基础上, 保证角色的游戏特性, 既能引起学生的兴趣, 被他们所喜爱, 并能使学生在角色的成长中体验到快乐。动漫教育游戏中角色设计, 主要包括学生角色、被大多数教育游戏所忽略的教师形象、以及故事剧本中所涉及到的其他角色。无论哪种角色, 设计者应该首先对其进行宏观上的定位, 确定赋予该角色哪些教育功能, 以及怎样用游戏语言来体现这些功能。在根据宏观定位, 细化具体角色的各项特征, 比如角色基本信息、外貌特征、性格、目标, 角色之间的关系, 成长、语言特点等等, 并将这些特征用文字进行描述。紧接着到技术定位, 为游戏而设计的角色, 就要考虑到要在一定的技术范围内制作这个角色, 另外, 还要考虑到角色的各个转面设计。最后在到美术设计阶段, 此阶段所绘制的草图要与教学及游戏设计人员进行反复商讨改进, 最终确定角色造型。

一个好的角色造型设计的成功与否, 直接而深切的影响着作品的生命力和魅力。角色造型设计[3], 一种思路是可以运用原画演绎, 在现实生活中寻找角色的素材, 接着对着素材画素描或速写, 在画的过程中注意对比, 找出角色的“第一特征”, 再加上你的想象, 最后整理即可完成。另一种思路是可以运用形象拼接, 比如人的身体+动物或其他生物的头和其他部分, 或者几种动物的特征拼接起来, 然后发挥充分想象力来设计。

3 探索与任务相结合, 提供更加丰富的交互式体验。

“探索”是一个基于问题情境而设计的学习任务, 其独特之处在于将虚拟世界与现实世界的学习活动相结合, 将课程知识的学习与社会责任感的建立以及反思能力的培养相结合。“任务” (mission) , 它更加贴近游戏的故事情节、挑战性, 娱乐性更强。一方面能充分发挥虚拟世界的“仿真”特性来增强儿童的投入程度以及提高学习体验的临场感, 另一方面又能通过现实世界中的活动防止儿童因过度沉迷于虚拟世界造成虚幻感, 通过创设情境点, 使儿童能够清楚地认识到虚拟现实是一个“虚拟的仿真世界”, 是探究学习问题的虚拟实验室。动漫教育游戏设计可以借鉴大型网络游戏, 特别是角色扮演类和探险类游戏的一贯做法, 通过“探险”和角色扮演的的形式来呈现学习活动[4]。

3D动漫教育游戏中的交互式设计, 是至关重要的。当代学生已经不再满足于使用常规输入设备 (如键盘、鼠标和触摸屏) 的简单交互, 更加注重利用多个通道以自然、协作的方式进行多角色之间的情感交流。教育游戏的设计与制作是否能有效发挥其作用, 关键在于交互方式的灵活设计, 而交互式设计不只要在软件程序设计上下功夫, 通过声音与动漫游戏硬件的组合, 来达到共同捕捉学习者交互式体验的设计也是很好的选择。

综上所述, 结合小学课程体系和教学设计, 应用3D动漫的角色、造型、场景、交互设计方法来创作符合小学生心理特征的动漫教学游戏, 使动漫在教学过程中发挥其更大的魅力。真正变“要我学”为“我要学”。

摘要:三维是动漫技术的主流, 为现代动漫产业的发展提供了无限发展的可能。而教育游戏在信息时代教育发展中起着至关重要的作用。通过分析游戏故事、角色、造型、交互设计的理论, 提出教育游戏设计与3D动漫应用策略, 以期对国内教育游戏研究者有所借鉴与助益。

关键词:3D,动漫,教育游戏,角色,造型,交互设计

参考文献

[1]姚忠礼.动漫剧本创作[M].上海:上海人民美术出版社, 2009.

[2]陈慕如.浅谈动漫角色造型的设计技巧[J].清远职业技术学院学报, 2010 (3) .

[3]刘新阳, 马池珠.多用户虚拟环境教育游戏的设计与应用——对Quest Atlantis项目的分析与思考[J].现代教育技术, 2010 (1) .

3D游戏 篇10

1 Unity 5开发引擎

2015年初, Unity Technologies公司发布了Unity5。Unity是最著名的虚拟现实软件之一, 它也是一款3D跨平台开源的专业商业游戏引擎。采用Unity 5开发的原因有以下几点。

首先, 能让用户轻松创建三维游戏、建筑漫游、三维动画、三维视景仿真等3D游戏类项目。用Unity创建的游戏可以发布到个人PC机、浏览器、移动设备等21个平台上运行, 为开发者节省大量时间。

其次, 能支持各种常见格式模型、贴图文件, 轻松实现场景渲染、碰撞检测、人机交互、界面设计、文件管理等, 而且植染效果华丽逼真。

最后, Unity 5还新增了全新光影系统、音频混合器、物理效果系统和动画系统。具体功能体现在, Unity5整合了Enlighten即时光源系统及带有物理特性的Shader, 能呈现令人惊艳的高品质角色、环境、照明和效果;采用全新的整合着色架构, 可即时从编辑器中预览光照贴图, 提升了Asset打包效率;增加了一个针对音效设计师开发的全新音源混音系统, 可以让开发者创造动态音乐和音效。

2 游戏设计

2.1 游戏说明

本款游戏设计简单华丽的游戏特技效果, 没有多重操作的高操作性, 游戏的实际玩法就是玩家在3D场景中控制飞机躲过障碍物飞行。实际模拟驾驶飞机前进、升降与左右飞行, 通过拾取金币和特效工具进行关卡设计。

2.2 游戏玩法

玩家将本款游戏的APK文件安装到移动终端上, 利用触屏和重力感应控制飞机前进、上下、左右飞行, 躲避障碍物, 获取场景中的金币和特效工具。当玩家进入游戏时, 会出现选择游戏功能的选项, 包括“练习”“新游戏”“继续游戏”“帮助”四个选项。点击“练习”, 玩家可以通过画面解说词了解游戏的基本规则和操作动作。点击“新游戏”开始游戏, 当进度条加载满后, 进入游戏状态。当本次游戏结束, 玩家要重新开始游戏, 点击屏幕上循环图标即可实现。点击“继续游戏”, 玩家可以根据上次记录继续通关。点击“帮助”, 帮助玩家了解游戏规则、游戏道具、关卡设计, 提示用户如何操作等。游戏特效工具设计见表1。

2.3 游戏的设计

2.3.1 关卡的设计

设计金币的关卡信息, 当金币数量到达一定数量时, 游戏自动进入下一关卡, 主要代码如下。

2.3.2 飞机移动的功能实现

飞机通过向前、左右、上下五个方向移动, 获取飞机移动的方向, 通过计算飞行速度和时间判断飞机的位置, 主要代码如下。

3 结语

此游戏是以Unity5为平台和开发工具, 以C#语言为后台开发语言, 所开发出来的一款移动终端游戏。移动终端游戏在商业游戏开发中具有广阔的前景和市场, 国内已经掀起移动终端游戏开发的大风暴。在游戏设计与开发的整个过程中, 由于对Unity5的研究还不够深入, 遇到了很多问题, 主要问题是特效功能和相应的画面、音效的统一, 重力感应画面的流畅性, 飞机的飞行动画等。因此, 后续研究还有待进一步加强。

摘要:信息时代, 随着移动终端设备性能的发展, 移动终端游戏开发已成为市场新宠。本文通过Unity5游戏引擎, 设计了一款适合于移动终端设备的飞行3D游戏, 在Unity3D引擎中进行模块封装、数据处理和交互控制, 实现关卡切换、视景特效等实体动态效果, 完成了一款简单的飞行游戏。最后, 实现游戏向Android手机等移动终端的移植, 游戏基本功能完善, 运行流畅。

关键词:Unity5,移动终端,3D游戏

参考文献

[1]新浪游戏.GDC2015:数款游戏引擎公布震撼画质令人惊艳[EB/OL]. (2015-03-04) [2015-07-05].http://games.sina.com.cn/ol/n/2015-03-04/1018856427.shtml.

[2]陈俊锋.基于Unity3D的跨平台手机网络游戏的研究与实现[D].广州:中山大学, 2013.

3D游戏 篇11

任天堂(Nintendo)推出新一代Autostereo 3D(裸眼 3D)掌上游戏机“3DS”。育碧公司(Ubisoft)2011年计划发布的游戏中有一半都将支持3D游戏设备,包括科幻第一人称射击大作《幽灵行动4:未来战士》(Tom Clancy's Ghost Recon: Future Soldier)。其他采用Stereo 3D技术制作的3D游戏也将面世,如由Crytek工作室开发、美国艺电(Electronic Arts)发行的《孤岛危机2》(Crysis 2),Guerilla Games与索尼合作的《杀戮地带3》(Killzone 3), 顽皮狗工作室(Naughty Dog)的年度大作《神秘海域3:德雷克的诡计》(Uncharted 3)以及《美国职棒大联盟11》(MLB 11: The Show)。

尽管3D电视销量在2010年并未如愿出现爆发性增长,但消费电子制造商对电视市场仍有极高的预期。考虑到苹果iPhone与iPad的风靡与最初游戏发烧友们的力捧密不可分,目前主流电子游戏3D化的局面极有可能成为吸引消费者更换电视机和游戏机的绝佳理由。

任天堂的3DS将在今年2月率先于日本发售,随后登陆全球其他市场。然而早在去年6月,3DS在电子娱乐大展上第一次亮相时,任天堂提出使用警示,称6岁以下儿童不适合玩3D模式游戏,因为“6岁以下的儿童长时间观看3D影像,可能对眼睛发育产生不良影响”。任天堂在其日本官方网站上同样建议成年玩家在3D模式下体验游戏时每次不要超过30分钟,3DS还为此专门设计了实时切换游戏2D和3D模式的功能。其他3D设备生产商如索尼、三星、松下、东芝都在各自的产品使用说明中有类似警示。

目前医学界对3D持有不同看法。有人认为3D对人的视力没有特别突出的损害,有的认为3D会影响到视力发育和大脑感官功能。可能影响儿童视力,成年人则可能出现头晕、恶心、诱发癫痫等症状。美国最大的眼科保健服务公司VSP Vision Care发言人确认,美国有相当一部分人在观赏3D影像时会出现类似于晕车的症状,这是由神经中枢调节功能引起的“视觉眩晕”。

消费者担心,连续几个小时在屏幕前观看3D节目或体验3D游戏,是否完全对身体无害?

“将游戏转为3D格式从技术层面来说并不难,如何使3D游戏给观看者带来舒适的观感才是挑战所在。”索尼电脑娱乐公司平台研发主管戴维·库姆斯(David Coombes)说。“比如有些3D电影比其他电影看起来更舒服,游戏公司和好莱坞都在研究个中原因。3D技术发展太快,目前缺少足够的科学依据作出评定,所以我们还不知道哪一种技术长期使用更安全。”

3D游戏 篇12

索尼2010年4月22日开始向全球PS3用户推送3.30版固件更新。和上一次的3.21版“删除功能”不同, 此次的更新终于有新功能加入, 最值得注意的一点就是被期待已久的“3D游戏”。

虽然目前还没有任何一款PS3游戏支持3D立体化, 但3.30版固件已经在操作系统层面提供了对3D立体游戏的支持。索尼表示, 此次更新是为了配合索尼3D BRAVIA电视的发布。预计在3D BRAVIA上市前后, 我们就将看到PS3 3D游戏陆续出现。至于PS3播放3D蓝光电影的功能, 预计将于后续固件升级中提供。

(摘自《驱动之家》)

上一篇:施工灌浆技术下一篇:银行财务分析