我来我网
https://5come5.cn
 
您尚未 登录  注册 | 菠菜 | 软件站 | 音乐站 | 邮箱1 | 邮箱2 | 风格选择 | 更多 » 
 

本页主题: 约翰卡马克和3D引擎 显示签名 | 打印 | 加为IE收藏 | 收藏主题 | 上一主题 | 下一主题

demonwar



年度之星奖
性别: 帅哥 状态: 该用户目前不在线
头衔: 头你妹的
等级: 管理员
家族: 存在与虚无
发贴: 52925
威望: 11
浮云: 1406
在线等级:
注册时间: 2006-08-02
最后登陆: 2018-06-18

5come5帮你背单词 [ suicide /'sjuisaid/ n. 自杀(事件),自杀者 ]


约翰卡马克和3D引擎

  卡马克一向被奉为神一般的人物。卡马克的ID公司,从doom开始就以业界最领先的3D引擎技术著称,在Quake3时代到达顶峰。此后多年都不见他的引擎新作,直到2000年才放出了doom3的消息,期待备至。但这次不同,doom3除惊人的光影效果、金属光泽和人物表面凸凹之外,也被人诟病为伸手不见五指的黑暗、过分金属化的质感、如刀切般清晰的影子、不会随距离而暗淡的手电光、缺乏任何室外场景。后来的quake4再次证明doom3引擎对室外场景的渲染非常一般。稍晚的hl2、farcry、riddick等游戏,均在画面上各有特色而被人称道。hl2有丰富的shader细节处理、照片般的超高分辨率贴图,再整合物理引擎、AI和超高互动性的脚本系统,轻松赢得了最佳游戏称号。farcry作为当年最大黑马,实现了渲染达十几公里的热带茂密植被山丘而帧率不显著下降,再加上对海水折返射的特别着墨,一时以最美的电脑游戏而被推崇备至。riddick可以说生不逢时,但仍然被人认可,并且赶在doom3上市之前抢下了第一个全面使用法线贴图、并实现软影子(模糊边缘)的游戏,其视觉效果直逼doom3,让无数人怀疑riddick是doom3引擎的作品,另外还有人把riddick跟2003年的doom3源码泄露有关。总之,从doom3时代起,有人开始怀疑卡马克,觉得他花五六年搞出的东西似乎也没有比同时代其他引擎强多少,甚至觉得doom3远次于其他几个竞争者。

    这个情况在虚幻3引擎面前达到了最低点。2004年开始宣传的虚幻3引擎演示,让人觉得即时渲染CG水准的画面已经毫无困难。商业方面虚幻3更是大获成功,一时不知多少游戏宣布使用虚幻3引擎开发。不过真正彻底发挥虚幻3引擎威力的游戏是2006年的战争机器,一发售就被认定是历史上画面最精彩的游戏。之后,宣传许久的Crysis引擎不断勾引着人们的注意力,我想我也没必要多说了。此间ID放出的唯一消息就是一个quake war和所谓mega texture技术。但看了quake war内测视频以后,我不得不说其实它的画面并没有超越quake4太多,似乎已经落后于下一代3D引擎的步伐。

    近日ID又放出了一段新引擎动画,并宣称整个场景是用一个若干G的unique texture(单一贴图)实现的。这引擎效果看起来颇有下一代引擎的感觉,听技术似乎就是mega texture。无论如何,近年来卡马克的崇拜者一定是渐渐失望、转投阵营。那么,quake3以后的卡马克,到底是不是仍然是业界的先驱、甚至是神呢?

    我想说的是,没错,卡马克还是先驱,只是比起quake时代可能不能称神了。为什么这么说,就是要看卡马克的贡献,和其他引擎相比有什么不同了。卡马克的贡献,常常在于最底层、最核心技术方面的创新。就是这种世界唯一的创新,而且不是修修补补,而是本质性的、可以让别人在他基础上修补发展的创新,决定了他业界先驱的地位。下面介绍一下他在历代游戏中的技术创新,请特别留意,除专gate指出之外,所写到的所有技术均是业界首创,而且整个业界紧随其后,许多技术至今仍在使用。

    早期的卡马克就是个极富创造力的程序员。他的第一个作品,谁也没听说过的commander keen,就是一个类似超级马力的卷屏动作游戏,但这其实是电脑上的第一个卷屏游戏。由于设计目的不同,FC上很简单的卷屏效果在1990年的电脑和只能显示4色的CGA显卡上是很难实现的。(可见在游戏方面,游戏机总是走在电脑前面。)卡马克发掘硬件的能力,为当时最先进的能显示16色的EGA显卡(汗)发明了“适应性更新”算法,实现了FC式卷屏效果。从名字可以想象这个算法本质就是不更新那些并不变化的地方,类似于mpeg压缩算法,但肯定不这么简单。

    在下一个鼻祖性作品wolfenstein 3D中,卡马克创造了第一人称视角3D效果的概念。这个作品是伪3D的,是对平面图形进行[屏蔽]、缩放修正,比如把一面墙斜过来变成梯形,然后缩小表示距离较远,然后在每像素级别上根据深度(z轴)进行遮挡判定,其算法就是至今仍未实现的光线追踪的一种特例。GBA和SFC都硬件支持[屏蔽]缩放处理,但在它们的游戏中很少见到W3d中那样的3D场景,比如马里奥赛车一般只有地面没有复杂的墙壁互相遮挡。此算法的实现难度可见一斑。(注:这样的引擎有时候也称为2.5D,但2.5D是没有明确定义的,不同人用以表达不同的意思,无须争论。)

    1993年的Doom是他真正的登顶之作。doom引擎仍然是伪3D引擎;原因是doom世界的高度是确定的,判定是2D的(因此不能有楼上楼下之分),也不能向上或向下看。地必须是平的,墙必须是直的。但比起上一引擎来,它更真了一些,不再只是简单的[屏蔽]修正,在内存里的最基本单元已经是2D顶点,而贴图的概念也是doom引擎发明的:引擎中几何形状和表面图案是分离的。doom引擎最具创新的是所谓“空间二元树”算法,用来提高渲染效率。3D渲染中提高效率最有效的方法就是:不渲染看不见的东西。这不是一件容易的事,记得玩三角洲的时候快到gate口就会突然变卡,就是因为虽然还没看到外面但其实已经渲染了。而空间二元树把整个场景用平面分割为两块,每块又分割为两块,如此直到每块都是一个凸型(凸型简单地说就是在其内部不可能有遮挡的形状)。学过数据结构的应该知道这定义了一个二元树,每个叶节点是凸集,而根节点就是整个场景。然后根据现在所在节点(区域),使用递归算法,每渲染一个节点都去渲染它的子节点(子区域),停止条件是整个屏幕的像素都已经被覆盖住了,或者达到了叶节点。如果二元树设计的好,这样可以做到渲染很大的场景,只要同时能看见的东西足够简单,场景再大渲染速度也不下降很多。他还写了计算每个场景的最优化二元树的算法,对每个场景进行预优化然后储存下来。每个场景的优化时间都长达数小时,但成果是1993年的电脑就能流畅运行的伪3D引擎。

    下一个quake(1996)更是卡马克的里程碑。quake是历史上第一个纯3D游戏。其含义是:整个世界里(除了粒子外)所有实体,包括地面,天空,房屋,人物,物体,在内存中都是以三维方式存储和计算的,最终输出为投影到一个平面(游戏者视角)的[屏蔽]画面,就是我们看到的画面。顶点、多边形用来表达几何形状,贴图表达表面图案,这种模式已经是当今通行。卡马克在quake引擎中发明了光照贴图,来模拟光效果。所谓光照贴图,就是预先渲染好一块“亮斑”,在需要的时候和地点半透明叠加在那里的贴图之上;还有其他一些实现方式。在2004年以前,这都是光效果的基本技术。quake是最早支持硬件加速的游戏之一,极大地促进了3dfx的成功,更特别是让opengl成为流行的3D API。同时quake引擎第一个融入对网络对战的全面支持,可以说创建了“网络游戏”(我的意思不是泡菜)这一新战场。除了技术创新以外,quake几乎定义了fps:鼠标视角,asdw平移走动,还加入了空格跳的动作,现在的fps几乎无一例外沿袭这一设定。

    此后的quake2和3在技术上继续前进。quake2公开了游戏引擎工具,催生了mod文化。quake3是当是少有的要求必须支持3D加速显卡的游戏,这对3D加速卡行业起了极大的推动作用。quake3的渲染引擎基于直到dx8才全面流行的shader技术,大致是说用一种简单的脚本命令完成对每个像素颜色的计算,比如原始动态贴图(覆盖)小标记贴图(混合)光照贴图(混合)反光贴图;更进一步每个shader甚至可以定义这个对象的物理属性,比如这是水可以进入,或者这是木头,走上去会有特定声音之类。quake3引擎还创造了弧线对象(当然最底层还是多边形实现的)。quake3是第一个实现人物的各个不同部分分离控制、互相制约的游戏。比如,游戏中的人物可以抬起头向右看,同时扭着腰向左跑。

    在此之后,微软的dx api开始流行,3D渲染成了家常便饭。到了dx8时代,shader受到重视,通过可编程shader可以实现比原来丰富得多的各种细节效果,比如漫反射、折射、模糊之类。在这方面最早登峰造极的就是hl2,几乎处处都用了表面处理:逼真的水面反光,从侧面看去钢墙表面凸凹锈迹斑斑的金属纹路,透过不平整的玻璃窗看到的扭曲的场景。这个时候,万众瞩目的doom3问世了。doom3给人的第一感觉就是,这光影效果太震撼了:黑暗的地方是绝对的黑暗,光照到的地方亮的刺眼,金属表面还有高亮的反光,人物、怪物表面深深的皱纹在强光侧照之下有极强的对比,人物的影子能投在一切物体之上,甚至自己身上。。。这便是游戏世界最早的真实的光影。

    doom3(2004)有两大技术创新。第一个就是统一光影系统。这其实是[屏蔽]了quake中卡马克自己创立的光照贴图,和后来的推广——影贴图。在老式技术里,是没有真正的“光线”的概念的;所有的亮斑都是预先渲染的,影子也一样,而且人物的光照和影子与场景中静止物体的光照和影子在引擎中是两种完全不同的东西。doom3引擎中,光线的概念第一次真正出现,成为引擎计算中的一个实体,而且对于一切世界中的多边形都是一致的(故名)。所有的光亮或者阴影效果,都是对光线的能量和阻挡进行计算的结果。由于计算量极大,引擎虽已尽力优化,但也不得不减少光源、缩小场景大小和复杂度。虽然因此被批评,但真实计算光线是技术最终通往光线追踪和全局光照的必经之路,而这一部是卡马克走出的。另一大技术创新是场景交互用户界面。当人物走进一个密码输入台的时候,准星变成一个鼠标,可以自己输入密码。觉得这不算什么高级技术吗?想想看,还有哪个游戏(除了quake4)可以这样?所有游戏只能到某处以后按F或者E激活,不能真正与场景达到用户界面级的互动。实际上doom3中场景交互这一小块的代码就超过五十万行。除此之外,doom3也是最早大量采用法线贴图的游戏。法线贴图计算一个高密度3D模型与低密度3D模型之见的差异,存储为低密度3D模型每一点处高密度3D模型法线(垂直方向)的方向信息。然后,在游戏中使用低密度模型,但用某种高效算法,根据存下的法线信息修正光照在一个简单的平面上的效果,而产生丰富的光影效果。比如虽然低密度模型的人脸某处是平面,但看起来有明显的层叠阴影而感到皮肤是有皱纹的;但从侧面看去还是平的。这样可以用很少的多边形做出看起来很细腻的模型。现在的游戏中法线贴图已经是最基本的元素了。

    说到doom3就不得不说riddick,原本第一个采取法线贴图游戏的王冠硬生生被riddick抢走,更奇怪的是riddick也使用opengl接口(当时已经很少了),而且看起来跟doom3简直不分你我。有许多人误以为riddick也使用doom3引擎,但其实不是;还有人怀疑riddick窃取了doom3的技术。riddick和doom3有一个重大的不同,就是riddick其实是支持第三人称的(或者说会渲染自己),而且文件夹结构也与ID的传统结构完全不同。从这点来看两个引擎不可能是一样的。不过,鉴于2003年的doom3源码泄露事件,我也还对某些可能性持一定的保留态度。riddick游戏中也包含早期版本的截图,与最终版本的质量差异很大,完全没有后来那样出色的光影和法线贴图效果。

    quake4之后卡马克放出的唯一技术名词就是mega texture。此次的demo中所谓的unique texture,应该就是指此技术,但有一些改进。这也是对他自己的贴图技术的彻底[屏蔽]。最早的贴图技术,由于内存原因,贴图是重复使用的。比如一片土地,其实是一小块方土地不断重复,技术不好的话甚至还看的到接缝。当离得足够远的时候,就能看出地面上有规律的图形。mega texture技术实现了任意精度、无穷大的贴图;艺术创作人员可以无限制地随意制作地形的贴图,不会重复、不会有接缝,可以随时改变它而不影响其他游戏创作进程。此技术的关键在于把很大的贴图转变成信息流,以流方式传输给引擎,因此不用全部载入而用光内存。类似的技术曾经用在GTA:SA里,用PS2的32兆内存实现了不需要读盘的好几平方公里的世界。这技术能具体产生的影响还不得而知,现在看来用了mega texture技术的quake war似乎也没什么特别。但有一件事是清楚的,世界上只有卡马克实现了这一技术。

    从3D游戏发源开始,卡马克就以[屏蔽]性的技术创新不断推动它的发展。今天我们看卡马克的技术甚至会觉得没什么独特之处,这是因为他的技术一旦发明就成为整个行业的范例被不断使用、改进至今。随着3D技术的成熟,一个人对整个业界的推动自然会越来越小。卡马克本人也说过:计算机是这样一个行业,一个天才创造出的编程技巧,一两年后每个技校的学生都会使用。卡马克早年创立的技巧和标准,例如顶点、贴图、光照贴图、真实光影渲染,已经被融合到每个当今的流行引擎中。近年来可编程GPU的发展,使得3D引擎沿着越来越复杂、越来越自由的shader语言方向前进,UE3、crysis等各种引擎开始整合所有已经存在的技术,做到了集大成,高效率,把引擎制作职业化。就在这个看似3D引擎已经趋于完美的情况下,卡马克的最新技术mega texture是对3D渲染最基本的方面的本质改进。这种贡献与整合技术、小小改进和优化相比,根本不是一个层次的进步。卡马克仍然是行业的先驱,尽管后面有越来越多的人跟上,他的前进速度似乎越来越慢,但这与他的先驱地位并不相左。最后举一个最通俗的例子,如果说整个3D引擎行业是bt下载一个文件,卡马克就相当于做种者。尽管跟上的人越多,显现出的下载速度就越快,但他每一点一滴微小的上传才是整个下载最关键的驱动力。让我们对卡马克致敬,期待他最新的作品!


顺便推荐给大家《DOOM启示录》
顶端 Posted: 2007-06-15 18:55 | [楼 主]
reallycsc



性别: 保密 状态: 该用户目前不在线
头衔: Evil&Angle
等级: 人见人爱
发贴: 2105
威望: 0
浮云: 1136
在线等级:
注册时间: 2004-11-08
最后登陆: 2008-03-04

5come5帮你背单词 [ way /wei/ n. 道,路,径,方法,手段,方式,方向,距离,点,方面 ]


看过了 而且是绿色版
一口气看完我眼睛都绿了
顶端 Posted: 2007-06-17 11:02 | [1 楼]
wisdom



性别: 帅哥 状态: 该用户目前不在线
头衔: Nirvanaing...
等级: 荣誉会员
发贴: 4001
威望: 4
浮云: 429
在线等级:
注册时间: 2005-04-09
最后登陆: 2012-04-20

5come5帮你背单词 [ arithmetic /ə'riθmətik/ n. 算术 ]


看过DOOM后,约翰卡马克从来都是我心目中的神!
顶端 Posted: 2007-06-17 22:14 | [2 楼]
yubaibai



性别: 帅哥 状态: 该用户目前不在线
等级: 鹤立鸡群
家族: 水族馆
发贴: 1445
威望: 1
浮云: 1175
在线等级:
注册时间: 2006-04-27
最后登陆: 2014-07-04

5come5帮你背单词 [ flexibility /fl/ksə'biləti/ n. 柔韧性,弹性,(光的)折射性,灵活性 ]


卡马克作人脸和户外大场景有些差
追能体现doom3引擎的游戏还要数prey
顶端 Posted: 2007-06-17 22:25 | [3 楼]
我来我网·5come5 Forum » PC GAME综合讨论区

Total 0.011300(s) query 5, Time now is:05-04 05:52, Gzip enabled
Powered by PHPWind v5.3, Localized by 5come5 Tech Team, 黔ICP备16009856号