俄罗斯一家视效工作室,为电影斯大林格勒制作了N多特效,其中包括了N多的破碎镜头。对他们来说最大的挑战就是如何把CG特效元素跟镜头里面已有的实拍特效无缝的匹配到一起。这些镜头里面都有烟跟火的素材,他们还不得不制作CG角色对于爆炸的真实交互反应,同时还得设计出一架着火的军用飞机坠落在斯大林格勒城镇广场的序列镜头。
[flash]http://player.56.com/v_MTE2MDEzNjc3.swf[/flash]
想要简单快捷的达到这样的效果,MainRoad|Post转而投向Houdini里面的Pyro,布料跟粒子工具。他们同样也适用了Houdini的Mantra渲染器跟Houdini的角色工具来解决一些动画带来的挑战!
烟雾、火焰匹配CG元素实拍特效
为了制作出能够完美匹配实拍特效的CG火焰和烟雾,MainRoad|Post不得不去想一个最佳的方法来把CG制作的火焰与实拍火焰的大小、颜色、形态、速度以及立体的纵深感完美匹配上。为了解决这个难题,他们觉得尝试着使用一种贴图技巧(给Volume上贴图,不光是Volume,Flip也是可以这么干的)来增加PyroFX解算的细节。
他们发现目前使用的每一个体积的贴图技术都是一把双刃剑.例如PyroSolver的默认dualrest技术是很容易去使用贴图的,但是并不能得到他们想要的结果,因为最终结果会有拉伸跟人工制造的虚假成分,与他们想要的能够与实拍特效相匹配的效果相差甚远.最后,他们决定最佳解决方法就是在Volume内部使用流体驱动粒子并且保留住局部坐标,通过这个方法能够达到他们所预期的效果。
群集动画
出于实拍的安全考虑,斯大林格勒里面的CG人群是使用在两段不同的爆破特效的序列里的。一个镜头是一大油箱的爆炸,还有一个是撤离斯大林格勒城镇广场的爆炸。角色不是很多,基本上都是在40到100人左右。想要保证角色动画的真实性对他们来说是个挑战,因为角色是在凹凸不平的地形上行走的。
在油罐的那段序列里,他们的初始方式是在Maya里完成所有的动画序列,然后以几何体缓存的方式导入进Houdini以便能够整合场景。测试阶段,他们发现在角色的脚跟地形上小的凹凸起伏之间总是有一些非常明显的腾空。
“为了单独避免每个角色的动画问题,我们决定重新考虑下我们的方式,尝试着使用Houdini来做动画的程序矫正。”MainRoad|Post的动画总监AlexanderLipilin解释道,“我们使用了八月八号开发的内部工具来把maya里面角色的骨骼动画导入到Houdini中来,然后重新定位这些动画的序列为简单的IK-Legs的设定,这么做的好处就是我们可以在CHOPs里面来矫正之前角色的细微错误,能够让角色正确地匹配到地面上。这同时也能够让我们更好的在不同的动画片段时间来回混合,给予我们更好的动画效果,同时对于我们的布料解算而言也是帮助的,这样一来镜头里面角色从T-Pose到运动之间的转换的问题就更少了。”
当他们开始制作城镇广场枪战的那段序列的时候,团队决定他们应该修改下他们的动画流程。他们在Houdini里面穿件了一套绑定控制系统,能够让动捕从定位。能够让他们在Houdini里面制作全部的关键帧动画,同样也可以从其他地方导入动画数据。尽管他们已经拥有了这样的工具来做手K动画,但这次大多数的动画还是使用的动捕数据。
当有士兵被炸飞到空中的时候,他们使用了Ragdolls(角色动画的替代物,用来模拟角色与动力学之间的交互,类似于代理物体或者说是替代物体)来帮助他们完成这些镜头。如果有CG角色在爆炸范围之内,角色的骨骼会被转换为Ragdolls,保持住在爆炸时候的Pose。爆炸中心的冲击波会影响到Ragdolls的身体,当解算完成之后,会把Ragdolls再次用CG角色的骨骼给替换回来。
结合Houdini的布料解算器也是他们使用的重点之一,这会提高CG角色整体的真实感。CG士兵裹着大衣又跑的相当快,这实际上是有助于弥补之前动画上的不足的,所有的CG人群的序列都是使用的Houdini的布料来处理的。
“通过调节解算来修补动画片段的不足以达到我们预期的效果确实花了些时间”Alexander说道:”在我们做好了最初设置之后我们把他打包成HDA,然后每个角色的独立解算都直接批量排好处理上,之后无须任何的调节。”
飞机坠毁的序列
这部电影里面的一个关键镜头:着了火的飞机,熊熊燃烧着最后坠落到城镇广场上。这给MainRoad|Post提供了目前为止最大难度的挑战。
飞机的动画实际上是由MainRoad|Post的视效总监AndreyMaximov手Key的。这套序列里面基本上包含了所有Houdini的动力学能够制作的元素,RBD用来解算飞机被袭击坠落时与建筑物连带着雕像一起破碎的效果。粒子用来生成细微的细节,例如飞机身上带着的火焰、火星,同时还有飞机最后装机的那一下掀起的碎块与泥土,流体动力学用来添加烟雾跟散开的灰尘。GeoSolver用来处理飞机过分地面交互式的机体变形,就这一个序列就差不多包含了50个的体积解算跟30个不同的RBD解算。
“对于大多数的破碎镜头,我们是把Bullet跟GeoSlover结合起来使用的。当单独使用这两解算器的时候,得到的结果是非常有趣的。但是,当把他两结合到一起的时候,对于艺术感官上而言.结果是相当赞的”,MainRoad|Post的首席技术MikhailLesin评价道:”在我看来,Houdini的动力学系统最强悍的能力之一就是能够把多元化的动力学解算器结合起来使用。有些时候,我们不得不牺牲一下解算速度,但那是值得的。”
灯光与渲染
MainRoad|Post改用Houdini的Mantra渲染器来渲染体积的置换效果,最后就直接使用Mantra来渲染这个项目的所有灯光材质了。