• 灯塔,大海,大风。Final.


    终于是把它做完了,吃了不少苦头,走了不少弯路,不过一切都是值得的,也收获了很多。

    最终结果虽然也有很多不足,可是它占用的时间和学到的东西还是成正比的,所以也就不纠结了。结果并没有预期的满意,希望以后再做这样的东西的时候能避免一下问题,争取得到最好的效果。

    先看视频吧。这个是最终效果,然后是流体的渲染对比,后面重复几遍最终版为了拖延时间得到Youku的HD转码(Youku这点就没有Vimeo好,Vimeo只要是够尺寸了,不管多长都是HD的,真麻烦)。

    这个是WIP视频,可以看到几乎所有的中间步骤。

    稍微详细说一下制作思路吧。

    首先是浪面的制作,这个我用到了一个叫DisplaceD的插件,它可以根据图片,函数和节点来驱动几何体的顶点的位置,具体用法和功能可以去Google一下,我就不细说了。我用Maya的Ocean贴图程序节点控制的浪的形态,大体觉得满意之后,我用soft modification工具应用到模型想制作浪的部分,对变形器进行Key帧,得到了卷浪的效果。很变态的一点是,你为了迎合它本身浪的形态,得反反复复地调节关键帧,而且用soft modification工具来关键帧也不是一个很好的办法,诡异的部分太多,你得多多感受才能调好。其他的比如晶格之类的,或者Blendshape也可以用,不过我还没尝试过,那样也许会更方便。这个就没什么说的了,力气活,手巧的活,谁手好使就能调出更好的东西,像素描一样。浪面做好之后,要在上面加上各类的粒子,第一个可以做那些浪尖经过之后产生的泡沫,我用的是粒子的办法,其实也可以用流体或者什么,你可以尝试,也许效果会更好。你只需要用贴图控制一下粒子产生的情况就可以,剩下的就是让粒子停留在表面上一会就可以。渲染之后就可以了。接下来要做的是浪尖“发射”出来的水花,这部分可能需要很多次的模拟,因为Maya一般承受不了300W以上的粒子,所以如果你要模拟1亿个粒子的话,就得模拟50次左右。从浪尖发射出的状况可以用表达式写出来,具体代码我就不提供了,详情参考Maya文档。为了配合浪的形态也得调一阵子,刚开始测试可以用很少的粒子,基本形态正确之后,再调到200W,很爽是吧。渲染可以用3Delight的Rib Archive功能或者相应的Pixar Renderman来渲染,Renderman处理粒子的速度还是很快的,效果也好。同样你也可以送到Max里用Krakatoa来渲染。

    我来说说这两个渲染器的利弊,熟悉之后你可以决定用哪个:

    Krakatoa的速度异常之快,可以说是粒子体积渲染的老大,功能也很齐全,有通道修改器这种东西,可以让你做任何你想做的东西。不过据我观察,它的粒子模式的渲染是一种类似或者就是Raster Space的计算,这种模式下10公里远的一个粒子和眼睛上粘着的一个粒子是一样大的。有时候这样会导致问题,近处的粒子会太小,如果调大,远处又太大。不过针对这个Krakatoa还有一种叫体积渲染的模式,这个模式下的粒子是云形态的,可以实现近处大远处小。不过我在制作的时候出现的问题是,体积渲染的模式无法进行抗锯齿处理,如果需要渲染遮罩的话,没有抗锯齿是多恐怖的事。

    Renderman(Pixar Renderman & 3Delight)处理点也是很不错的。而且可以写自己的DSO,如果你会的话。renderman处理大量的粒子也基本没有什么问题,渲染速度一般没有Krakatoa快,不过工作方式的不同可能会让你觉得它是更好的选择。用Renderman你可以渲染成多点,条状,单点,圆盘甚至metaball之类的粒子形态,对于不同的效果你有更多的选择。同样Renderman也能基本实现粒子的体积渲染,计算自身投影等。(严格来看Renderman的并不算体积渲染,只能说是把粒子当成物体来计算投影,而Krakatoa你可以看到是真正有体积感的粒子)

    回到制作上,根据场景不同你也许要制作各种不同形态的粒子,比如被风吹散的小水珠形成的烟雾,偶尔溅出的大水花,留在浪后面的水花等等。

    我看的参考是一个大浪打到灯塔上然后产生大量的烟雾,不过我在做的时候那个卷浪做的稍微小了,而且更快了点,虽然源素材的烟雾产生的也很不可思议,相比之下我这个还更不可思议一点,没办法,时间关系和流程关系,这个问题留到了后面,等彻底想改的时候也没有那么多时间改了,索性不改。烟雾是由撞击处发射的粒子产生的,烟雾是用Maya流体来做的,速度不快,可也没慢到无法接受。个人觉得Fumefx是优化过和修改过的算法,对于一些效果,在制作上显得很难处理,比如我想达到的效果。高手显然是可以搞定各种效果的,也许是我对Fumefx还不是特别的熟悉,也许是我对Max的操作无法忍受,导致还是选择了Maya流体。流体和灯塔有碰撞,效果不是特别好,而且和参考有很大差距,缺少耐心让我最终还是放弃了纠结地要完美地达到参考的效果,反正这样的也能接受就继续了。渲染之后发现细节不够丰富,所以又回到Maya用SOuP的Upres Fluid节点增加了一下细节,3倍的分辨率,Delta和Strength的调节特别的无助,每计算一帧就要二三十秒,视图刷新要半分钟。所以动一下鼠标就等1分钟的事情已经习惯了。后来终于是达到了一个满意的结果。你可以在视频中看到我那几个渲染的不同之处,自己感受,自己去做决定吧。

    合成没什么说的,体力活,针对不同的问题做的修改在这里也没法说了,只可意会不可言传了,只需要保证光线的统一,边缘的处理就基本没什么了。黑边是最可怕的敌人。给大伙上几个合成节点图吧。截图只能这样了,乱我也没办法……能看明白什么就算什么吧。

    最后的几句话,从开始做的时候一定要对质量严格把关,时刻想着后面的危机和问题。如果觉得不行,千万不要往下进行,除非你真的没有时间预算。这也是我对自己这次的经验的忏悔。开始的时候做足测试,想清楚流程,即使是画个流程图都不过分的,因为这种海洋,水的镜头,跨度太大,稍稍不注意就得推翻重来,谁都不想要那种结果。最后就是一定要多看参考,你想着是那样可是本来并不是那样的东西太多了,高效的关键就是随时看参考。还有,Maya文档最好一直放在任务栏中。

    Good luck.

  • 相关阅读:
    QtQuickcontrols2控件使用参考
    QT中VideoProbe的简介和实现
    基于qml创建最简单的图像处理程序(2)使用c++&qml进行图像处理
    在win和android上同时进行OpenCV程序设计
    QTQuick控件基础(3)视图
    ansible循环主机组
    ansible实现template管理变量
    ansible读写系统默认变量
    网络04端口号linux端口详解大全TCP注册端口号大全
    ansible任务委派小技巧
  • 原文地址:https://www.cnblogs.com/ovspianist/p/1898023.html
Copyright © 2020-2023  润新知