Houdini配合Arnold制作大型复杂的植被流程研究 - 纳金网
联系我们

给我们留言

联系我们

地址:福建省晋江市青阳街道洪山路国际工业设计园纳金网

邮箱:info@narkii.com

电话:0595-82682267

(周一到周五, 周六周日休息)

当前位置:主页 > 3D教程 > 图文教程

Houdini配合Arnold制作大型复杂的植被流程研究

来源: 未知 | 责任编辑:嘀咕 | 发布时间: 2017-07-25 14:53 | 浏览量:

本节汇宝盆为大家带来的是,Houdini配合Arnold制作大型复杂的植被流程研究
最近一直在研究一套高可控、高效率的制作大面积植被的流程来配合Arnold这款渲染器做渲染,目前商业化的插件比如 Speedtree,Max Multiscatter都可以实现此类功能,包括Vue,但其可控性来说还是有限制,能够实现的效果也有一定的局限性,因此笔者研究一套关于使用 Houdini配合Arnold来渲染制作植被的流程(上图实际渲染分辨率为4k,由于限制问题,此图为1k分辨率)。

众所周知,使用代理分布是实现宏观场景的有效办法之一,Arnold也提供了相应的功能,Archive,在Max平台 下有类似于 Multiscatter功能的插件可以高效的分布代理,而市面上也提供了大量的Max场景的植被库文件,因此想要在Arnold这个渲染器下使用,就得 将max文件转换成通用数据格式,比如Obj、Fbx或者Abc,然后制作成Ass文件作为Arnold代理物体,这里笔者将跳过转换的过程,转换后导入 Maya的结果如下图:

Houdini配合Arnold制作大型复杂的植被流程研究

这是从Max库文件里导入Maya后的显示,下面我们来做一些渲染测试对比(笔者使用的8G内存和I7 2670QM):

Houdini配合Arnold制作大型复杂的植被流程研究

渲染出来的结果接近4个小时,使用的是默认的标准材质,开启了Backlight和SSS,渲染缓慢原因是由于大量的树叶带有透明贴图,这不是 Arnold的优势,因此只要将透明贴图的物体转换成实体的模型就可以解决问题,但经过笔者测试以后发现,其转换后的数据量大的惊人,可以达到2个多G的 数据,即使转换成Ass文件也非常大庞大,此时笔者想到了用粒子或者点来代理这些树叶,经过测试结果是理想和可行的,那么如果具体操作呢?其实转换的过程 很简单,就以一片树叶为例,如下图所示:

转换所涉及的问题无非就3点,位置,大小和朝向,在Houdini下朝向可以用N(法线)来代替,这里我们简化说明方 式,用0、1、2、3来替代说明 Point1、2、3的位置,用”-”替代说明减法,下面我们具体说下这个算法,用(0-1)/2获得位置信息,用0-2叉乘0-1得到一个法线矢量,通 过Length(0-3)获取树叶大小信息,在Maya里也可以通过表达式去计算,粒子属性里有Aim属性(这是可以利用的),回到之前的话题,通过计算 后这样就可以完美转换成实体模型,其结果如下图:

实体模型是通过Trace这个节点实现的,如果有Houdini使用经验的话,应该熟悉这个节点,这里不是我们讨论的重点,回到之前的话题,我们能转换一片树叶,那么剩下的事就是交给程序自己去跑,将所有树叶都转换成Point点信息,其结果如下图所示:

Houdini配合Arnold制作大型复杂的植被流程研究

有了这些点信息,我们就可以做代理使用了,这里笔者提供一个小的Maya测试场景说明这个方法的可行性,使用方法:

1.打开默认提供的场景
2.执行Mel后将弹出窗口
3.Leafs物体添加窗口演示1中
4.将Instance_leaf物体添加如窗口2中
5.点击Creat Tree

下载地址:http://pan.baidu.com/share/link?shareid=2938422260&uk=3375094246

(ps:这个脚本是笔者早年写的,后续没有继续优化,只在这里作为透明贴图物体转粒子代理的一个思路说明,后续会用其他方式在一套解决方案里提供)

注意:对于脚本的使用,vfxinfo网站包括原作者ArthurChiu在内不承担任何后果,请按需自行使用,在使用前请备份好您的原始文件,以免给您造成不必要的损失.转载请注明作者与出处!!!

下面我们在Maya里做渲染对比测试下,先导入代理好的场景,显示结果如下图:

Houdini配合Arnold制作大型复杂的植被流程研究

下面进行渲染测试,结果如下:

Houdini配合Arnold制作大型复杂的植被流程研究

渲染时间为8分钟左右,无论质量和速度,实体模型都高于透明贴图,这个流程比较适合Arnold这个渲染器,下面我们来制作一片树林的效果来分析和测试下,笔者已经制作好了代理的物体,如下图:

Houdini配合Arnold制作大型复杂的植被流程研究

Houdini配合Arnold制作大型复杂的植被流程研究

图A和图B是Houdini下显示的分布代理图,导入Maya后的显示结果为:

Houdini配合Arnold制作大型复杂的植被流程研究

下面进行渲染测试:

Houdini配合Arnold制作大型复杂的植被流程研究

渲染时间为40分钟左右,这里使用的是嵌套代理,笔者发现在使用嵌套代理的时候,Color属性是无法像Xform一样被继承的,因此需要考虑其他的解决 办法,以后再做这块的讨论,这里还是比较传统的代理来制作静态的场景(物体没有动态效果,非摄像机运动),下一部分我们将来讨论有关动态效果的代理制作流 程。

