http://www.opengpu.org/forum.php?mod=viewthread&tid=7558&extra=page%3D1

西川善司为3D游戏粉丝的[生化危机5]图形讲座(后篇)
MT Framework 1.x的成熟图形魅力的新表现是什么?

http://game.watch.impress.co.jp/docs/series/3dcg/20090601_170531.html

翻译 Trace
校对 千里马肝

2009年4月收录


会场:卡普空总公司

在[生化危机5]图形讲座的后篇中,要接触到的是最近在本连载中刊登次数增加的全局照明技术(Global Illumination )技术。还有,让大家看看现在的3D图形里的经典表现,在「BH5」中的[阴影生成]、[水面表现]等独特的实现方法,还有大家在意的PS3和XBox360版的区别等。

[生化危机5]中的Global Illumination技术

在本世代的3D游戏图形中,开始倾向于重视环境光的处理。不仅有从设置在场景里的光源而得到的直接照明,还要考虑光源在复杂的反射后,布满空间的间接光照来实现照明的动感效果,使整体变得活跃。

这种复杂的照明效果被称作全局照明(Global Illumination),通常被简称为GI。[GI方面的考虑],说起来比较简单,但现在的实时3D图形的标准渲染管线中,只有直接光的照明(Lighting)手段。为了转换由GI来执行,必须要有特殊的方法来实现。

GI最符合定义的实现是[光线追踪(Ray Trace)]等方法,但想要把这个在实时3D图形上实现,现在的GPU性能还不够,所以现在的主流是采用预先计算的模拟GI的方法。日本的游戏里,致力于采用这种模拟GI方法的有[索尼克世界大冒险],这个在之前的连载里也有,在基础方面希望参考这篇。

在「BH5」中,玩家虽然可以体验到动感丰富的舞台(Stage),这些都是在关卡设计师(Level Design)(舞台设计)的巧手中完成的,实际上很意外的是做成了一个整体的“箱庭”(译者注:这里可以理解为把游戏里一章的所有舞台都做在一个大场景里)。也就是说,即使玩家是认为自己在自由行动,实际也只是在游戏系统的手掌上打转。虽然听上去不太好听,但这样构造的原因是为了让设计师和美工可以更容易控制。

场景是如此得接近玩家,为了让玩家的视觉印象感受深刻的地方,需要手动的进行环境光的设定。在表演舞台和影像的设置上,要在关键地方加入环境光。具体的,要先设定舞台中的重点位置的影响范围,再设定支配这个影响范围的环境光。

这个环境光本身,开始是在MT Framework的工具上,使用CubeMap(6面构造的的全方位纹理)来进行设定,对进入影响范围的3D物体对象给予全方位6方向的环境光的形态。CubeMap的构成,是把这个场景给予的动态和静态光的影响,还有精确的全局照明一起进行预先计算(也可以让设计师手工制作CubeMap)。

[CubeMap]




上图是CubeMap的影响范围的可视化截图,在范围内的部分表现有被特别设定的全方位环境光。
中图是最终效果截图。
下图是场景内设定的CubeMap。

由于「BH5」舞台的箱庭结构,需要大量给予环境光的CubeMap,而实际上这种CubeMap在运行时需要在内存管理上做大量辛苦的工作。所以在「BH5」中,把CubeMap用有9个系数的球谐波函数来做近似表现的实现。

关于球谐波函数的基本概念,可以参考本连载的[杀戮地带2(KILLZONE2)]。简单得说,就是把全方位的放射能量分布近似化的进行不可逆压缩的方法。「BH5」中,把9个系数分配到RGB来存放,虽然多少会粗糙点,但能够复原出来自全方位的环境光。


译者注:杀戮地带2和生化5都是采用了l=2的球谐波函数。

运行时上述的照明(lighting)是如何实现的呢?单纯的考虑,就是使用了9个系数的球谐波函数(SH)来复原环境CubeMap,再通过这个,使用IBL(Image Based Lighting)的方法?

