20年后的游戏将会变成什么样?也许没人能够想到,正如1996年时对《古墓丽影》中主角劳拉在今天看来已然是无比粗糙的建模——当时的多边形数量只有540——视而不见并沉浸在3D图形带来的巨大乐趣中的玩家们可能不会想到,在20年后的劳拉在游戏中的画面表现会变得这样逼真而有活力:

作为“古墓丽影”系列最新一代的《古墓丽影:崛起》正式版已于11月10日登陆XboxOne,并将在明年登陆PC/PS3/PS4平台。对于这样一款拥有近20年的历史、单一主角的AAA大作而言,近年来每一代的《古墓丽影》都有让人惊异的画面和模型进步,因此近两代的《古墓丽影》发售时都会伴随着历代劳拉的对比,在网络上也广为流传,比如gamechup网站在2013年的这张历代模型对比:

2014年,一个名为halloweencostumes的网站发布了一张关于劳拉历代模型更详细对比的信息图,标题部分的这张图片也被广泛传播:

几个月前,一名tumblr用户发布的历代劳拉对比的动图在网络上广为传播。相比模型的对比,动态的图片效果更佳直观:

诚如微博用户@硬件学堂 所言: “顶点、像素、纹理、几何、光栅、曲面细分、物理加速,这不仅是游戏,还是3D图形技术和显卡发展的真实写照”——在普通人看到的游戏画面的显著进步背后,是3D图形技术和显卡等硬件技术的进步,而这两者是相辅相成的。

如果用我们今天的眼光来看1996年的《古墓丽影》,无论是人物建模还是场景都显得十分粗糙,动作也无比僵硬,更不用谈互动环境和光影效果了,在《古墓丽影9》中名声鹊起的劳拉的秀发在此时看起来还只是一片色块,劳拉的三角形胸部也颇为惊人。

《古墓丽影》初代画面

动起来的话是这样的:

但是在当时的技术水平下,这种3D图形技术已经可以算得上出类拔萃了,也就是这种3D的动作体验使其在《波斯王子》所开创的动作冒险潮流中很快占据一席之地。与同时期的游戏对比的话,同一年发布的由传奇程序员卡马克所打造的《雷神之锤》的游戏内画面是下图这样的,受当时计算机硬件与图形技术的发展已经算是最顶尖的水准了。

《雷神之锤》初代游戏画面

而近20年后的今天,在《古墓丽影:崛起》的开发过程中,技术进步已经让劳拉和古墓丽影的世界变得更加生动而鲜活,游戏开发背后的技术展示也体现了当前3D图形技术的顶尖水准(以下内容与图片出自Crystal Dynamics的《古墓丽影:崛起》开发日志,略做编译)。

在创造劳拉的模型时,角色设计师会从真人模特身上寻求参考,通过对模特进行多角度的细节拍摄,然后使用Photogrammetr(摄影测量法)进行3D建模。每个模特也要进行一系列的面部表情拍摄以及捕捉身体的整体形态,这些将被应用到Facial Action Coding System(面部动作编码系统)中。

《古墓丽影:崛起》所使用的模特,首先要为模特拍摄多角度的照片作为模型参照

照片与实际肌肉的扫描在模型肌肉建模时是重要的参考

建模时的肌肉变形控制

基于真人塑造的劳拉游戏内模型

在以前,实现面部动画要依赖于网格状的骨骼系统推动,想要做出复杂的面部动作则需要更多的骨骼,因此面部的骨架往往变得庞大而笨重。而在《古墓丽影:崛起》中,开发团队借助主机游戏开发领域最新的Blendshapes(融合变形)技术,将人的面部表情被分解成可以自由组合的多个shapes,由此达到非常逼真的表现效果。如劳拉就使用了超过100个不同的shapes来捕捉她的脸部动作,通过这个系统能够表现出脸颊和额头上微小的细节动作,比如劳拉在环顾四周时让她的眼睑随着视线而移动。

使用Blendshapes技术的劳拉面部建模

动态图片所展示的一些面部细节

另一种加强blendshapes技术的真实感的方式是利用皱纹贴图(wrinklemaps),即在面部的某些区域增加一些贴图以展现皮肤表面的变化,皱纹贴图也可用于展示血液的流动(相应部位发红)。

劳拉额头的皱纹贴图,可以展示皮肤表面的一些细节

Pose-Based Deformers(PBDs,动作调节)技术能够调节身体动作,用语实现身体上特殊的骨骼动作,可以用来修正建模时的过度拉伸,也剋用来显示肌肉收缩,它的另一个用途是当角色进行肌肉弯曲时在衣服上呈现褶皱效果。

使用PBD技术矫正建模时的过度拉伸

开启(左)与关闭(右)PBD技术所产生的褶皱效果也有所不同

