怎么提升3d网页游戏的技术

网页能玩3D游戏!Web显卡加速技术详解
日 00:15&&&出处:&& 作者:李晓晟&& 编辑:李晓晟
   目前显卡芯片厂商都已经推出了比较成熟的通用运算解决方案,例如NVIDIA的CUDA通用运算技术,这项技术到目前为止应用的范围相当广泛,其中涵盖了:图像处理、视频处理、科学运算、密码破解等多种领域。通过这些技术不仅可以大大提升工作人员的工作效率,还能够进一步降低硬件成本。这也是为什么新一代超级大量采用GPU作为加速处理器的原因。
  关于利用CUDA通用运算技术进行转码的应用,我们在之前文章中已经做过相当全面的介绍及测试,相信大家已经非常了解显卡加速给我们带来的便利。而最近随着技术的进一步发展,大家最常用的网页也开始加入对显卡加速的支持,在这篇文章中,我们就详细的介绍一下显卡加速在网页中的应用。
网页能够爽玩3D游戏!
   说到网页游戏相信大家都会想到“蔬菜采摘”这一经典的游戏。网页游戏最先起源于德国,又称Web游戏,是利用浏览器玩的游戏,它不用下载客户端,任何地方任何时间任何一台能上网的就可以快乐的游戏,尤其适合上班一族。之前由于技术的限制网页游戏只能以2D形式来实现,不过最近网络巨头Google推出的O3D API技术则可以在Web中实现3D渲染的效果,当然这项技术还是需要GPU进行加速。
   通过O3D应用程序接口可以直接在浏览器中实现3D渲染,渲染的流畅度完全取决与GPU的计算能力。在测试中我们采用了NVIDIA最新推出的GT240显卡,由截图上可以看出在网页中实时渲染出的图像已经可以和《魔兽世界》来媲美并且画面非常流畅――帧数稳定保持在30帧以上而占用率却非常低。
开发者利用O3D开发出的Web 3D场景
   Google O3D还是通过插件的形式安装到浏览器中,感兴趣的朋友可以通过安装,Windows和Mac平台的插件都已经直接可以使用,而Linux平台的插件则需要手动编译。同时,Google还提供了大量的O3D演示DEMO,大家可以自行测试。
Web图形应用程序接口
   和前面介绍的O3D类似,WebGL也是一种基于Web的图形应用程序接口,目前Webkit内核的浏览器包括Safari、Google Chrome以及Mozilla公司的FireFox都内建了WebGL技术。
   WebGL是一种3D绘图标准,这种绘图技术标准允许把JavaScript和OpenGL ES 2.0结合在一起,通过增加OpenGL ES 2.0的一个JavaScript绑定,WebGL可以为HTML5 Canvas提供硬件3D加速渲染,这样Web开发人员就可以借助系统显卡来在浏览器里更流畅地展示3D场景和模型了,还能创建复杂的导航和数据视觉化。显然,WebGL技术标准免去了开发网页专用渲染插件的麻烦,可被用于创建具有复杂3D结构的网站页面,甚至可以用来设计3D网页游戏等等。
  WebGL完美地解决了现有的Web交互式三维动画的两个问题:第一,它通过HTML脚本本身实现Web交互式三维动画的制作,无需任何浏览器插件支持;第二,它利用底层的图形硬件加速功能进行的图形渲染,是通过统一的、标准的、跨平台的OpenGL接口实现的。
   不管是Google的O3D还是Khronos的WegGL都无疑是要将3D内容从本地搬到网页上来运行,两者都需要GPU加速才能获得更好的效果。从目前来看这两者似乎存在着一些竞争的关系,但我们完全可以相信在未来的两三年之内,在网页上运行大型3D游戏将不再是梦想。
Flash看高清仅占20%
   说完了利用显卡加速进行3D网页渲染的应用,下面再来讲讲大家在上网时最常做的事――观看网络视频。目前绝大部分的网络视频都基于Adobe公司推出的Flash技术,该技术对视频的压缩率相当高,画质也还能说得过去。但随着人们对网络视频清晰度的要求越来越高,网络视频播放必然需要GPU进行渲染。