因为是要做动态的代理,因此需要动态的库文件,Max自带的库文件很少带有动态数据(没有动画数据),为此笔者选择自己制作带有动画的植被文件,考虑到圣诞将至,就以松树为选题,下面是一些实拍的参考图片:

Houdini配合Arnold制作大型复杂的植被流程研究Houdini配合Arnold制作大型复杂的植被流程研究Houdini配合Arnold制作大型复杂的植被流程研究

笔者通过观察和研究,最终决定用实体代理方式来分布针叶,又考虑到机器配置限制问题,不能每一个针叶为一个实例,须用多 簇针叶为一个实例来进行分布处理, 然而这样的做法会降低还原度,每一个针叶都应当有不同的属性,比如颜色,如果用多簇针叶的做法显然会降低生物多样性的特点,笔者选择通过 SpeedTree来生成动态的松树模型,在制作时,为了达到比较好的动态效果,模型的还原度就必须较高,笔者在现有的16G内存下所能达到的极限如下图 展示:

Houdini配合Arnold制作大型复杂的植被流程研究

树干和枝干

用于替换的树叶局部显示

导入到houdini后,显示如下:

Houdini配合Arnold制作大型复杂的植被流程研究

在没有替换针叶前,场景的模型数量为

下面,我们来为针叶做替换和代理处理,和此前方法一样,通过前面提到的替换方法,将所有面片的针叶替换为实体的针叶模型

Houdini配合Arnold制作大型复杂的植被流程研究

替换的实体针叶模型,模型的参考信息这里我们记下27个面数,以作数据分析使用),替换后单一模型显示如下:

全部针叶转换后的参考点如下:

点数为45万个点,然后和之前的27相乘,得到1218万左右的针叶面数,如下图所示:

Houdini配合Arnold制作大型复杂的植被流程研究

下面是树干的参考显示:

Houdini配合Arnold制作大型复杂的植被流程研究

模型的数量在下面我们来对比下数据,转换前模型的总量在72万左右,转换后模型的总量在1246万左右。

接下来,我们分别导出树干和针叶的ass代理文件,因为是要做动态的,所以需要逐帧导出ass文件,而在制作带有动画的 代理时,最麻烦的问题在于其运动模 糊不能程序化的生成插值信息,因此这里笔者采用的办法是导出带有运动模糊信息的ass文件,当然制作模糊的办法可以放在后期来做,笔者这里只是一种极端测 试而已,这种方法最大的问题在于修改问题,不可能每做一次修改,就重新生成ass文件,这是非常耗时的,因此在实际项目中,如果需要导出带有模糊信息的 ass序列文件时,最好在previs中就测试好镜头和模糊值(包括和后期的配合),当然这种流程不一定是最正确和有效的(如果有更好的办法,也希望大家 一起讨论……)

接下来,就是渲染,渲染参数Sample AA 12 其余为1,尺寸4096*2160。场景设置如下:

Houdini配合Arnold制作大型复杂的植被流程研究

Houdini配合Arnold制作大型复杂的植被流程研究

下面是渲染的局部细节图:

Houdini配合Arnold制作大型复杂的植被流程研究

Houdini配合Arnold制作大型复杂的植被流程研究

Houdini配合Arnold制作大型复杂的植被流程研究

此渲染用了接近10G内存,使用默认标准Shader,灯光没有做细节的调式,只做渲染参考,下面是渲染的动态预览

此次渲染带有运动模糊,针叶的采用的是Xform运动模糊,枝干采用的是Deform运动模糊,导出带有模糊信息的Ass文件在Maya里有严重的Bug,因此笔者通过重新计算得出正确结果(在上一篇中有具体提过),下面是开启和关闭运动模糊的对比图:

No MotionBlur

Houdini配合Arnold制作大型复杂的植被流程研究

With MotionBlur

Houdini配合Arnold制作大型复杂的植被流程研究

小结:通过测试,此方法适合大型项目的 特写镜头,代理的数量不宜过高,上百万级别的代理内存上开销也比较大,这个和代理模型的复杂程度关系不大,而是和程 序有关。因此在表现大场景的时候尽量减少代理的开销,目前由于是Archive机制的方法导入Arnold进行渲染,在内存管理上,一旦光线碰到 Boundingbox时,会将场景全部加载,内存也会大量的增加,所以此类方法还有优化的潜质。

总结一下,既然是配合Arnold做渲染,那么需要注意的是:

1.Arnold在透明贴图使用上目前内置的Shader无法提高效率,因此在制作的时候切忌大量使用透明图。 

2.Arnold采用的是蒙特卡洛算法 的渲染器,也没有光子图,因此更适合做动态场景,这样才能发挥其大场景渲染的优势,上面渲染的所有图片只是测试而 已,没有再对效果进行深入的调节,因为这里讨论的是制作流程,有人会问一个简单的代理为什么要在Houdini下做呢?其实就是为了高度可控,在 Houdini下可以修改代理的任何属性并传递到Arnold里,并且可以实现更加复杂的代理动态效果,比如树叶的掉落、万箭齐发、千军万马等,这些技术 笔者会陆续更新出来,敬请期待…………。

最后附上一些实际案例:

Houdini配合Arnold制作大型复杂的植被流程研究

Houdini下载推荐:Houdini12破解下载
其他Houdini教程推荐:Houdini 经典FirstSteps系列教程 2
 


相关文章
网友评论

您需要登录后才可以发帖 登录 | 立即注册

关闭

全部评论:0条

推荐
热门