在2013年的《古墓丽影9》中,AMD的Tressfx Hair毛发渲染技术小试牛刀,成为开发者关注的焦点,开发者也在GDC等场合大为宣传,因此这一技术在新一代作品中也得到了改进。在很多游戏中,头发模型都是由多变形来配置模拟,而劳拉的头发则由超过30000根线条组成,由一系列的主链(master strands)所控制,随着主人的运动主链会驱动头发做出相应的物理反应,如人物跑动时马尾随之摆动,在水中时头发在水面漂起,湿水后更加沉重等等,从而达到真实的效果。

劳拉基于线条而组成的头发

Tressfx Hair技术渲染下的劳拉头发效果

动态下的头发效果

在为劳拉之外的人物和动物创建毛发的时候,人物美术设计师则使用了 Alpha Card来创建和配置:将头发材质分解为颜色贴图和Alpha贴图,颜色贴图来自绘制或照片中的材质,而Alpha贴图控制透明度,两者在着色器和引擎渲染下创建逼真的动物毛发、人物头发、胡须等。

使用Alpha Card创建与配置游戏中人物与动物的毛发

不仅是人物,动物的毛发同样如此

为创建真实可信的物体表面纹理效果,开发团队使用基于物理的渲染技术PBR(Physically Based Rendering)进行纹理创建,这一技术让美术设计师得以精确模仿真实材质和光照,让物体表面能够根据各自材质的吸收和散射特性精确地将光线反射和折射,从而看起来更加真实和自然。在对纹理贴图进行处理的过程中,使用了新的服装着色技术Fresnel以便让衣物能够呈现出在光线下的特殊的模糊效果。

服装着色技术Fresnel在游戏中的应用

经过渲染后的物品纹理,可以看出武器的金属部分与木质部分、皮靴的皮质部分等不同材质的真实度与区别。

除了物体表面纹理效果外,皮肤材质的质量也至关重要。过去的3D皮肤材质往往是生硬且不透明的,而真实的皮肤是柔软的,稍微有些半透明。当光束照到皮肤表面,一部分会被散射与吸收,另外一部分则被反射出去,《古墓丽影:崛起》就在努力实现这种真实的效果,包括使用SSS (sub-surface scattering,次表面散射)材质来制作皮肤,模拟真实的皮肤次表面散射效果。

劳拉的皮肤上实现的SSS效果,左为关闭,右为开启

皮肤能够显示当人物背后有强光源时的散射效果,当光线穿过后耳朵呈现红色

人物身上的材质特效(material effects)则能体现出人物与环境之间的互动,二手QQ出售平台也是创建游戏真实性的一个重要细节。游戏中的人物会有4种基本效果:泥泞、染血、落雪和湿水,每种效果都可以在0%-100%之间调整,不同效果还可以层叠,如50%的泥泞和50%染血效果。这些效果会被特殊的动作触发,比如游泳或战斗。当劳拉入水后这些特效都能被清洗掉,而湿水的效果也会在风干的情况下渐渐自动消失。

带有泥土与染血效果的劳拉

衣物的粘泥与落雪效果展示

动态图片展示的落雪效果

除了人物与物体的真实性之外,创建一个基于现实的丰富而可信的环境也是游戏的重要目标,玩家可以从个人的角度感觉到环境连接著劳拉与她的旅程。对于有限的游戏环境和不断变化的游戏内世界来说这是一项非常困难的挑战。基于物理渲染(Physically Based Rendering,前文亦有提及)和后期特效(Post Effects)非常有助于解决这项视觉挑战。

劳拉的冒险旅程就在于与环境之间的互动,因此创建真实可信的环境十分重要

在PBR和后期特效的工作流中,开发团队利用基于图像的照明效果(Image Based Lighting)、基于物理的材质模拟(Physically Based Materials)、后期效果(Post FX)、调色(Colour Grading)、自适应色调映射(Adaptive Tone Mapping)、屏幕空间环境光遮蔽(Screen Space Ambient Occlusion)、动态模糊(Motion Blur)、景深(Depth of Field)、环境空间反射(Screen space reflections)、屏幕眩光(Screen Glare)、体积照明(Volumetric Lighting)等技术或渲染手段,将游戏中的环境变得十分生动自然。

Colour Grading可以用于渲染后的图像的亮度、饱和度、对比度和颜色映射的调整

体积照明用于模拟真实光照

游戏中创建的丰富多采的动态环境

除了以上这些之外,在《古墓丽影:崛起》中也还有大量的新技术使用,用于创建更大更真实的世界,或实现更具震撼力的视觉效果,有兴趣的可以深入研究——在这些新技术的作用下,游戏呈现的世界变得愈发接近真实世界,也就是我们从肉眼所见到的游戏画面的进化。

在游戏画面进化的背后,是多年来图形技术的进步与积累,而这又推动了硬件技术的进步,另一方面,硬件技术的进步又让图形技术得以有更好的表现。那么在这两个技术——包括近年来火热的VR技术的进步下,20年后或者10年后的游戏会是怎样的进化,你敢想象吗?也许到那时候,类似微软HoloLens这样的技术,已经可以普及了。

就技术变革这一点而言,我们生活在一个何其伟大的时代。

