最近看过此主题的会员

3DMAX学习专区
返回列表 发帖

[影视后期] After Effects教程_让画面更逼真!详解在后期软件中制作运动模糊效果

让画面更逼真!详解在后期软件中制作运动模糊效果 众所周知,在三维软件中渲染运动模糊效果是极其耗费渲染时间的事情,但是运动模糊这种视觉效果在有较快运动物体的三维短片中却起着相当重要的角色。那么如何又快又好地实现运动模糊对于制作三维短片的工作者来说则是一个重要的课题。
这一次分享的制作经验,使用三维软件为Maya,使用渲染器有VRay和Mental ray;使用的后期软件有AE和Nuke,基本涉及了大家平时习惯使用的主流软件,满足不同人群的需要。
本文以及录制的视频结构,会分为理论部分和操作部分两大块。对于不熟悉这些概念的朋友来说,可以先从理论开始看起,了解一下运动模糊的来龙去脉,以及我们在做动画的时候,运动模糊是非常有必要的。因为考虑到要照顾不了解的朋友,所以理论部分依然是讲解得极为细致、深入浅出。
对于已经比较熟悉了的朋友,可以直接查阅自己使用的渲染器和软件对应的后期操作部分。
理论部分:
我们先来做个小试验:抬起你的手,在你的面前快速摇晃,那么现在你看到的是什么?是你的手,是的,但不是平时看到的那种,而是带着拖尾的,有虚影的手。你所看到的这种现象,就是运动模糊。
不论是通过肉眼观察,还是通过相机拍摄,我们总是能够观察到这样一种运动模糊的现象。可以说,它是普遍存在的一种视觉现象。
产生的原因也很简单:当光进入人的眼睛或者镜头,会形成一个反映现实场景的“象”。我们的眼睛或者镜头,接受光都是有一个节奏的,会接受一下,不接受一下,即是说,我们看到的画面其实是断裂的一张一张画面,并不是我们通常以为的连贯的动态。只是这些断裂的画面,会被我们的大脑理解成一个运动的过程而已(视觉暂留现象)。
假设我们每次观察最短持续时间是0.01s,在这0.01s里,有个小球从a点跑到b点;如果小球跑的很慢,a点和b点几乎重合,我们眼中的小球就比较清晰;如果小球跑的很快,a点和b点离得很远,那么我们看到的小球,每一张画面,都是一条从a到b那么长的拖影。

1.jpg
2015-3-16 14:54


2.jpg
2015-3-16 14:54


3.jpg
2015-3-16 14:54

