悟空传

郭子健
奇幻 / 剧情 / 动作
2017

奖项

  • 第54届台湾电影金马奖 获奖 最佳视觉效果奖

  • 第37届香港电影金像奖 提名 最佳视觉效果奖

项目解析

  • 展开 收起 特效-金箍棒

    金箍棒特效大致分为:熔岩状态金箍棒、熔岩形成金箍棒、金箍棒长出、裂缝、膨胀、裂缝加膨胀、收缩、剥裂。

    金箍棒设计图

    2、效果测试初期导演给了一些大概方向:金箍棒是由岩浆凝结而成,爆裂过程会看到红色的岩浆凝结后成碳状黑色。由于这样一个奇怪的形态没动态参考,即使有单帧概念图,金箍棒的各种动态和质感都只能在特效测试过程中慢慢发现怎样最合适。测试过程中导演也就一边看测试结果一边调整想法。最终导致这一系列镜头耗时相当可观。

    3、耗时长除了最开始对最终效果概念模糊外,最大的问题是如何实现这些不同的效果。除了全是熔岩状态和剥裂接近常规特效,其他全是没有明确制作思路的镜头。最开始我想到的办法就是用流体解算。让流体整体凝结成金箍棒、外皮龟裂,生长、膨胀技术上都能实现时,却发现还有一个要命的精度问题。在一个隙缝里解算流体、让流体具有棱角分明的尖锐外形现有技术能达到的精度还远远不够。所以我后来大部分都用程序动画来实现,但动态方面每个效果做法各不相同。由于大部分模型都程序化重新生成过,所以材质纹理也都采用全程序化方式制作。

    【裂缝】核心思路是用shader置换来控制裂逢和外皮移动,再将裂缝属性应用到ce上产生内部的光照。shader里的裂缝由一堆生长的线条控制。线条生长没法用pcfilter或attributbetransfer之类的简单算法来作匀速生长这样缺乏节奏。我先让这些线条计算出交叉和拐角的地方,当每条线被不断生长的cc属性激活时就会迅速生长或迅速停止生长。

    ?

    金箍棒裂缝特写

    【熔岩形成金箍棒】让一根光滑的梆子做成熔岩状态我想到个讨巧的办法,只需要把模型按不同强度加上重力方向挤压变形,多迭代几次就很像了,都不需要进solver。麻烦的是控制熔岩变回金箍棒的节奏,我用voronoise将金箍棒区块化,让每块在整体动画中又有局部变化。跟耳朵连接部分的动画用流体解算过,想要熔岩变长拉丝只需要把viscosity和surfacetension调大到合适的值就可以了。但这样的结果是拉出来的丝比较绵软缺乏弹性,所以加了一些额外的属性控制velocity让拉丝的熔岩一直保持绷直的状态。

    金箍棒-熔岩形成过程

    【膨胀】有一点小小的遗憾,就是所有镜头节奏都特别快,膨胀或收缩的过程都看不到。比如膨胀时外皮都有生长、分裂或新生外皮的动态,这些细节不逐帧仔细去看基本都看不到,但观众能感觉到金箍棒是在长大而不是简单的放大或缩小。膨胀时我是让每片表皮向外移

    动,同时表皮边缘像细胞一样向周围扩张,如果扩张到一定面积时就自动分裂成两片或三片,如果相邻表皮间有超过阈值的缝隙时就会有新的表皮生长出来。最后这些表皮转换成vdb体积整合后再转换回poly进行渲染。

    金箍棒-变大生长

    4、所有金箍棒特效视觉上都没有一个大破碎或大洪水特效来得震撼,但这些都是直到现在给我挑战最大的镜头,因为它没有现成方法可巡。希望以后能接触更多这样非常规的异想天开的特效!

  • 展开 收起 特效-破碎&坍塌

    悟空传的场景坍塌有许多种,比较有特点的还要说天机仪的坍塌与结界桥的坍塌,我们从这两个比较复杂的效果来着手分析:

    【天机仪坍塌】

    1、天机仪坍塌特效大概分为:不同材质大块节奏、小碎块、沙尘、石头、烟尘

    天机仪破碎

    2、客户想要那种有节奏的坍塌,一大块落下来砸碎了下面的行星仪,行星仪破碎掉落砸碎了天记仪,这样一层一层破碎。

    3、针对这个镜头考虑了很多,一个镜头表现不出来这种节奏,分成三镜,不同机位,分别展示屋顶、行星仪、天机仪。还有一个问题是机位很近,考虑到后面的接境,碎块不能有太多落在天记仪旁边 ,如何破碎掉落是个问题。首先考虑这么大体量的破碎该如何破碎,想到了分区域破碎,先碎行星仪,行星仪是钢结构,要有弯曲变形,还要落下一大块砸碎天记仪。结算之前要有很好的控制,碎块给好v、w、active才能开始。行星仪碎好转成vdb做被动刚体用来结算屋顶、天机仪。屋顶是玻璃材质 ,掉下来会有二次破碎,也得分开碎,这样大碎块破碎就做好了。后续加一些小碎渣、烟尘、石头。

    4、整体破碎想要节省时间有几个点:

    1)被动刚体要用vdb速度快

    2)结算好的碎块要用transformpieces驱动

    3)做debris、smoke可以用简模替代

    【结界桥坍塌】

    结界桥坍塌大致分了3个阶段:确定破碎区域,简模动态以及铁链动态,lookdev和渲染测试。

    结界桥坍塌-效果展示

    结界桥破碎-整体破碎

    简模动态:

    在简模动态的阶段,对于画面的要求是最基础的,例如:整体下落的节奏,冲镜的碎块选择,以及景别区分后的破碎量处理。近景在处理下落节奏的时候需要注意很多细节,比如下落的速度决定了整个场景的大小感觉,碎块的分布决定了整体的倒向以及画面构图,这些也是首先需要确定的东西。接下来才会去处理每一个景别上的物体破碎程度,这时便会面临数据量的问题,在处理大型破碎的时候,往往我们会为了细节而不断的添加元素,最后导致场景冗余的部分越来越多,但是对于画面来说并没有起到什么实际上的作用。例如在主物体之后的柱子,如果不破碎的情况下,画面显得纵深不够,也不够饱满,但是破碎后的碎块过多会填满整个画面,这时的碎块需要的是大小差别更大,区别更加明显,即可分割场景也可以为画面增加细节。

    在处理完大体的动态的时候,需要在简模动态完成之前处理掉导演在大气氛上的一些小的需求,比如冲镜。这时的近景碎块如何冲镜就变得灵活多了,多数情况下为了更快的达到效果,通常会选择挑选体积较大的碎块手动KEY动画的形式。

    结界桥破碎-简模动态

    铁链动态:

    在处理完简模动态的时候,这时我们不能继续添加细节,因为场景里还有许多铁链需要解算动态,如果过多的添加细节会导致铁链的不稳定。铁链在解算时我们选择的是以约束的方式来计算,并且降低碰撞精度,并约束旋转角度,这样一来不会产生过多的计算量,而且可以提高铁链的稳定性。对于断开的铁链,我们选择在这个阶段去制作,因为断开后的铁链会对整体破碎的力传递有一些影响,我们需要将这种不确定性降低,减少问题的发生。

    结界桥破碎-增加铁链

    Lookdev阶段:

    其中最费时间的莫过于lookdev阶段了,第一个需要解决的问题就是:在添加破碎的细节过后,铁链在跟随破碎的碎块动态时,约束的不稳定造成钢体之间力的不稳定。这时我们就需要很多种的约束去确定每一个大的区域力的稳定,并且控制每一个大的区域激活的顺序,这样既达到了整体的破碎的稳定,也增加了画面的节奏感。在解决完所有钢体的动态后,此时需要做的就是增加元素了,无论是烟尘还是小的碎粒是需要被整体的风暴所影响的,为了减少数据量,采取了分区域添加细节,这样就涉及到了不同区域上的速度传递,虽然导致构成的网络略微复杂一些,但保证了整体的模拟真实性。

    结界桥破碎-Lookdev

    渲染测试:

    严格来说,在制作效果的同时,便已经开始了测试渲染了,这样可以保证元素在最后对接时参数的固定化,减少冗余的操作。在最后的测试渲染阶段,需要保证场景比例还原,边缘置换与材质组提供的贴图置换融合适当,画面中没有闪、跳等情况。(通常我们在解算的时候,为了还原真实场景,会对场景比例有一些调节,但最终渲染的时候还是要还原场景比例,并通过自检才能提交下游环节)结界桥这个整体的破碎场景在特效阶段大概分成了12个元素,其中包括碎块、碎渣、烟、尘土等等。管理这么多层元素的关系并不简单,由于制作镜头之前做了一个很好的命名规划,所以在最后这一步区分开近中远三个景别并且每个景别元素之间的区分并没有造成困扰,反而下游组在接手文件时能更快的提高效率。

    结界桥破碎-部分分层展示

  • 展开 收起 特效-妖云

    1、妖云特效包括妖云动画、妖云脑袋、闪电和结冰。

    妖云-设计图

    2、妖云需要做的基本就是流体解算,只是脑袋我们做了些不同形态的尝试,包括全是触须似的纯电脑程序化的抽象流体形态、骷髅头式的、龙头式的。最终导演要求我们做一个稍微具象化一点的看似龙头的脑袋,脑袋探出的妖云口做成水流漩涡似的涡流形。闪电会根据妖云的心情改变颜色。

    3、整个妖云的动态类似龙卷风,但是我们不希望简单的用volume变形或粒子驱动来解算。这场戏有很多镜妖云动态,我们想找到一个形态可控,同时解算不会太慢的办法。

    妖云-最终效果

    【发射器】为了让运动的妖云一直保持一个固定的形态,我们做了一个固定形态的发射器,然后用noise来控制发射volume的density,但发现这发射器会产生一层与妖云运动不匹配的volume,所以后来是在sop里处理发射器时就让他具有妖云的运动方式。

    妖云-龙头

    妖云-漩涡

    【流体解算】我们用gasfieldwrangle定义力场然后导入一些fieldmask来控制各区域不同的力场强度,后来发现这样控制形态更容易控制,解算速度也很快。

    妖云-解算结果

    【结冰】妖云和脑袋结冰时都是局部开始结冰,其余部分都还是运动的volume,我们解算时就尽量让结冰部分冻结住。但由于各种场太多而且浓度不均匀解算完时总有一些地方不能完全冻住,所以冻结部分有些是解算完后在sop里做了些单帧局部融合。

    妖云-结冰

    【闪电】由于闪电太多频率也高,我们不希望手K闪电动画,所以我们偷懒用lsystem生成闪电,动态和分布都用粒子控制。

    妖云-闪电

    4、整个妖云制作虽然难度不是太高,但这是我们最后制作的一场戏,时间非常紧迫,希望还有机会做出些更奇幻的云。

  • 展开 收起 特效-刀刃风暴

    1、刀刃风暴特效大概分为:飞刀旋转形成、飞刀蹦飞、龙卷风暴、环境烟、气氛烟、烟的吸引聚集、周围环境破坏。

    2、测试初期我们这边先出个大概动态,由于室内效果没想的那么猛烈,也没做对周围环境的破坏。后来客户要求要做成偏物理的,飞刀猛烈飞转要砍碎周围桌椅板凳并且卷入风暴之内,难度大大增加。

    刀刃风暴-效果展示

    3、整个效果最耗时的地方是效果的模糊和大量的修改,方法上:

    【风暴形成】飞刀旋转采用了粒子替代飞刀的方法,控制好向心力和旋转力的大小,客户需要飞刀一条一条飞入,而且从下至上形成,最有效快捷的方法是分几批刀做最终和在一块。飞刀成型以后,用飞刀拖烟作为主层风暴,加入龙卷风、气氛烟、从周围吸入尘土颗粒。客户要求飞刀得砍碎周围桌椅,桌椅的破碎最麻烦的地方是二次破碎,最终要砍的特别碎卷在风暴里,当时采用的方法是俩次破碎分开做,第一次碎完后,拿出来再切割,这种方法出效果也快捷。

    【风暴的爆开】金箍棒爆裂倾倒,飞刀碰到每个元素就会蹦飞,当时想到的方法是每个飞刀爆开的瞬间发射一把飞刀,俩套飞刀合在一块,这样效果就出来。

    刀刃风暴-效果展示

    4、整个刀刃风暴的制作采用了一些取巧和方法,节省了很多时间成本。

  • 展开 收起 合成-金箍棒&刀刃风暴

    《悟空传》的合成元素非常多、效果复杂。MOREVFX的合成艺术家们花费了很多心思去设计和完善,考量细节的处理,最终把理想的效果呈现给大家。今天我们与大家分享金箍棒和刀刃风暴的合成解析!

    金箍棒·合成解析

    【熔岩形成金箍棒】

    在开始制作金箍棒之前收到的客户描述是,金箍棒是由岩浆凝结而成,爆裂的过程会看到红色的岩浆凝结后形成的炭黑色岩石,并给出了概念图。与此同时,我们也查看了很多相关的视频参考与资料。

    概念图

    渲染图层

    合成完整版

    在合成制作中主要注意的部分是要把熔岩做出一些自然的变化,假设熔岩靠近已形成的岩石部分接触空气时间长,颜色较暗,熔岩中心的部分主要是流体状态,颜色较亮。让整个物体有很清晰的层次变化,同时金箍棒和人之间的交互也非常重要。剧情中,悟空的耳朵里倒出岩浆,然后形成金箍棒,所以对人物头部的影响最明显,但如果只对人脸部分做一个简单的调色,则显得很单一。这里我们利用noise在人物脸上做出了一些假的纹理,产生交互反应时增加了不少细节。

    细节展示

    【金箍棒形变】

    影片中金箍棒有很多发生形变的过程展示,比如:生长、放大、缩小、燃烧等等,其中放大缩小都不仅仅是单一的体积变化。当金箍棒变大时有很明显的生长过程,外壳膨胀向外扩张,同时伴随有很多碎片和烟尘效果。当金箍棒缩小时受到外力挤压导致外壳爆裂崩出,熔岩加速燃烧产生大量的黑烟等等。生活中我们都知道风会加速炭的燃烧,同样,合成的时候也要考虑到这些生活中的细节。金箍棒在变形的时候周围空气的流动会产生变化,从而对燃烧的区域产生影响,使熔岩部分变得更亮,同时对人的反应也会产生相应的变化。所以制作的时候我们需要根据演员的表演和金箍棒的形态变化对亮区反应做动画,因为金箍棒的体积非常大,在放大缩小的过程中会对整个场景造成一定的冲击力,所以我们匹配剧情的节奏,填加了镜头抖动效果,使画面更加灵活自然。

    合成完整版

    【交互反应】

    如下图展示,这个镜头最大的制作难点就是金箍棒熔岩对人物手部造成的透光感觉。合成期间我们通过观察真实情况的反应来辅助制作,比如用手电筒的光紧贴手指时皮肤的质感,颜色,亮度等。同时由于外力挤压爆裂所崩出的碎片和烟尘粒子也为画面起到了画龙点睛的作用。

    合成完整版

    刀刃风暴·合成解析

    悟空周围需要围绕一圈飞刀组成的风暴,因为与人物前后关系复杂,所以这个镜头采取全Deep流程制作。上游组渲染文件大小达到了单帧2GB,这就意味着最后合成需要做大量的数据处理工作。

    合成效果

    首先需要将人物Roto出来,再给予他一个Deep属性,实拍相机跟人物之间的距离一直是变化的,所以我们也需要对人物的Deep属性进行key帧,以保持空间位置正确。因为Deep层操作速度太慢,上游组在渲染Deep层的同时也渲染了一份普通层辅助合成制作。我们通过对普通层进行调整预览,再将调整后的效果附给Deep层,这样就省去了很多渲染时间。

    点云展示

    分层展示

    合成完整版

  • 展开 收起 合成-结界桥&妖云

    结界桥·合成解析

    【制作内容】结界桥大战的制作内容主要有:场景延伸、空间气氛、星河反应、结界风暴等。

    合成完整版

    【结界风暴】

    这场戏在剧情里节奏很紧张,有大量的打斗场面。制作初期特效组按照近、中、远景分别提供了各种风沙、碎石素材供我们进行测试。根据剧情需要,风沙强度越来越大有很明显的递增过程。所以我们在正式制作之前,将整场戏做了相对完整的合成预演,保证了整场气氛的连贯性。

    渲染图层

    【场景延伸】

    在场景延伸的制作初期,我们制定的方案是灯光渲染出的图层就需要达到相对完善的效果,但由于纹理细节不够,上游组修改起来时间成本较高且可控性低,所以最终决定结合合成的方法制作。我们用材质组画好的贴图直接贴到场景模型上,然后根据每个镜头单独分区域调整细节,这个方法能很快得到结果,调整起来直观且灵活,节约了很多时间。

    细节展示

    【环境气氛】

    在制作环境气氛的时候,客户想要表现出这个空间巨大却很封闭的感觉。为了得到这个效果我们做了一些比例较小的烟雾和小范围的体积光来凸显场景的宏大,并且根据演员表演做了一些交互烟尘来凸显更强的打斗感,最后再加上桥下星河对环境的影响效果,这样整个空间就达到了客户想要的效果。

    细节展示

    【整体调整】

    在所有效果都添加完成后,我们按照剧情想表达的方向做了一些构图上的调整。有些镜头需要突出演员,有些需要突出风沙,有些又需要突出场景破碎,最后调整完之后就是我们看到的最终的效果。

    合成完整版

    妖云、筋斗云·合成解析

    【制作内容】妖云场次合成内容有:妖云、筋斗云、鬼火、吸灵魂、风沙气氛、闪电交互、攻击效果及被击中效果。

    合成完整版

    【环境交互】

    这场需要根据剧情,表现出既危险又紧迫的气氛,特效为了方便后期调整,做了多个层次的闪电。我们在制作中需要根据闪电的频率分析实拍素材的受光面和背光面并绘制大量交互遮罩,利用这些遮罩制作闪电对实拍场景的交互。有些情况需要考虑到画面之外的闪电对场景的影响,也就是我们在匹配特效闪电交互反应的同时,也要想象有的闪电虽然没有在画面之内,但是也会对环境差生影响。所以需要额外的做一层由近到远呈衰减状态的交互反应。

    分层展示

    合成完整版

    制作筋斗云场次的时候,基本就是按照正常思路去合成,做出初始版本后又尝试制作了各种气氛的版本,最后选择其中最接近导演想要的效果再进行细化制作。

    分层展示

    例如下图这个镜头,在确认好方向之后特效组又提供了多种元素,如:云内闪电、环境气流、拖尾烟等。我们将这些细节效果都添加到镜头里,每新增一种元素我们都需要制作新增元素与环境互相产生的交互影响,当元素越来越多的时候,单在处理交互上就给我们带来了很大的工作量。

    分层展示

    这镜的云海制作前期方案是全CG渲染云层,特效渲染了很多版测试,但效果一直不理想,后来决定远景使用Matte Painting投射,特效再根据空间关系渲染中、近景序列,我们再将两者无缝衔接,又进行了一些光效上的调整,最后得到了超过预期的效果。

    合成完整版

  • 展开 收起 合成-天机仪

    【制作内容】天机仪大战的制作内容主要有:场景延伸,石心效果,保护罩外壳,环境气氛,被击打产生的火星、石心碎片、亮区反应,以及对空气产生的扰动效果等。这场戏合成元素多,图层多,制作起来相对复杂。

    【石心】

    石心虽然不是这场戏的重点,但是制作的时候也花了很多心思去设计。石心一共做了四个层次,主要部分是中间两层,一层是石心的主体,一层是石心中间出现的若隐若现闪烁的部分,底层和最外层主要是雾状包裹着几颗零星的粒子碎片。这样整体看起来有亮暗变化,主次之分,使物体更有立体感和层次变化。

    渲染图层

    合成效果图

    细节展示

    【保护罩】

    保护罩被击打的效果是这场戏的重点,在正式制作之前也做了很多设计方案。

    设计图

    设计图

    最终保护罩的效果如下图所示,我们最终选用高速的动画来表现他的冲击力和破坏力。

    天机仪外壳展示

    在保护罩转动过程中会带动起地面上的浓烟和石心碎片,被击中后产生很强的金属碰撞效果,例如:大量的火星粒子,强烈的光效影响以及对空气的扰动等等。合成需要注意的重要一点是光的交互,我们为了让环境匹配特效效果, 对实拍素材做了一些特别处理。例如华姬的位置正对着天机仪和镜头,受到光的影响较大。而天蓬背对镜头面对天机仪,所以做了背光效果,主要处理人物边缘部分。同时场景、地上的浓烟等元素也都做了相应的处理。

    合成完整版