劳拉的进化:在游戏中创建真实人物与环境的技术相关推荐

  1. 在Blender中创建真实的汽车CGI视觉动画效果

    Blender VFX Tutorial Rig & Animate a Realistic Car in Real 大小:1.18G 时长1h 包含项目文件 1280X720 MP4 语言: ...

  2. zedgraph支持游标吗_经典格斗游戏中的隐藏人物,当年在游戏厅你能选出来吗

    当年在游戏厅中我们玩到的大部分格斗游戏中都是可以选择隐藏人物的,只要玩家懂得秘籍的使用就能选择自己想选的人物. 有意思的是,这些隐藏人物针对的仅仅是街机玩家,而在家用机的平台上面都是可以直接选用的,甚 ...

  3. 计算机视觉识别游戏人物,电脑游戏中基于计算机视觉的手热识别技术研究

    摘要: 最近几年来,随着计算机技术的发展和成熟,越来越多的研究者将注意力转移到人机交互手段的改进上,研究符合人际交流习惯的人机交互方式.由于人的手势作为交流工具在人们的日常生活中被广泛的应用,手势识别 ...

  4. [游戏技术]求生之路stripper:source游戏中创建模型

    目录 Stirpper:Source Stirpper:Source Stirpper网址 http://www.bailopan.net/stripper/ 版本大全   安装方法 picker   ...

  5. Python程序中创建子进程时对环境变量的要求

    清华大学出版社-第10届高等学校计算机程序设计课程论坛 中国大学MOOC"Python程序设计基础"免费学习地址 推荐图书: <Python程序设计(第3版)>,(IS ...

  6. 新游戏中出现的基于BSP场景分割技术

    前不久看了看WOW的WMO地图文件格式,发现这是一个规整的Interlocking Tiles+Portal+BSP分割体系,与FarCry的引擎体系几乎完全相同.它很通用,而且很有用. 我一说WOW ...

  7. Web3 游戏中的创造者经济:从游戏到平台,用户生成内容的挑战

    撰写:Joel John.Siddharth 编译:深潮 TechFlow 图片来源:由Maze AI工具生成 今天我们要探讨的是游戏.出于几个原因,游戏是为数不多的真正有机会在数字资产生态系统中扩展 ...

  8. Web3 游戏中的创造者经济:从游戏到平台 用户生成内容的挑战

    今天我们要探讨的是游戏.出于几个原因,游戏是为数不多的真正有机会在数字资产生态系统中扩展至十亿用户面向消费者的用例之一. 首先,游戏玩家已经习惯了数字资产:他们经常为游戏中的交易(即道具)付费. 其次 ...

  9. Ureal:用ue4做出游戏中的爆炸特效真实感和力量感

    //博主是一个热爱游戏的玩家,并不是专业游戏开发者,内容如有不足,还请各位多多包涵 大家好!今天主要想聊一下:如何体现出游戏中的爆炸特效真实感和力量感 包括Ue4中爆炸的蓝图代码实现的思路(如过需要代 ...

最新文章

  1. 澄清大数据存储——系统集成商篇
  2. Linux根文件系统的文件镜像,构建小型Linux根文件系统镜像
  3. 史上最详细 纯CSS打造3D文本滚动
  4. python元组为什么不可变_为什么python字符串和元组是不可变的?
  5. phpcmsV9框架:安装教程
  6. 字节跳动冬令营报名启动,邀你一起备战ICPC世界总决赛!
  7. 洛谷 P2420 让我们异或吧 解题报告
  8. matlab汽车驱动力与行驶阻力,最新汽车理论1.3和2.7matlab编程答案
  9. Ruby类的创建与使用
  10. Oracle 数据库连接工具
  11. python 柱状图和折线图放在一起_一款多条折线与柱状图共存图表
  12. 【基于物理的渲染(PBR)白皮书】(三) 迪士尼原则的BRDF与BSDF相关总结
  13. Audio Hijack for Mac(音频录制软件)
  14. MacOS查看DNS服务器地址
  15. [译] 为什么你要学习 Go?
  16. 为什么myeclipse9.0解析类时会多一个类名呢!解决方案
  17. 一位500强高管的忠告:怕你胸有鸿鹄之志,手无缚鸡之力
  18. 给同事代码中下毒:1+1竟等于4
  19. POJ2965 The Pilots Brothers‘ refrigerator
  20. c++11:std::chrono::time_point、time_t、std::localtime、std::gmtime、std::chrono::steady_clock

热门文章

  1. java web 火车票预定系统 完整源码 下载直接运行
  2. 在ubuntu中安装微软雅黑字体
  3. 使用数据结构中的队列解决舞伴搭配问题
  4. 网络安全之URL介绍
  5. 牛客白月赛26【题解】
  6. tcp四次挥手为何最后要等待2MSL时间?
  7. 优盘不认,无法识别的情况下,如何修复问题
  8. 设计UI - Adobe xd对象介绍
  9. linux保存分区信息,分区信息存放在哪里?
  10. python发送邮件是否成功_python发送邮件(smtplib)