如前文所说,运动模糊是在现实生活中随处可见的现象。为了让我们做的片子视觉效果真实可信,合理的运动模糊是必不可少的。
我在这里再举一个例子让大家更深刻地体会这一点。我们都知道,一般动画或者电影用的帧率是24fps,即每秒钟播放24张静止的图片,连着播放看起来就像是动态的画面。但是,在游戏中呢,一般的帧率要尽量保证在60fps,即每秒钟播放60张静止画面,如果低于这个数值,哪怕是40fps,玩家也会觉得卡得动不了。这里似乎就有冲突了,为什么动画用24fps觉得很流畅,而游戏必须要60fps才行呢?两者差这么多。
聪明的朋友在这里估计已经猜出个大概了。原因确实是在于运动模糊。一般的电影拍摄,因为使用的硬件设备,是必然会有运动模糊的。动画片,制作精良一点的,也都会有运动模糊,包括二维动画,甚至漫画,你看到的所谓的速度线,其实都是运动模糊的艺术化处理手法。
但是在游戏里,因为机能限制,早些年根本没有运动模糊这种东西的。直到近几年,一些3A大作,才慢慢普及了运动模糊。而这个时候你就可以去观察一个现象,当你开启游戏里的运动模糊效果时,就算你的画面帧率降到30fps,你也不会觉得卡。我也是以前在玩《蝙蝠侠:阿甘之城》的时候第一次观察到这个现象,后来经过仔细思考得出这样的结论,最后又查到一些资料论证了我的猜测:运动模糊可以降低画面帧率而感觉不卡。
那么运动模糊怎么会有这种奇效呢?首先,人眼每秒钟可以接受60张左右的画面,所以,游戏画面设置在60fps看着不会卡。那动画和电影的24fps+运动模糊怎么就不卡?是因为电影里的一帧,因为有运动模糊,涵盖的信息量其实是包含一个片段,而不是只有一个静止状态的。再回想下上面的图片,小球从a点到b点的运动,很快的时候,运动模糊包含的信息是a到b这一段距离,而如果没有运动模糊,你只能取一个点,可以想象,画面就会断断续续,就会卡。所以说,动画和电影,虽然只有24fps,但因为有了运动模糊,却可以涵盖整个运动过程的全部信息,所以看着不会卡,甚至很舒服。而如果你做动画的时候,不加运动模糊,想一想用24fps去跑的游戏吧,画面效果不忍直视啊。
包括在三维软件中直接渲染运动模糊,它会给你在两个最小时间帧里继续细分时间,把之间的画面也给你渲染出来,然后经过一些差值的算法得到一个模糊的过程。所以,这里也印证了,运动模糊可以涵盖掉一整段的运动信息。同时也说明了,为什么三维软件里直接渲染运动模糊,渲染时间会成倍上升了!
到这里,理论知识就算大概普及了。感谢大家又看我啰嗦了一大堆,相信大家有耐心看完的,都已经意识到运动模糊在动画里是有多么的重要了!不要走开,之后是更精彩的实际操作。
实际操作部分:
1)在Mental ray中做准备
首先我们讲讲如果使用Mental ray的话,操作方法应该是怎么样的。Mental ray中有三个跟运动模糊有关的通道,分别是2D Motion Vector、3D Motion Vector、Normalized 2D Motion Vector。到底选择哪一种,要根据你使用的后期软件来决定。如果是使用AE,那么就要使用Normalized 2D Motion Vector;如果使用的是Nuke,那么就要使用2D Motion Vector。而3D Motion Vector要在哪里用,我也是没有查到。
我做了一个简单的场景来讲述如何使用这些通道。   
4.jpg
2015-3-16 14:55

5.jpg
2015-3-16 14:55

6.jpg
2015-3-16 14:55

7.jpg
2015-3-16 14:55

   2)Motion Vecotr通道所代表的含义
那么这些红红绿绿的motion vector通到底是什么意思呢?其实他们只是用图片来装载信息,图像本身并没有识别的意义,有点像法线贴图的意思。用Normalized 2D Motion Vector通道来说吧,首先蓝通道是不会使用的,所以蓝通道里装什么都没关系,默认情况下,蓝通道会填充满50%的灰,或者在某些软件里也会完全舍弃,变成0;红通道和绿通道的默认值也是0.5,当某个像素的红通道数值小于0.5的时候,软件会理解这个像素向左跑,数值越小跑的越快;当某个像素的红通道数值大于0.5的时候,软件会理解这个像素在往右跑,数值越大跑的越快。同理,绿通道是数值大于0.5向上跑,小于0.5向下跑。取值范围当然在0到1之间(或者用ps的理解是0-255)。
上面是我在AE中的截图,AE将Normalized 2D Motion Vector的蓝通道舍弃,全部为0。于是,如果一个图片上没用东西动的话,颜色应该是(0.5,0.5,0)或者(128,128,0),即是你看到的大面积的黄色,有些地方又有些别的颜色,则表示在进行一些运动。
对于Normalized 2D Motion Vector通道来说,我们还可以对图片进行一定程度的分析来理解它的含义。而2D Motion Vector通道则更难理解,因为它不像Normalized 2D Motion Vector通道一样,取值范围在0到1之间。2D Motion Vector没有取值范围,保存的是浮点数据,可以理解为,可以容纳无限大的数值,也可以容纳无限小的负数!是的,2D Motion Vector有些地方其实是负值,所以,正常人看图片是无法理解这张图的含义的,它只能拿给计算机去计算用。
那么Normalized 2D Motion Vector通道和2D Motion Vector通道又有什么区别呢。所谓normalized,翻译过来叫做标准化,在计算机领域里,一般都是指把某一个范围的数值映射到0到1的范围之内。比如说,你的最小值为-500,最大值为500,normalized以后,最小值变为0,最大值变为1,原来的0变为0.5,原来的250变成0.75,原来的-250变成0.25了。所以,这两个通道承载的内容其实是没有本质区别的,只不过数值分布的空间不一样。而不同的后期软件有自己对数值的偏好而已。
3)在AE中合成你的motion vector通道
在AE中我们要使用一个叫做rsmb(real smart motion blur真的聪明运动模糊)的插件来实现运动模糊效果。这个插件可以识别我们渲染出来的motion vector通道。具体的操作是你对你的颜色层使用RSMB插件,在跳出来的属性面板里,使用的图层选择你的Normalized 2D Motion Vector通道,max displace(最大位移)的值跟Maya中的数值要一致,一般默认为256,blur amt(blur amount模糊程度)的数值默认0.5,这个数值你可以理解为运动模糊效果的强度,越大越强,别的就不用考虑了。
运动模糊本身的设置是只有这么简单,现在我们已经可以得到不错的结果,但是还是有很多的问题等待我们去修正。
比如说,这个案例里,我做了一个小球跳动的动画,同时摄像机也用运动,但是在后期做运动模糊的时候,却只能看到小球模糊了,而别的东西都没有模糊。观察2D Motion Vector通道也会发现,只有球有运动信息,别的地方都没有。这种效果当然是不正确的。
8.jpg
2015-3-16 14:55


