《钢铁侠》等电影中的image based lighting和physical shading

http://blog.csdn.net/ccanan/article/details/7647964

 

http://renderwonk.com/publications/s2010-shading-course/snow/sigg2010_physhadcourse_ILM_slides.compressed.pdf

http://renderwonk.com/publications/s2010-shading-course/snow/sigg2010_physhadcourse_ILM.pdf

siggraph10上面physically based lighting course里的文章。

由Industrial Light and Magic带来,原来的标题是《钢铁侠》和《终结者》中的image based lighting和physical shading,但是实际上这个paper覆盖了IML多年的积累,包括《珍珠港》,《绿巨人》等电影。

同时里面的很多做法,对realtime graphics也非常的有指导意义。


film reality

一点需要澄清的是,cg开发者的终极目标是film reality,不是真实的人眼可见的那种reality,这个限制来源于存储介质是LDR,所以在这个限制下,很多东西要考虑到这些因素。


90年代

《钢铁侠》等电影中的image based lighting和physical shading_第1张图片

在90年代的时候,是捕捉一个LDR的环境贴图(当时是LDR的,后来是HDR),来作image based lighting,当时使用cook torrence来做specular公式。

一些hack:比较典型的是一些ambient的光照,这个没法非常准确的进行capture,并生成shadow信息,会使用大量的spotlight来模拟:

(简直就是irradiance volume)

《钢铁侠》等电影中的image based lighting和physical shading_第2张图片

《珍珠港》

michael bay(《勇闯夺命岛》《珍珠港》《变形金刚》的导演)挑战IML说要一个比以往电影中cg渲染的飞机要更真实的效果,IML一顿捣鼓,结果大家都看到了,不说还以为是真实拍的飞机呢,如同战争比10所大学更能推进技术进步,需求真的是技术进步最好的助燃剂。

到了90年代晚期,raytracing(光线追踪)技术已经比较成熟,但是IML还是没有使用,源于在如此复杂的场景中使用不太现实,而且他们习惯使用的软件(renderman)中还没有这个功能(嗯,不错的实战经验),所以继续他们的image based lighting。

在珍珠港中,添加了

  • reflection occlusion,从image中读取的光照信息,加一个occlusion,防止在犄角旮旯的地方,应该比较暗,还很明亮的反射环境
  • 《钢铁侠》等电影中的image based lighting和physical shading_第3张图片
  • ambient environment
  • 《钢铁侠》等电影中的image based lighting和physical shading_第4张图片
来以手头拥有的资源,以很低的消耗(开发消耗和生成实际图像的运算消耗)达到了接近raytracing的GI质量。
最终到达了这样的质量:(coooool)
《钢铁侠》等电影中的image based lighting和physical shading_第5张图片

《绿巨人》(<hulk>)

到了绿巨人这里有了一个进展,就是环境贴图改成hdr的了,并且分辨率也进一步加大。


《钢铁侠》

《钢铁侠》等电影中的image based lighting和physical shading_第6张图片

到了《钢铁侠》这里主要是处理的材质上的事情,在环境贴图等image based lighting上面的工作已经比较成熟了(稳定的使用高分辨率的HDR环境贴图),但是在钢铁侠中的对材质高要求带来了新的挑战,很快项目组发现材质上的BRDF不够好。

这里必须要提的几个是:可见做一个很棒的最后结果,中间有多少积累工作需要做,他们很多的工作甚至不会再最终产品中露头

  • 在《变形金刚》中,ILM已经成功的做了不少的适用于车上的材质,这为钢铁侠中的工作铺垫了不少
  • ILM使用BRDF探测器(记录材质如何对光进行反射,bungie在halo上也做过这样的事情),
    • 但是发现chrome合金部分过于复杂,以至于没法收集足够的信息。
    • 收集的信息很棒,但是美术想做点改动就非常的难(估计一大票莫名参数直接眩晕了)
    • 最后探测BRDF工作没有使用,但是却帮助项目组更好的理解了材质的BRDF
基于这些分析,最后ILM使用各向异性的specular function来做超酷金属效果:
《钢铁侠》等电影中的image based lighting和physical shading_第7张图片

各向异性的brdf的研究也比较多了,ILM用的是在一些矢量方向上使用不同的specular exponent。

使用brickmap来做ray traced reflection surface caching。

ILM在钢铁侠开发期间也遇到了不少问题,其中一个就是很多参数(影响的factor),这些有些过于复杂,美术一顿调之后存在个人之间很不同,同时也会出现不真实的情况,简化等问题在后面的《终结者》的开发中有了很多进步。

这里ILM说的一个挺不错:ambient和diffuse其实是一个东西,reflectance和specular其实是一个东西。


《终结者》

到了《终结者:救赎》,ILM希望能够解决在之前项目开发中的一些头痛问题(比如太多参数调节的窘境),并迎接新的挑战(终结者中的一些场景的变化更加剧烈等)。

ILM采用更加基于物理的材质光照系统(physically based lighting)来:

  • 达到一个更加简单,更加直观,更物理正确的光照渲染系统
  • 这里包括:
    • 能量守恒的材质
    • normalized specular
    • more physically plausible specular falloff
    • more heavily image based
    • importance sampled raytracing
能量守恒
这个是物理光照中基本都会有的一项,就是保证反射的光强度不会超过入射光。
同时ILM把ambient和diffuse合并,specular和reflectance合并,这样只要平衡diffuse和specular就好了(不像原来要平衡4项)。

normalized specular
一个光在粗糙表面上反射,那么反射面会更大,同时亮度降低,其实这也是能量守恒的一种。
原来ILM没有这一项,是通过人手动来调的,现在做到specular公式中,那么结果不用调就比较自然了。
《钢铁侠》等电影中的image based lighting和physical shading_第8张图片

《钢铁侠》等电影中的image based lighting和physical shading_第9张图片


normalized Importance sample raytracing

importance sample就是通过去采样主要的部分来尽可能有效的去采样场景。

这个让我想起ue3的塞玛利亚人里面的反射就只反射霓虹灯,而建筑物什么的一概不管的这种,这应该也算是一种importance sample。

实际应用的时候,importance sample包括:

  • 主要采样image中比较亮的点
  • 在粗糙表面的时候,会对反射的方向做一些改变,指向最有效的部分
最后结果和标准raytracing差不多,但是效率却好很多。


变革的烦恼与收获

ILM在做了这些技术改变之后,和很多公司一样,有几点痛楚:
  • 对生产的影响,ILM在开发的同时也在制作电影,于是就沿用原先的系统来做原先系统可以处理的很好的部分,比如里面的摩托车机器人,然后在系统开发好之后,在做有挑战的部分,比如骷髅机器人
  • 开始技术的改变也导致了工具的效率问题(如果到游戏上还得加上bug和crash),开始做好的工具效率颇低(相比于原来)
  • 习惯于原先hack的美术们,对这个新系统的使用也颇有不习惯,ILM内部甚至引发了一场“圣战”,简而言之,费了好多力气才把新的系统(energy conservation, normalized specular等)推行下去
  • 不过到了后面的项目(《钢铁侠2》)的时候,痛楚期过去,全线转入新的物理材质光照系统,品质和开发效率都更加的高
最后来个图,钢铁侠是这样拍的,感觉演员拍的时候应该不会很high吧:
《钢铁侠》等电影中的image based lighting和physical shading_第10张图片


你可能感兴趣的:(工作,image,chrome,Crash,caching,2010)