&& &Adobe在近期发布了Flash最新测试版本――Flash 10.1 Beta2,正式版本预计要等到明年才会推出。不过在这个测试版中,Adobe已经加入了对视频GPU硬件加速的支持,可以在播放H.264编码的Flash视频时实现硬解,将解码视频的工作移交给显卡执行,从而使一些低端主机也能流畅的播放高码率视频。
   从测试结果中,可以看出支持显卡加速之后的版本所带来的性能提升非常明显。尤其在播放1080P视频时,CPU占用率竟减少了40%,即使是Atom这样的低端平台,占用率也仅为20%左右。
   不过Flash 10.1 Beta2只是通过调用显卡的视频解码单元来实现加速的效果,因此显卡的强大性能并没有完全发挥出来,并且受制于显卡视频解码单元缘故,新版本Flash播放器还只能硬解H.264编码,兼容性还有待提高。
Silverlight技术介绍
   对Web开发者来说Silverlight是一个非常熟悉的技术,Silverlight是一个跨浏览器、跨客户平台的技术,能够设计、开发和发布有多媒体体验与富交互(RIA,Rich Interface ApplicATIon)的网络交互程序。其本质和Adobe的Flash差不多,但开发方面更加具有灵活性。目前Silverlight的主要竞争对手就是Adobe Flash。
&& &微软在Silverlight 3中加入了几个关键技术的支持,包括支持更多的媒体编码格式,如H.264,AAC等等;图形计算采用GPU加速,有效的减轻CPU的负担;透视化3D技术,也就是把2D对象放到3D空间中去;Shader概念的引入,同样采用GPU进行加速。
使用Silverlight搭配GPU加速在网页中播放高清视频
   Silverlight对GPU加速的支持也体现出了微软对于未来Web应用中GPU重要性的认可,作为微软近两年来极力打造的一个Web媒体标准,Silverlight能否成功其实很大程度上取决于更加简化代码以及如何更好的调用用户的硬件资源,而GPU加速则正好可以满足后者。
   事实上,微软的其他产品也非常注重GPU加速,包括前面我们提到的IE9浏览器,还有windows7操作系统中的Direct Compute以及世人皆知的DirectX应用程序接口,这一切都是微软重视GPU的表现。
GPU加速将要成为必然
   从前面我们对于在Web上进行显卡加速的介绍可以看到,使用GPU加速Web内容不仅仅可以互联网内容更加丰富,而且从很大程度上降低了CPU的负担,用户在选购电脑的时候就可以直接搭配较低规格的CPU,但是至少需要配备一块。而对于选购中高端CPU的用户来说也同样不算浪费,使用GPU加速闲置的CPU资源可以用来处理更多其它的应用,比如一边欣赏着互联网上的高清视频,一边使用闲置的CPU执行大文件压缩等等。
&& &实际上目前利用GPU通用计算技术进行加速的方法不仅仅只针对于民用级,在专业领域更是做出了功不可没的贡献,当前最火热的灾难性大片《2012》其中大量让人赞不绝口的视觉特效就是通过NVIDIA&CUDA通用计算技术来实现的。据制片方介绍他们在四个月的时间里完成了103个任务繁重的计算机模拟镜头,而在展示这些镜头的时候,有非常大的计算量需要处理。正因为显卡强大的通用运算能力,让他们的工作效率提升了10倍。
   相信随着GPU的应用范围越来越广,在未来的电脑应用中大规模的采用GPU加速已经成为了一种必然,我们要做的仅仅是在选购电脑时搭配一款性能强劲并支持通用计算的显卡而已。■