石田先生[不是这样,没有使用恢复为CubeMap的方法。使用的SH Lighting是比这个更简便的方法。原理上使用了斯坦福大学的Ravi Ramamoorthi的[An Efficient Representation for Irradiance Environment Maps]方法(地址是http://graphics.stanford.edu/papers/envmap/)。使用这个方法,从3次(9个系数的)球谐波函数在Piexl Shader上复原全方位的环境光,就可以取得对应阴影处理对象法线的环境光。如果9个系数可以展开为10个左右的指令的话,那么恢复为CubeMap的方法在Pixel Shader上的成本更少。]

根据石田先生所说,可以分析出,就算使用SPU等芯片制作CubeMap,也无法实现低GPU负荷的将CubeMap恢复的方法。顺便说一句,PS3专用的[杀戮地带2],采用了使用SPU来恢复CubeMap的方法。

[SH Lighting] 





此图是实现不使用纹理(Texture)内存,直接从球谐波函数得到所需方向的环境光的方法的实现。


卡普空第一程序制作室 程序员 上田干夫先生

对了,根据场景的不同,特定的环境光CubeMap要可以设置在哪些区域(Area)产生影响和那些区域不产生影响。特别是屋外不能应用特定CubeMap的区域很多。这些区域,要选择使用全局设定的环境光CubeMap。具体的,屋外情况使用全局环境光CubeMap,要设定从天井方向而来的天球光和地面方向的地面反射而来的地面光。

还有,放在邻接的CubeMap之间的3D物体对象的情况,采用插值表现两者的球谐波函数系数,在通过球谐波函数,来计算出全方位环境光的方法。

    上田干夫先生[环境光以外的静态光源,也要一起细致的设定影响范围。例如,从小屋向屋外看时,Bloom的出现方式要由设计师来调整。在「BH5」中的情况,比起基于物理正确的照明,更重视为了在印象上使照明看上去更容易印象深刻的“基于设计师视觉正确的照明”。]

关于环境光,和连载里刊登的[合金装备4(MGS4)]的手法非常相似。当然,虽然与[把预先生成CubeMap通过球谐波来获得]的实现等级不同,但舞台中环境光的配置,通过设计师来设定这些的影响范围等制作的风格上有相似的地方。虽然「MGS4」和「BH5」游戏类型上不同,但制作方对于画面要实现电影般的照明效果的重视,这方面是非常近似的,因此才有了一样的照明概念吧。

[由球谐波函数得到的环境光照明]



上图是没有球谐波函数的环境光,下图是根据球谐波函数得到的环境光(最终效果截图)

转载于:https://www.cnblogs.com/oiramario/archive/2012/03/28/2420531.html

【翻译】西川善司为了3D游戏粉丝的[生化危机5]图形讲座(后篇)相关推荐

  1. [转载] 翻译 西川善司著针对3D游戏爱好者的”METAL GEAR SOLID 4”图形讲座(下)

    http://www.cnblogs.com/arai/articles/1701596.html 西川善司著针对3D游戏爱好者的"METAL GEAR SOLID 4"图形讲座 ...

  2. [转载] 翻译 西川善司著针对3D游戏爱好者的”METAL GEAR SOLID 4”图形讲座(上)

    http://www.cnblogs.com/arai/articles/1701543.html 西川善司著针对3D游戏爱好者的"METAL GEAR SOLID 4"图形讲座 ...

  3. 【西川善司】3D图形的概念和渲染管线(5回完)

    本文取自西川善司的3D图形技术连载,全99回 本贴为9~13回,争取每1~2天更新一回吧.半年更新完. 也希望大家能支持. 翻译 Trace 校对&注解 千里马肝 http://www.ope ...

  4. 西川善司【神秘海域(Uncharted)】的图形分析

        本文是为传播0月8日发售的[神秘海域 合集]魅力而短篇连载的第2回,这次主要集中在神秘海域系列的图形的技术方面.原文链接在 http://weekly.ascii.jp/elem/000/00 ...

  5. 【西川善司的3D图形技术连载】GPU和Shader技术的基础知识(1~8回)

    本连载的主要目的,是介绍最新的PC和GAME所使用的最新3D图形技术的发展趋势. 暂时的方针是,首先是考虑介绍比较新的PC Game和PS3,XBOX360等新时代游戏机的游戏所采用的技术. 那么首先 ...

  6. 西川善司的3D图形技术概念和渲染管线的处理

    from: http://psv.tgbus.com/news/ynzx/201305/20130528094843.shtml 3D图形技术概念和渲染管线的处理 一:3D图形的概念 图1是3D图形的 ...

  7. 【西川善司的3D图形技术连载】3D图形的概念和渲染管线(Render Pipeline)(9~13回)

    3D图形的概念和渲染管线(Render Pipeline) 前面介绍了3D图形历史,接下来要解说的是3D图形的处理流程. 3D图形管线的流程图 图1是3D图形的流程模型.这个虽然是对应DirectX ...

  8. 【西川善司】PLAYSTATION4图形讲座(后篇) [

    西川善司为了3D游戏粉丝的[PlayStation 4]的图形讲座(后篇) 翻译:Trace 校对:千里马肝 PS4时代的游戏图形的关键是新搭载的技术! 2月21日正式发表(当地时间) 虽然在前篇中看 ...

  9. 【翻译】西川善司「实验做出的游戏图形」「GUILTY GEAR Xrd -SIGN-」中实现的「纯卡通动画的实时3D图形」的秘密,前篇(1)...

    http://www.4gamer.net/games/216/G021678/20140703095/   新连载「实验做出的游戏图形」,是聚焦在特定游戏的图形上, 对它的结构和使用的技术解说为主旨 ...

最新文章

  1. 从产品的适用性以及费用方面考虑
  2. 静态类和单例模式之间的区别?
  3. Java设计模式 -- 简单工厂模式(SimpleFactory)
  4. HTML5崛起之时,Java桌面时代就已经终结了
  5. python爬虫爬取雪球网_Python爬虫爬取天天基金网基金排行
  6. 一组匹配中国大陆手机号的正则表达式
  7. poj 2945 Find the Clones 用trie树实现
  8. java 蓝桥杯算法训练 筛选号码(题解)
  9. gradle下载很慢
  10. 单片机的c语言程序设计与应用课后答案,单片机的C语言程序设计与应用——基于Proteus仿真(第3版)...
  11. 火车头文章标题伪原创插件(文章双标题插件)
  12. php下载excel乱码,如何解决php下载excel乱码的问题
  13. 医院电子病历系统HIS、LIS、PACS、CIS源码
  14. java基础猜拳游戏
  15. 7月7日云栖精选夜读:专访 | 杨强教授谈CCAI、深度学习泡沫与人工智能入门
  16. 文本分类实战----数据处理篇----embeddings与vocab中词汇不相覆盖问题的处理办法
  17. C盘清理-我的C盘莫名其妙就满了?
  18. 章鱼哥APp到底怎么赚钱?为什么滴滴公司会和它进行合作?
  19. jQuery的介绍与使用方式
  20. github上有什么好的node.js的项目?

热门文章

  1. SecureCRT常用Linux命令,SecureCRT中惯用linux命令
  2. 低粉号、带货难?破解快手新晋达人4个爆单套路
  3. Java 实现简单的TCP数据包的接收和发送
  4. 科普:什么是SSH?
  5. Airbnb数据科学家: 历时6个月,我终于找到了心仪的工作
  6. 【Go by Example】笔记整合
  7. 学习Python开发小游戏(三)-----勇闯地下一百层
  8. 5、Hive函数详解与案例实战
  9. Tom邮箱好吗? “随心邮”微信收发邮件是怎么回事
  10. Ajax的异步同步原理以及js几种方式的实现