用户名 密    码

原理教程:影视动画渲染中的运动模糊(3)

来源:互联网 作者:未知 发布时间:2011-06-08 10:31:54 网友评论 0


Motion Vector是什么?
通常有两种Motion Vector信息,一种叫做Normalized Motion Vector,其经过归一化处理(normalized)将数值映射到0~1的范围内;一种叫Raw Motion Vector,所记录的数值代表像素的实际运动距离。本文所提到的Motion Vector一律指的是Raw Motion Vector。

一张包含Raw Motion Vector信息的图片通过使用两张灰度图并将这两张灰度图合并到一张图像上来记录场景中所发生的运动方向及强度。

其中一张灰度图通过记录物体像素在给定快门时间内在X轴向上的位移(水平运动)强度(单位为像素,负值代表沿着X轴向左运动,正值代表沿着X轴向右运动,绝对值大小代表运动幅度)并将这张灰度图写入图像的红色通道。

另外一张灰度图则通过记录物体像素在给定快门时间内在Y轴向上的位移(垂直运动)强度(单位为像素,负值代表沿着Y轴向下运动,正值代表沿着Y轴向上运动,绝对值大小代表运动幅度)并将这张灰度图写入图像的绿色通道;一般蓝色通道不记录任何信息。

这样形成的一张Motion Vecotr图像类似图20,我们看到的是一张带颜色的图片,实际上图片里存储的是每个像素在XY轴的运动强度和方向。这里的X、Y轴指的是在后期软件屏幕坐标下的X和Y轴。

在了解后期处理的矢量运动模糊的基本工作原理后,我们得知该方法的实现必须基于三个主要环节:

1.是必须生成不带运动模糊的图像;
2.是必须要有某种方法去获取运动矢量信息;
3.是必须能让后期软件正确地识别渲染器输出的运动矢量信息并进行运动模糊的图像处理操作。

第一个环节不是问题,任何一款主流的三维软件都能够胜任不带运动模糊的渲染工作;第二个环节需要了解所使用的渲染器是否支持运动矢量信息的计算及输出,据笔者了解,输出矢量信息基本上是每一个主流渲染器都拥有的功能,只是计算方式有所不同而已;在第三个环节上,据笔者所知,AE、Fusion、Shake、Nuke、Combustion、Toxik这几款后期软件可以原生识别或者通过安装商业插件来识别三维软件渲染的矢量信息。

实际的项目制作中通常会遇到的问题是:本项目适合用什么样的方法去实现运动模糊效果?要回答这个问题,我们首先要了解三维渲染的运动模糊(下文均简称为“三维运动模糊”)和后期处理的2D矢量运动模糊(下文均简称为“后期运动模糊”)各自的优缺点才能够根据项目具体情况来做决定,以下是优缺点分析。
 

1.三维运动模糊能够计算曲线运动模糊,后期运动模糊不能,而这在类似直升飞机螺旋桨的处理上至关重要。在处理剧烈曲线运动的情况下后期运动模糊问题显著。(图19、20、21)

\

图19

\

图20

搜索栏目