9.jpg
2015-3-16 14:55



4)如何正确使运动模糊通道记录摄像机运动信息

那么该怎么修正呢?很简单,在Mental ray中,你的primary renderer默认是raytracing,这在大部分情况下都是很好的,但是对于我们现在这个案例,却会导致我们的运动模糊通道不计算摄像机的运动。所以,我们得切换到scanline扫描线作为我们的primary renderer。虽然说是扫描线,但是需要使用光线追踪的地方,mental ray还是会使用raytracing去计算的,不用担心渲染不好反射折射这些。大多数时候我们改成scanline都不会有什么影响的,只是在这个案例里你必须改成scanline才能记录摄像机的运动信息。
10.jpg
2015-3-16 14:55


在Maya2013版本以及其以前的版本中,这个指令在features标签栏下面的primary renderer里选择。但是在Maya2014和Maya2015版本中,这个选项转移到了quality的legacy options里面了,默认还不能勾选,你需要把sampling mode改为legacy sampling mode才能勾选。勾选了以后渲染出来的motion vector通道就正常了,并且在后期做的运动模糊效果也正确了。
11.jpg
2015-3-16 14:55

12.jpg
2015-3-16 14:55

13.jpg
2015-3-16 14:55

5)如何分层渲染运动模糊通道
除此之外,还有一些别的问题。我做了一块透明的挡板,当我的主体,运动的球体,从透明的挡板前面跳过的时候,出现了明显的错误:被遮挡的部分运动模糊的强度远远不够。

产生这个错误的原因是,运动模糊通道只会记录模型上的点的位移信息,不会考虑你这个东西是不是透明的。于是,被挡板遮住的球体,运动信息会继承静止的挡板,于是就出现了不正常的模糊效果。
14.jpg
2015-3-16 14:55

另外,在某些帧也会看到,快速运动的球体,边缘的模糊效果会有一种割裂感,明显看着不对劲。
那么产生这个问题的原因又是什么呢?主要是我们现在的做法,直接对一个颜色层做运动模糊效果,球运动的速度和地面运动的速度差异非常大,后期软件在计算这种运动速度差别很大的物体叠在一起的情况的时候,处理的效果往往很糟糕。
那么该怎么解决?解决这两个问题的方法是一致的:对场景中的物体进行分层;地面一层,快速运动的球体一层,透明的挡板又一层。然后分开做运动模糊效果。这样,每一个单独的物体都会得到自己正确的运动模糊效果,并不会相互影响而出现图中所示的拙劣的计算结果。最后再把它们合成成完好的结果。








分享到: QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友

返回列表

站长推荐 关闭


原画插画教程_《哥特.lovelive.南小鸟》CG插画角色教程

原画插画教程_《哥特.lovelive.南小鸟》CG插画角色教程


查看

无觅相关文章插件