金箍棒特效大致分为:熔岩状态金箍棒、熔岩形成金箍棒、金箍棒长出、裂缝、膨胀、裂缝加膨胀、收缩、剥裂。
金箍棒设计图
2、效果测试初期导演给了一些大概方向:金箍棒是由岩浆凝结而成,爆裂过程会看到红色的岩浆凝结后成碳状黑色。由于这样一个奇怪的形态没动态参考,即使有单帧概念图,金箍棒的各种动态和质感都只能在特效测试过程中慢慢发现怎样最合适。测试过程中导演也就一边看测试结果一边调整想法。最终导致这一系列镜头耗时相当可观。
3、耗时长除了最开始对最终效果概念模糊外,最大的问题是如何实现这些不同的效果。除了全是熔岩状态和剥裂接近常规特效,其他全是没有明确制作思路的镜头。最开始我想到的办法就是用流体解算。让流体整体凝结成金箍棒、外皮龟裂,生长、膨胀技术上都能实现时,却发现还有一个要命的精度问题。在一个隙缝里解算流体、让流体具有棱角分明的尖锐外形现有技术能达到的精度还远远不够。所以我后来大部分都用程序动画来实现,但动态方面每个效果做法各不相同。由于大部分模型都程序化重新生成过,所以材质纹理也都采用全程序化方式制作。
【裂缝】核心思路是用shader置换来控制裂逢和外皮移动,再将裂缝属性应用到ce上产生内部的光照。shader里的裂缝由一堆生长的线条控制。线条生长没法用pcfilter或attributbetransfer之类的简单算法来作匀速生长这样缺乏节奏。我先让这些线条计算出交叉和拐角的地方,当每条线被不断生长的cc属性激活时就会迅速生长或迅速停止生长。
?
金箍棒裂缝特写
【熔岩形成金箍棒】让一根光滑的梆子做成熔岩状态我想到个讨巧的办法,只需要把模型按不同强度加上重力方向挤压变形,多迭代几次就很像了,都不需要进solver。麻烦的是控制熔岩变回金箍棒的节奏,我用voronoise将金箍棒区块化,让每块在整体动画中又有局部变化。跟耳朵连接部分的动画用流体解算过,想要熔岩变长拉丝只需要把viscosity和surfacetension调大到合适的值就可以了。但这样的结果是拉出来的丝比较绵软缺乏弹性,所以加了一些额外的属性控制velocity让拉丝的熔岩一直保持绷直的状态。
金箍棒-熔岩形成过程
【膨胀】有一点小小的遗憾,就是所有镜头节奏都特别快,膨胀或收缩的过程都看不到。比如膨胀时外皮都有生长、分裂或新生外皮的动态,这些细节不逐帧仔细去看基本都看不到,但观众能感觉到金箍棒是在长大而不是简单的放大或缩小。膨胀时我是让每片表皮向外移
动,同时表皮边缘像细胞一样向周围扩张,如果扩张到一定面积时就自动分裂成两片或三片,如果相邻表皮间有超过阈值的缝隙时就会有新的表皮生长出来。最后这些表皮转换成vdb体积整合后再转换回poly进行渲染。
金箍棒-变大生长
4、所有金箍棒特效视觉上都没有一个大破碎或大洪水特效来得震撼,但这些都是直到现在给我挑战最大的镜头,因为它没有现成方法可巡。希望以后能接触更多这样非常规的异想天开的特效!