Nuke后期运动模糊解决方案5(DOC)

Nuke后期运动模糊解决方案5(DOC)
Nuke后期运动模糊解决方案5(DOC)

Nuke后期运动模糊解决方案

随着nuke的不断更新与完善,这个基于节点的后期合成软件逐渐吸引了越来越多的CG制作人员的目光,然而nuke相比较于fusion、AE、shake等,在插件方面和与其他三维软件的协作配合上还是有很多不足。例如在生成后期运动模糊上,fusion、AE都有“ReelSmart Motion Blur”这个商业插件的支持,能够生成迄今为止最接近真实的后期运动模糊效果,nuke由于出来的晚所以还没有得到很好的插件支持——据笔者最新消息,ReelSmart Motion Blur插件的nuke版本也已经发布了。不过商业软件毕竟是商业软件,是需要花钱去买的。为了能够更方便的通过nuke输出运动模糊,提升合成质量,笔者整理出一套免费的Nuke的后期运动模糊解决方案,输出效果如图1、2所示,具体的设置与操作步骤将在下文做详细讲解。

图1:无运动模糊

图2:nuke后期运动模糊

一、准备工作

这个方案的基本流程是使用mentalray渲染器输出运动矢量,然后在nuke中通过VectorBlur节点将原始图片序列与运动矢量序列进行合成产生接近真实的运动模糊的效果。因此需要带mentalray渲染器的三维软件(如maya、max、xsi或者mentalray独立版),nuke(4.7以上)以及相对应版本的shader_p(mentalray节点功能扩展包)。

Shader_p是什么?

Shader_p是由俄罗斯人Puppet开发的免费的mentalray节点包,里面包含一系列能扩展mentalray功能、提升mentalray效率的shaders,shader_p能够很好的工作在mentalray独立版以及主流三维软件maya、max、xsi里,并且shader_p支持以下若干操作系统平台:windows32、windows64、linux32、linux64以及macOSX,因此通用性很高。Shader_p 的各个版本可以在https://www.360docs.net/doc/b79107977.html,/download/index_e.shtml下载。

在本文中我们将使用Maya2009,配合shader_p中的p_motion_to_rgb这个shader来生成运动矢量信息,其他三维软件的操作方法类似,最后通过nuke5.1v5进行合成。

Shader_p的安装方法(maya):

1、关闭maya;

2、将shaders_p.dll(linux或者mac下是shaders_p.so)拷贝到“maya安装目录”/mentalray/lib目录下(例如:D:\Program Files\Autodesk\Maya2009\lib);

3、将shaders_p.mi拷贝到“maya安装目录”/mentalray/include目录下;

4、将所有的*.xpm文件拷贝到“maya安装目录”/icons目录下;

5、将AE目录下所有的的*.mel文件拷贝拷贝到“maya安装目录”

/scripts/AETemplates目录下。安装完成。

如果在渲染的时候出现类似如下错误:

“LINK 0.0 error 191007: cannot load C:\Program

Files\Alias\Maya7.0\mentalray\lib/shaders_p.dll, This application has failed to start because the application configuration is incorrect. Reinstalling the application may fix this problem.”

请安装“Microsoft Visual C++ 2005 SP1 Redistributable Package”。下载链接:Microsoft Visual C++ 2005 SP1 Redistributable Package (x86)

Microsoft Visual C++ 2005 SP1 Redistributable Package (x64)

二、maya输出运动矢量信息

1、确认安装好shader_p以后,打开maya的Hypershade,创建p_motion_to_rgb节点,将新创建的p_motion_to_rgb赋给运动物体,更改p_motion_to_rgb的Mode属性为Raster Space。如图3.

图3:p_motion_to_rg节点

2、打开Render Settings,切换渲染器为mentalray。将Image format更改为Maya IFF、TIFF或者OpenEXR格式,推荐使用OpenEXR,因其对32位浮点数据支持的最好。

3、切换到“Quality”选项卡,更改橘红色字体所示属性如下图4:

图4:mentalray的渲染设置

说明:

Shutter Open和Shutter Close都设置为1是为了只计算运动模糊的矢量而并不应用到所渲染的物体上。

Motion Steps设置为最低值1是为了最小化渲染复杂模型的计算量,类似的,Time Samples也可以设置为最低值1。

Custom Motion Offsets勾选的目的是为了能将Motion Back Offset的值设置为1。

Data Type设置为RGBA(float)4x32Bit是为了支持矢量信息超过0到1范围的情况,而p_motion_to_rgb生成的矢量信息是未经过归一化的,因此值常常会超过1或者少于0。

Shutter Open、Shutter Close、Motion Back Offset这三个参数都设置为1能够确

保物体在两个轴以上的旋转运动时,仍然能够得到完全精准的运动矢量信息。通常的输出运动矢量信息的方法是将Shutter Open、Shutter Close、Motion Back Offset都设置为0.5,这样的设置在某些场合会得到不完全正确的运动矢量信息,合成的时候会出现瑕疵。

渲染的抗锯齿级别和过滤器请设置为和你的最终原始图像渲染一样的设置!

4、设置完毕后渲染输出运动矢量信息,并输出没开运动模糊的原始图像序列,如图

5、6所示:

图5:不带运动模糊的原始图像

图6:运动矢量信息图三、进nuke合成

节点链接如图7所示:

图7:nuke节点网络

Copy1节点和VectorBlur1节点的属性设置如图8所示:

图8:Copy1节点和VectorBlur1节点设置

Mentalray渲染的纯三维运动模糊与nuke合成运动模糊的效果对比,如图9、10:

图9:三维与后期运动模糊的对比

图10:三维与后期运动模糊的对比

四、结论

本文中所使用的生成运动矢量的方法与bbrcn的博客文章“Mental ray Motion Blur 试解决方案和mip_motionblur mip_motion_vector shader”(链接:

https://www.360docs.net/doc/b79107977.html,/bbrcn/blog/item/17a3ef11c9a237c1a7ef3fb7.html)原理是类似的,最大的区别就在于本文的方法是支持矢量通道抗锯齿的,而以上链接的方法是直接提取了mentalray的framebuffer,因此和直接勾选输出z通道一样,是锯齿状的图样。这个差别在会对最终合成结果会造成些许影响。

本文中的nuke合成是基于线性工作流程(linear workflow)的,测试的结果一定程度上论证了线性工作的可操作性,笔者推测线性工作流程对于合成中提高校色质量和解决半透明物体偏黑偏白问题的解决应该存在非常重要的作用,这些将在今后的时间里继续试验论证。

另附上编写过程中基于sRGB色彩空间的节点流程图与效果:

图11:全部基于sRGB色彩空间(包括viewer)的节点合成图

图12:全部基于sRGB色彩空间(包括viewer)的合成效果(效果失真)

图13:全部基于sRGB色彩空间(包括viewer)的合成效果(效果失真)

相关主题
相关文档
最新文档