已阅读5页,还剩21页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
有关影视后期中的景深(Z通道)和运动模糊(motion blur)一些解决方案和插件(上)最近在做一个片子,涉及到后期加动态模糊和后期景深,在网上搜了一大堆资料,上篇先说说动态模糊:动态模糊:有关动态模糊主要受到了网上的一篇叫做运动模糊的原理以及在Mentalray与Nuke中的实践的文章的启发,这篇文章深入的讲解了运动模糊的原理和相关软件插件的使用。源地址链接/cg_mike/blog/item/e7953ddc47643cd68d102997.html,这里我彻底总结一下,运动模糊分为三种:1, 前期真实3D运动模糊(就是在三维软件里渲染时直接渲出运动模糊效果):这种基本不用,渲染太慢,而且如果是分层渲染的话对于后期合成造成不便(因为alpha都虚了不好合);2, 后期2D矢量运动模糊(经常用,因为只需要在三维软件中渲染出一套包含红绿通道的UV矢量信息图就可以,速度超快,而且后期软件有相关节点或者插件滤镜能够快速的识别,下面会以nuke为例说明,还有相关插件下载);3, 后期基于像素位移的计算运动模糊方式(经常用,不用输出2D矢量信息照样可以后期运动模糊,只要你的图像在动,这种方式是基于像素在画面中的的移动速度,软件自动计算出模糊效果,效果很棒!后面会以AE和nuke为例介绍相关插件);注:一些人说2D运动矢量比像素位移的计算方式更适合为一些运动幅度比较大的画面加运动模糊,一般是这样的(我试了下,除非运动特别快的画面,一般而言像素位移的方式相当给力,觉得比2D矢量好,就是计算稍慢点儿)。另外有些相机晃动很大的镜头也不适合用2D矢量计算,因为2D矢量计算的模糊是直线位移的,我试了下用基于像素位移的方式好多了,有些弧线运动也能体现出来。在这两种后期运动模糊的选择上最好三维软件里出一套2D矢量,进后期软件后可以这两种方法都试试看哪种好。这里我把上面提到的文章中的第二部分放出来,这里不全(因为原文是图片版的,文字版的这有这个阉割版的,所以我这里就粘贴这个了),上面那个链接里的内容全,直接点进去看就行了,他里面提到的shader_p扩展包以及mel后面有打包下载:Nuke后期运动模糊解决方案_post Motionblur workflow for 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的各个版本可以在/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 FilesAutodeskMaya2009lib);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 FilesAliasMaya7.0mentalraylib/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”(链接:/bbrcn/blog/item/17a3ef11c9a237c1a7ef3fb7.html)原理是类似的,最大的区别就在于本文的方法是支持矢量通道抗锯齿的,而以上链接的方法是直接提取了mentalray的framebuffer,因此和直接勾选输出z通道一样,是锯齿状的图样。这个差别在会对最终合成结果会造成些许影响。本文中的nuke合成是基于线性工作流程(linear workflow)的,测试的结果一定程度上论证了线性工作的可操作性,笔者推测线性工作流程对于合成中提高校色质量和解决半透明物体偏黑偏白问题的解决应该存在非常重要的作用,这些将在今后的时间里继续试验论证。另附上编写过程中基于sRGB色彩空间的节点流程图与效果:图11:全部基于sRGB色彩空间(包括viewer)的节点合成图图12:全部基于sRGB色彩空间(包括viewer)的合成效果(效果失真)图13:全部基于sRGB色彩空间(包括viewer)的合成效果(效果失真)看完了哈!我来总结和补充一下(一下都是以maya ,nuke,AE为例):2D矢量图:可以用shader_P出,也可以用mentalray隐藏的节点mip材质出,还可以用maya的renderpass出。推荐用shader_p出,因为只有shader_p出的矢量图是抗锯齿的,后面两种都是帧缓存中调出的,没有抗锯齿;还有就是mip我没有用过,不过DT有教程可以看下,我下面也会粘贴网上找的一篇文章,可以看下;再有是上面那篇文章提到的关于renderpass出的2D矢量会延后0.5帧,给后期合成带来不便,这些我都试了确实是这样的,如果非要想用就用它上面说的那个mel,我粘下来哈,setAttr mentalrayGlobals.exportMotionOffset 0; 恩就是它。这个mel怎么执行上面那文章说的挺清楚啦。下面就是网上找的mip出2D矢量图的方法,我直接粘过来,随便看看,有了shader_p我觉得没什么大意义。Mental ray Motion Blur 试解决方案和 mip_motionblur mip_motion_vector shader, 与nuke vector blur。基于Mental ray渲染Motion blur现在有几种解决方案: 3D o 纯3D Motion blur o Rasterizer 2D 后期o 在maya内应用mip_motionbur o 后期Motion blur, 通过Motion vector。纯3D Motion Blur 渲染的图片最真实,反射,折射,GI等都不会有问题。但是缺点是速度慢,为了提高动态模糊的渲染质量需要不断的提高sample 和 temporal sample 的值,占用大量的渲染时间。渲染速度和质量(sample)是成一种linear的关系。Rasterizer 优 点是速度快,比raytrace motion blur要快很多,能够很快的实现高质量的motion blur。它将shading和sample分开进行,极大的提高渲染速度。因为这种特点渲染速度和质量(sample)不是一种linear关系。另外 他的sample方式也与raytrace不同。但是由于这种方式的特点不适合对反射和折射要求较高的场景应用。渲染头发是应用这种渲染方式加 detailed shadow map。另外不适合应用fg,gi caustics,auto volumn, raytraced shadow, ray bending lens shader, reflect refract.2d,后期的motion blur是 基于二维平面的动态模糊。优点是节省渲染时间,三维渲染不需要渲染motion blur。调整快,可以说是实时的。在后期调整时非常灵活如果是渲染的motion blur如果有问题就需要到三维里重新渲染,在后期里调整就不需要。在后期里可以得到实时的反馈根据需要任意调整动态模糊的幅度。缺点是不准确不能模糊反 射折射的情况,不能有multisegment motion blur,动态模糊都是直线的不会有弧线的,另外后期软件对其支持也不禁相同还有很多限制。2d的motion blur主要是通过三维软件渲染motion vector通过后期软件调整。除了这种方式,Mental ray提供了一个output shader:mip_motionblur shader. 这个shader 通过利用motion vector 和 depth frame buffer对渲染出来图片进行处理。由于是集成于渲染器它的优点是拥有一些后期软件没有的功能。而motion vector shader主要是用于输出针对不同后期软件处理动态模糊需要不同motion vector图像而写的shader。对于3D motion blur,最重要的渲染速度而这主要是取决于整体的sample和temporal sample在maya内由time contrast 控制。这个参数是主要影响动态模糊速度的。mip_motionblur, mip_motion_vector具体应用方法。应 用这两个shader都需要将motion blur选项开启,但是要保证shutter interval 为零。看具体情况考虑,为了后期考虑有时应将物体停在shutter interval的中间这样方便向前后两个方向动态模糊。比如shutter open 是0 shutter close是1,在启用这个shader的时候要两个值都为0.5。即 shutter open 0.5 shutter close 0.5。这样会关闭motion blur但是会计算motion vector。同时将time contrast改为1,避免mental ray 作不必要的计算。这两个shader都是output shader 但是连到maya 2009 camera 的output shader里并不可用,只可以使用以前的链接方式。默认情况下此界面在camera attribut editor里是被隐藏的。方法倒很简单将output shader拖动到相机上选择 default 就可以了或者使用connectio editor 同时要启用 motion vectors, depth framebuffer。关于两个shader的具体参数,可以直接参看官方的production shader documents. 这里需要强调一下的是如果在nuke中作motion blur,首先需要将mip_motion_vector中floating point format 改为1, pixel threshold 最小要写0.001否则会有artifacts(图像某些不动的部分会有值)这个值是告诉mentalray多小的像素移动可以忽略不记。这样nuke的 vector blur节点才能正确读取mental ray 输出的motion vector信息。其他插件和软件对motion vector要求不一样,要看具体要求输出。使用 nuke 自己的 vector blur node 还是不能很好的模糊需要动态模糊的部分和背景同在一个rgb通道内的图像,如果需要动态模糊的部分外边没有rgb信息可以很好的模糊图像,如果有,效果没有reelsmart motion blur效果好,但是RSMB一样有些问题。暂时还不知道是不是我的设置有问题。5.1v2 的vector blur结点坏了,foundry已经确认,下个版本修正.不用试了。看完了哈!下面主要说下shader_P的方法,maya为例啊,别的没用过。首先,renderlayer里分出来一层专门用于出动态模糊,如图:然后打开材质编辑器找到p_motion_to_rgb和surface shader,把前者拖到后者的outcolor上,完成连接如图:然后把surface材质赋予motionBlur这一层的所有物体就可以了。下面是render settings中的相关设置了,设置前要保证Quality选项卡被点过一次,并且common下的格式要选择支持32bit的图片格式(如:exr,iff,tga)你可以参照上面那篇文章说的那样设置:或者你执行它那个mel也行,就是这个:/-对于maya2009及以上版本:本mel在运行之前最好确认mentalray渲染器的Quality选项卡已被点击过一次(让maya加载mentalray入内存)/-对于maya2008:请运行本mel两次即可完成设置(中途会报错,可以无视)/设置渲染图片的名称setAttr defaultRenderGlobals.imageFilePrefix -type string (+_MotionVector);whatIs changeMentalRayImageFormat;/设置mentalray渲染格式为exrsetAttr defaultRenderGlobals.imageFormat 51;setAttr -type string defaultRenderGlobals.imfPluginKey exr;/设置渲染器为mentalraysetAttr defaultRenderGlobals.currentRenderer -type string mentalRay;/设置运动模糊模式为“full”setAttr miDefaultOptions.motionBlur 2;/设置快门及MotionBackOffset参数用于产生的运动矢量能精确匹配原图setAttr miDefaultOptions.shutterDelay 1;setAttr miDefaultOptions.shutter 1;setAttr mentalrayGlobals.exportMotionOffset 1;/设置渲染格式为RGBA(Float)4x32BitsetAttr miDefaultFramebuffer.datatype 5;/减少计算量的参数setAttr miDefaultOptions.motionSteps 1;setAttr miDefaultOptions.timeContrastR 1;setAttr miDefaultOptions.timeContrastG 1;setAttr miDefaultOptions.timeContrastB 1;setAttr miDefaultOptions.timeContrastA 1;我个人觉得这个mel不好用,很致命的一点是,没有层的优先设置,运行这个mel一下子,所有层都设置成一样的了,所以我不用,我自己写了一个,你可以用这个:/执行此mel前要确保Qulity点过一次,使mentalray载入缓存/自己写的mentalray Quality下的设置/此mel没有格式的修改,需手动修改editRenderLayerAdjustment miDefaultOptions.motionBlur;setAttr miDefaultOptions.motionBlur 2;editRenderLayerAdjustment miDefaultOptions.shutterDelay;setAttr miDefaultOptions.shutterDelay 1;editRenderLayerAdjustment miDefaultOptions.shutter; setAttr miDefaultOptions.shutter 1;editRenderLayerAdjustment miDefaultOptions.motionSteps; setAttr miDefaultOptions.motionSteps 1;setAttr miDefaultOptions.timeContrastR 1;setAttr miDefaultOptions.timeContrastG 1;setAttr miDefaultOptions.timeContrastB 1;setAttr miDefaultOptions.timeContrastA 1;editRenderLayerAdjustment mentalrayGlobals.exportCustomMotion; setAttr mentalrayGlobals.exportCustomMotion 1;editRenderLayerAdjustment mentalrayGlobals.exportMotionOffset; setAttr mentalrayGlobals.exportMotionOffset 1;editRenderLayerAdjustment miDefaultFramebuffer.datatype;setAttr miDefaultFramebuffer.datatype 5;我这个mel都对当前层做了优先设置,你可以做成mel小工具点一下就行,但是mel中没有渲染质量和图片格式的设置,这个需要你自己设置,因为这些因人因项目而异,项目不同要求的不一样。 设置好这些就可以批渲染了,输出的图像是抗锯齿的哦!三维输出2D运动矢量基本就说这么多,下面该进后期了,nuke为例(AE也行,还没试,感觉nuke很给力),nuke默认的节点VectorBlur的用法上面那篇文章说了,这里不重复了。 一下是我从shader_p官网找到的p_motion_to_rgb节点的帮助,其实上面的rendersetti
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 畜牧业设备采购核准表
- 航空会员账户管理办法
- 2025年度水利工程项目承包合伙合同3篇
- 科技园区房产交易合同
- 建筑工程项目担保细则
- 医疗设备招议标管理办法
- 国际石油勘探招投标详解
- 翻译服务业机构装饰施工合同
- 长途客运司机招聘合同样本
- 智能化煤矿配件管理未来趋势
- 2024-2030年中国高密度聚乙烯管道行业发展展望与投资策略建议报告
- 2024-2030年中国醋酸乙烯行业运营状况与发展风险评估报告
- 2024年新能源汽车充电停车位租赁及维护服务合同3篇
- 广东省广州越秀区2023-2024学年八年级上学期期末数学试卷(含答案)
- 2023-2024学年贵州省遵义市新蒲新区八年级(上)期末数学试卷(含答案)
- 2023医疗质量安全核心制度要点释义(第二版)对比版
- 2022届河北省石家庄市高一上学期期末考试化学试题(含解析)
- 2025年日历台历中文版纵向排版带节假日调休周日开始
- GB/T 19923-2024城市污水再生利用工业用水水质
- 25题电控工程师岗位常见面试问题含HR问题考察点及参考回答
- 基于51单片机电子秤设计
评论
0/150
提交评论