点燃地狱火
“一提到地狱火,人们就会将它描述成一种超自然现象,”数字特效总监Ken Hahn说道。“它不用消耗任何一种原料,也不会产生烟雾。可是电影中它非存在不可,于是我们使用它来表达恶灵骑士的情感。美丽的Roxanne出现在他的面前,那种炽热的火红便消失了,取而代之的则是微妙而柔和的火焰。但是,当他火冒三丈的时候,火焰变得充满敌意,让人畏惧。”
恶灵骑士快速移动时的火焰是CG制作的,索尼影视的Patrick Witting负责控制计算流体仿真模拟。“只有涉及到核心计算时,才会使用到Maya solver,” Mack说道。“我们开发了Houdini前后端应用程序和一个渲染器。”
为了能够很好地利用Maya solver修改流体变量(速率、温度、密度和一定数量的燃料等参数)以及较为精确地放置燃料,Witting开发了一款Maya插件,它可以从 Houdini纹理贴图和公式中读取数据。“我们可以使用着色的贴图精确地划定放置燃料的位置,” Witting说道,“又或者是编写一些3D或者是2D的噪声函数来生成块状的非燃料区域或是形状。”
Maya插件读取了Houdini的信息,然后修改流体变量。这样我们能够以一种更精确的方式同solver交互而不是直接通过Maya force的改变来实现效果的改变。如果只是希望通过force来制作效果动画,制作人员会受到一定的局限。
随着时间的推移,主角、摩托、“西部牛仔”、骷髅马的装备基本制作完毕。“这些装备控制起来很方便,” Witting说道。“每一件装备都包含八到十个部位,而每个部位上都装有各种旋钮。”艺术家利用这些旋钮可以控制颜色、速度、动作、火焰的密度,以及火焰包围时角色外形的质量,这样可以实现骷髅、轮胎、摩托等等的单独模仿,也好生成更多可供Mack选择的镜头。
“本来Patrick Witting和他的小组要开发大量的迭代算法,” Mack说道,“但是我们慢慢地把它们的数量减少,不断地对它们进行改进,最终从中间挑选出一个来使用。一个参数的数值极易对另一个参数的数值做出反应,因此它们彼此间会以意想不到的方式进行交互。”
一个基于 RenderMan RI points的自定义解决方案充当了火焰的渲染器。“你可以把它称作是volume render solution(体积渲染解决方案),” Witting说道。“基本原理就是它将一个容器填满,然后角色从中间穿过。” Steve Marshall编写了火焰的物理着色器,然后在Houdini中执行。“一个最简单的着色器是一个典型的从炽眼的白光过渡到橙色最后到红色的光谱。”
由于这种渲染会占去大量的内存,工作人员将镜头切分成多个图层。“如果某一帧,恶灵骑士身形较大,那么我们需要把他切分成100片。” Mack说道。“最糟的时候,制作一帧就要占据100个cpu。”

环境
“众所周知,数码火焰是首要的技术难点,但是在这部影片中所面临的难点不仅仅是火焰,还包括数码环境的制作。” Hahn说道。“都市风景以及西南部沙漠风景的制作。”
电影中有一处特写镜头:恶灵骑士足踏地狱摩托,狂奔于摩天大厦的玻璃窗上,随后以慢动作从大厦的另一面飞驰而下,不停挥动着手中的夺命铁索,将一端固定在大厦的某个支柱上,猛地将自己拉回去。这个场景的拍摄地点是澳大利亚的墨尔本,但是那的建筑物可没有你在电影中看到的那么高。
Hahn从屋顶上使用数码相机拍摄下周边的风景,这样工作人员可以重新制作这个街巷。他们甚至还使用摄影制图法将整个结构拓宽。除了那些出现在远景中的高楼是真实的之外,地狱摩托驰骋过的大厦全是3D的,” Steiner说道。“当恶灵骑士立于高楼的顶端时,步入你眼帘的整个城市都是CG制作的。为这些镜头制作环境确实非常复杂,但是我们很幸运,因为视野是有限的。我们只需制作出大厦的两面即可。”
在恶灵骑士同黑心一绝胜负的某些场景片断中出现的环境都是工作人员创作的。这些片断以漫漫黄沙为背景。“恶灵骑士同西部老牛仔一同奔驰在沙漠上,前去同黑心一较高下,” Mack说道。“黎明初晓,一个浑身冒火的骑手,再加上一个被熊熊火焰包围的骷髅马一同飞驰于大漠之上,这需要大量相当精细的镜头移动效果。用传统的方式去拍摄?简直是天方夜谭。所有的镜头移动效果都是由CG制作的。”
首先,相机的位置是处于云端。Ken Hahn解释道:“相机慢慢地向下移动,越来越接近地面。在这样的距离下,观众们会看到远处有什么东西在熊熊燃烧,沿途还留下了焚烧过后的痕迹。周边的植物全都着火了。”镜头逐渐放大,照出两名骑士的身影,镜头也随着他俩不断向前移动。除了某一幕,是通过绿幕的手段拍摄完成的,其他的镜头全部都是CG制作的——人物、火焰、背景。至于在绿幕前拍摄恶灵骑士的那个镜头,工作人员将演员替换成骷髅,然后再添加了些火焰。
云层也是3D的。云层背景是Martha Snow Mack运用270度matte painting手法绘制完成的,参考图片则是Hahn在犹他州拍摄的照片。对于镜头中的地形,工作人员将纹理贴图(texture map)和程序着色器(procedural shader)结合使用,可以随着相机距离地面的远近程度来改变地表的细节数量。
“当镜头离地面较远的时候,我们可以省略掉纹理以及一些简单的物体,” Steiner说道。“某些时候我们会进行详细地整合。”当涉及到渲染的时候,我们就要进行一些必要的调整:植物如果只有四个象素那么大,它们成球状;如果是50个象素那么大,它们就成块状;当镜头再进一步时,它们就变成一小块一小块的草地;镜头如果更进一步的话,就能看到小草的叶片了。同样,当镜头距离地面越来越近的时候,树木的细节也就越来越清晰。
“使用 RenderMan就能够应付这种问题;对于上面提到的调整方法,这款软件也有一项功能可以应对,” Steiner说道。“但是我们必须告知软件具体的操作流程是怎样的。最难的部分就是将不同分辨率下的物体分组,然后再将之分配。”为了解决这个问题,小组自行研发了一个系统——一个新的脚本,它可以将不同分辨率的物体打包装入“容器”中,这个“容器”自身知道如何改变细节的数量级,而另一款名为“GET”的内部系统则可以对物体进行分配。“我们可以告诉GET,我们想要10%的灌木和90%的草丛,”他说道。