大学生分期购物销量榜
看过本文的人还看了
10.8万人浏览 4.9万人浏览 4.3万人浏览 3.3万人浏览您可能也喜欢:1536人阅读
web前端(10)
摘要:本文主要介绍运用webgl的第三方框架three.js实现的一款简单的3D类网页游戏。主要内容包括介绍three.js,如何运用three.js摆放相机,设置相机角度,相机视觉角度转移,场景中物体的位置摆放和贴皮,在3d世界中的直线运动,碰撞检测等。
关键词:3d数学, webgl, three.js,
技术领域:前端开发,游戏开发,3d,webgl
一.&&&背景
作为 HTML5 大家庭中的一员,相比 CSS3 和 WebSocket 等大家早已熟知的新技术,WebGL 可以说是其中最神秘的一员。长久以来很多人——包括这个圈子里的技术人,对 WebGL 都不是很了解,甚至有很多的误解,但实际上去年一年到现在 WebGL 正在以爆炸般的速度发展着,很多情况都发生了变化。WebGL 就像一只丑小鸭,正在慢慢从土肥圆成长为白富美的公主。实际上,相对于国外,国内这方面的探索还是比较少,因为万恶的喝了三鹿奶粉长大的ie系列占据浏览器半壁江山,决定不可能在短期内大范围运用该技术,即使你做了一个很炫很酷的3D网站,做到逛网站好像第一人称逛商店那样具有3d真是的立体感,上线后pm肯定跟你拼了,因为过半的国内用户无法访问。弹出类似以下的对话框
这样,再好再炫的技术也是没用,因为用户关心的不是背后的技术,而是直接的用户体验。就好像实现同样的页面效果,有人用纯CSS3实现(包括所有图片),也有人直接切图。这显得用CSS3的人很geek,但是上线后根本看不到原有效果,圆形变方形,方形还是畸形,畸形的什么都看不到。说这些无非是想说明webgl其实并不是一个新鲜的概念,而是一门技术而已。没有webgl的,unity3D,flash的stage3D一样可以做到,甚至有过之而无不及,兼容所有浏览器,直接可以商用,给用户就一个字,酷。
那不就是说webgl没用,拼不过flash吗?那还花那么多时间精力去写博客,做demo干嘛。实际上,WebGL是一种3D绘图标准,这种绘图技术标准允许把JavaScript和OpenGL ES 2.0结合在一起,通过增加OpenGL ES 2.0的一个JavaScript绑定,WebGL可以为HTML5 Canvas提供硬件3D加速渲染,这样Web开发人员就可以借助系统显卡来在浏览器里更流畅地展示3D场景和模型了,还能创建复杂的导航和数据视觉化。显然,WebGL技术标准免去了开发网页专用渲染插件的麻烦,可被用于创建具有复杂3D结构的网站页面,甚至可以用来设计3D网页游戏等等。这样用户就可以不用安装各种各样的插件就可以访问3D型网页了。
PS,上面那段话是摘自百度百科的webgl词条,不相信可以去查一下,一模一样的。不过话说回来,个人鄙见,webgl在pc端是赢不了flash的,起码在未来十年。因为现在98.919%的浏览器都支持flash,用户情愿去装一个flash player,也不愿意改用浏览器(尤其是我们很有爱的ie6 ^_^)。所以pc端的话webgl有点尴尬。不过在移动端方面还是值得期待的,尽管刚刚发布的ios6没有说支持webgl,但是随着HTML5的web app在移动端的普及和硬件的升级,相信webgl还是可以打下移动端的半壁江山的。现在玩webgl相当于玩玩具,实属是各位技术发烧友和Geek打发周末无聊时间的必备良药。
吐槽了大半天,无非是介绍一下背景而已,下面正式开始我们的webgl之旅。
二.Three.js简介
国外有一位叫mrdoob的哥们,写了一个three.js的框架,对底层的webgl进行封装,极大方便了我们写webgl程序。关于这个框架,详情()。
更多精彩的Demo,详见() ,更多的基于three.js的第三方游戏框架可参见chandlerprall大牛写的一个插件,详情可见
说了这么多,还是有不少人不清楚three.js有什么便利,举个例子,要在场景中画一个立方体,以下代码足够了
如果是用原生的GLSL语言(可以理解为一种对底层图形硬件编程的语言),需要手工定义定点着色器,片元着色器,然后定义所有顶点数组,需要比较恐怖的代码量。
最核心的代码也需要以下这些。
以上的代码,其实我也看不明白,大意就是定义一个顶点数组,然后通过顶点着色器把顶点信息传给底层GLSL处理,光是大路货代码就要敲老半天,试问用这种方式还有心情去写具体的业务逻辑吗?
其实物体可以用其各个顶点坐标表示,顶点通过模型视图矩阵转换为视觉坐标,然后通过投影矩阵转换为裁剪坐标,接着通过透视除法规范化设备坐标,最后通过视口变换转变为窗口坐标。这就是一般的顶点变换过程。
所以一般要写webgl程序,都是用现成的封装好的框架,站在巨人的肩膀上。Three.js算是当前一个最流行最好的框架。
三.&游戏的具体实现原理
1. 游戏简介
说了这么多,还没有见到真正的游戏demo,很多童鞋估计要吐槽了。不用急,其实demo是次要,本文最重要的是通过demo去介绍如何使用一些基本的webgl的api和一些思想算法。
Demo的地址页&&源码也在里面,不另外附带。
游戏截图如下
相信不少80后都会记得那个红白机的炸弹人,没错,其实这个demo就是那个游戏的3D版。
2. 摆放相机
为了简化,游戏主要是用第一人称视觉,而不是生化危机那种介于第一和第三人称之间的视觉角度。下面是用Three.js设置相机的代码
其实相机就是相当于人的眼睛,人的眼睛看到的世界相当于一个视景体,如下图。
在计算机中,人能看到的东西其实就只有上图的近平面和远平面之间的东西。
PerspectiveCamera的第一个参数就是上图的视觉,第二第三个参数就是上图的W和H,第四第五个参数分别是近平面距离和远平面距离。至于camera.position.x,y,z这个就是相机在3D世界中的摆放位置。游戏中要移动人物是,只需要改变这三个值就可以了。
3.设置观看点
光是有当前的相机点还是不能确定要观看的东西的,还要设置观看点,例如你在(0,0,0)看(1,1,1)和(-1,-1,-1)是截然不同的两个世界。可以通过下面的代码实现观看点的设置。
大家如果在大一时有过被高数折磨的历史的话,那么恭喜你,下面的内容你应该很快能接受。
有人可能会问,为什么上面的公式中每一个后面都“+camera.position”?很明显,这个是因为相对于原点的平移。把当前点作为平移后球面的球心。
4. 如何运动
先看下面的公式
怎样,是不是很熟悉,再次勾起各位的青葱岁月的回忆?其实大学里学的理论知识是有用的。只不过很多人不知道怎样用而已(当然包括我自己,还不能充分运用各种理论知识)。FE们如果不想一辈子做页面,不想成为二八原则中的那80%,不想整天写点高中生就能懂的业务逻辑的话,就马上拾起高数,线代,概率课本复习吧。啊,说错了,上面这个是高中知识点。
如上图,以二维为例,三维一样的道理。假设有当前点是P1(x1,y1),观看点是P2(x2,y2),那么,λ表示的是起点P1到P与P到末点P2的比值。这样通过确定λ,我们就可以得到单位时间移动后的到达的点。程序的核心代码是如下
因为本demo是只在x,z平面,所以不涉及y的运算。当然y的运算一样的道理。
5. 如何确定当前相机所在的区块
见上图,相信有过acm经历的童鞋肯定会对线段树的大路货代码情有独钟。没错线段树的确可以把O(n)效率化成O(logn)效率。由于本demo的特殊性,把整个地图划分为一个一个的正方形区域,有些区域放置木箱,有些区域是道路。所以可以通过二维线段树快速寻找出移动后相机点是否处于木箱区域,从而能够检测碰撞。具体做法如上图把一个正方形划分为四个区域块,如果当前点落在左上方,就递归到左上方继续寻找,需要注意的是“线段”边界的确定,如果中点处不是单位长度的两个端点,那么需要取到线段的两端,然后再继续划分。最后截止划分的结束条件是,划分的区域是“单位长度”。核心代码如下。
关于材质纹理贴图
一个游戏,给玩家的第一感受是美术设计,而不是程序的geek程度。所以即使程序很牛,很复杂,美术UE不过关,也是一个失败品。从这个意义上来说,本demo绝对可以称得上是失败品中的战斗机。
其实运用three.js贴图就好像打字一样简单,如下代码就可以给地面贴图了。
同样,给木箱贴图
本人在3D方面的功力有限,因为没有系统地学习过3D计算机图形学,所以上面的贴图方式在商业中是绝对不能直接采用的,否则效果是巨卡,这里只不过是给大家一个认识而已。
7. 关于键盘按键
&&& 相信做过canvas游戏的童鞋都知道,按键的处理方式了吧。这里就顺便啰嗦一下。按键的处理方式有两种。一种是立即做出反应。比如发射激光枪!按键后,按某种固定速率自动重复,比如每秒发射两次。另一种是根据按键时间长短期发生作用。例如,按方向键向前走,直到松手之后,才会停下。本demo按照第二种方式处理按键。设置一个按键数组,按下某个按键后改变数组中相对应的布尔值为1,表示正在按下该键,这样就可以同时允许按下多个按键,当放开按键,就把对应的数组的布尔值改为0。这样只需要在requestAnimationFrame()中轮询检测键盘数组的各个布尔值做出相应的动作。
本文简单地介绍了运用Three.js基本的api做出自己的3D游戏。当然Three.js博大精深,很多其他的api都没有用到,例如光照等。只用到了最基本的几个。其实现在有很多很好的three.js物理引擎,例如ammo.js,相机的移动更是应该有现成的框架和方法,本demo都没有用上,而是自己写原生程序,所以疏忽之处在所难免。欢迎各位大神吐槽指教。另外,如果做得深入点的话还可以用nodejs + websocket+ socket.io搭建起在线对抗,类似于泡泡堂。还有添加AI功能等。
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:20105次
排名:千里之外
原创:21篇
(1)(1)(1)(1)(4)(13)教你网页游戏挂制作_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
教你网页游戏挂制作
上传于|0|0|文档简介
&&教你网页游戏挂制作
阅读已结束,如果下载本文需要使用5下载券
想免费下载本文?
定制HR最喜欢的简历
下载文档到电脑,查找使用更方便
还剩3页未读,继续阅读
定制HR最喜欢的简历
你可能喜欢暂无相关文章
2016有很多网页游戏,这些游戏有的依托网络小说,有的依托动漫,但是游戏并不止需要这些,每个人标准不同,所喜爱的游戏也就不一样。这里列出2016最火爆的网页游戏,下面随着排行
在你的记忆里,总有那么一款游戏是你最无法忘怀的;在游戏的世界里,总有那么一款游戏是别的游戏无法超越的;在经典中,总有那么一款游戏是值得我们回味的。真正的经典,不会
根据NPD所公布的上半年销售数据,游戏热销排名榜令人大跌眼镜。《乐高》系列今年未上榜,《侠盗猎车手5》和《我的世界》势头强劲。排行榜为您公布2015年上半年游戏热销榜。
网页游戏又称作web游戏,简称页游,是一种在线多人互动游戏,并不需要客户端,也不需要什么机器配置问题,开关方便,及其受上班族喜欢。而随着页游制作水平的不断提高,3D网页
排行榜123网小编之前更新有>日电视台收视率排行榜,日综艺节目收视率排行榜,今天带来了日综艺节目收视率排行榜,有兴趣的朋友可以持续关注哟~
排行榜123网小编之前更新有>日电视台收视率排行榜,日综艺节目收视率排行榜,今天带来了日电视剧收视率排行榜,有兴趣的朋友可以持续关注哟~
排行榜123网小编之前更新有>日电视台收视率排行榜,日电视台收视率排行榜。今天带来了日电视台收视率排行榜,有兴趣的朋友可以持续关注哟~
日本动漫里常常会出现女仆形象,这些少女身着西式女仆装,或高冷或软萌,总之就是可爱度爆表。排行榜123网小编带来了十大最性感的日本动漫女仆,快来看看里面有没有你老婆吧~
排行榜123网小编之前更新有>日电视台收视率排行榜,日综艺节目收视率排行榜,今天带来了日电视剧收视率排行榜,有兴趣的朋友可以持续关注哟~
排行榜123网小编之前更新有>日电视台收视率排行榜,日电视台收视率排行榜。今天带来了日电视剧收视率排行榜,有兴趣的朋友可以持续关注哟~
排行榜123网小编之前更新有>日电视台收视率排行榜,日综艺节目收视率排行榜,今天带来了日电视剧收视率排行榜,有兴趣的朋友可以持续关注哟~
排行榜123网小编之前更新有>日电视台收视率排行榜,日电视台收视率排行榜。今天带来了日电视剧收视率排行榜,有兴趣的朋友可以持续关注哟~
2017年中普通股型基金排行榜TOP10出炉,易方达消费行业排名榜单第一位,年内收益率高达34.32%,一季度末资产净值为23.57亿元。排名第二的是上投摩根核心成长,年内收益率为25.12%,一季度末资
2016年中国百大券商佣金率排行榜出炉,佣金率最低的是五矿证券,其2016年佣金率为1.866。排名第二低的是上海华信证券,其2016年佣金率为2.19;排名第三低的是华泰证券,其2016年佣金率为2.25。
德系车品牌销量排行榜,大众夺取榜单冠军。月大众销量为272321辆,其中5月销量为60339辆。排名第二的是奔驰,月奔驰销量为135814辆,其中5月销量为31392辆。第三名是奥
沪港通概念股是什么?沪港通是沪港通是指上海证券交易所和香港联合交易所允许两地投资者通过当地证券公司买卖规定范围内的对方交易所上市的股票,是沪港股票市场交易互联互通机制。那
沪港通是什么?沪港通是什么意思?大家应该听说过沪港通这种新的理财方式,不过除了比较资深的股民和职业炒股玩家外,大多数人都并不知道沪港通是什么,甚至可能都不知道它的存在。对沪
沪港通每日额度是多少?沪港通交易所会对交易数据进行实时监控,实现沪港通额度监控。一方面是为了计算可用余额,另一方面是为了监管数据报告,每日交易结束后,都将向市场公布沪股通
沪港通怎么买港股?相信这是不是股民开通沪港通之后迫切想知道的问题,港股和内地的A股买卖交易交易有所不同,不过我们使用买卖A股的交易软件就可以操作了。下面排行榜123 就来为大家介
沪港通怎么开户?沪港通是指上海证券交易所和香港联合交易所允许两地投资者通过当地证券公司买卖规定范围内的对方交易所上市的股票,是沪港股票市场交易互联互通机制。是股民们继A股后
2016A股不同行业员工薪酬排行榜出炉,对于毕业想找工作,和刚刚进入大学面临选择专业的同学们来说,这都是一份值得参考的榜单。银行为员工支出的总薪酬达到了6215.73亿元,人均薪酬为2
2017湖北大学排行榜最新出炉,武汉大学毫无悬念登顶榜单。武汉大学是一所综合型大学,在全国大学综合排名中位列第3,是中国顶尖大学,也是世界高水平大学。排名第二的是华中科技大学,
NBA第四节得分排行榜,德国战车诺维斯基和新晋第四节之王小托马斯并列第一位,他们都曾在第四节单节狂砍29分,并且帮助球队取得了胜利。NBA历史上有名的关键先生,科比在第四节的表现同
2017年郑州大学排名最新出炉,郑州大学登顶榜单。郑州大学是一所综合型大学,目前在全国大学中排名第47位,是中国高水平大学,也是世界知名大学。排名第二的是河南农业大学,在全国大
2017济南大学排名最新出炉,山东大学轻松登顶榜单。山东大学是一所综合型河大,在全国大学中排名第20位,是中国一流大学,也是世界知名大学,综合实力达5星级。排名第二的是山东师范大
2017哈尔滨大学排名出炉,哈尔冰工业大学夺得榜首。哈尔冰工业大学是一所理工类大学,在全国大学中排名第18位,是中国一流大学也是世界知名大学,综合实力5星级。排名第二的是哈尔冰工
2017长春大学排行榜出炉,吉林大学排名榜首,吉林大学是一所综合型大学,位列全国大学排名第9位,是中顶尖大学,也是世界高水平大学,综合实力6星级。排名第二的是东北师范大学,排名
2017南昌大学排行榜,南昌市最好大学排名出炉。2017年江西普通高校招生各批次分数线已经公布,江西省本科第一批次分数线:文史533分,理工503分。第二批次分数线:文史458分,理工422分。南
游戏排行榜推荐
网页排行榜精选
网页文章排行榜

我要回帖

更多关于 3d网页游戏有哪些 的文章

 

随机推荐