PDG到底是啥玩意?——全面解析Houdini 17.5发布会

PDG到底是啥玩意?——全面解析Houdini 17.5发布会

想必大家已经看出来了,Houdini 17.5其实就干了这么一件事——推出PDG。在SideFX长达100多分钟的发布会上,花了足足80分钟的时间来讲PDG,剩下的20分钟草草带过一些零碎的小功能升级。SideFX的产品总监Cristin Barghiel讲到,PDG并不是Houdini 17发布以来时隔五个月问世的产物,而是花费了3年零5个月,由SideFX众多研发人员一齐努力,在今天终于成熟,才得以问世的,一个具有时代意义的流程任务管理系统。

那么很多人一定一脸懵逼,PDG到底是个啥?今天我们就跟随SideFX发布会,一起来一探究竟。

PDG——Procedural Dependency Graph,字面翻译为程序化依赖图表。

它的设计灵感源自于两大方面:电影特效和游戏。

PDG=所有的任务及其中蕴含的依赖关系。是高于OBJ、ROP、SHOP、CHOP等层面的,由此诞生了一个崭新的模块——TOP(Task OP)。PDG是一个独立的API接口,而TOP是类比传统SOP、DOP等模块的一套节点系统。Houdini 17.5包含所有的PDG和TOP。

▌PDG在解算和渲染流程的应用

传统的ROPs模块,包含解算和渲染两道工序,我们首先需要做动力学解算,缓存完毕后再去进行最终的渲染。也就是说,解算和渲染是存在先后顺序的。

(第一行示意解算,第二行示意渲染)

我们来看这里面存在的依赖关系,解算是基于上一帧的,因此只有第一帧计算完成,才能继续进行第二帧,然后第三帧,第四帧,依此类推……而渲染就不一样了,帧与帧之间不存在依赖关系,因此只要硬件资源足够,所有帧可以无序进行。

如何更高效的处理这其中的依赖关系,从而最快速地完成解算和渲染这一流程呢?我们看上图,当解算第一帧完成后,渲染第一帧的任务可以执行,然后解算第二帧,渲染第二帧……直到最终完成。理清这层依赖关系后,我们来看如何在PDG中实现。

一个非常基础的烟雾解算和渲染,在TOP模块中新建一个解算节点和渲染节点,点击“输出所有”后,可以直观地看到绿色的小点点从左向右跑动,一个点代表一帧,你还可以在某个点上面按鼠标中键查看那一帧的渲染图。这一流程非常直观且高效地呈现在艺术家面前。

流程之间每一帧的依赖关系可以通过鼠标的点击清晰展现,并在视图看到相应结果。

可以更进一步的加上一个ffmpeg输出预览视频的节点,“waitforall”代表等待上述全部完成后执行的意思,这样,点击“输出所有”后,从解算到渲染,到最终的输出预览视频,一气呵成。

▌PDG在wedge流程的应用

wedge节点用于更改某个参数多次,然后分别输出相应结果,比如改变box的宽度,从1到10,然后输出这10种形态。有了PDG,wedge流程更加强大直观。

你可以通过点击每一个小点,查看每一次wedge的属性,直接可以在视图中看到每一次wedge的形态。

加多个wedge,实现N种不同的组合。

进步完善这个流程,首先wedge出N种形态,然后渲染它们,最终合并到一张图中用于对比。整个流程一气呵成。

一键获得上图所示的效果。

更进一步,加上动力学解算的流程,在每一个形态的墙生成后,用小球撞击解算,然后渲染,然后合并输出montage图。

最终一键得到上述效果。

更进一步,在刚体解算完成后,加上烟雾解算。整个流程变得更加复杂了,但有了PDG,一切都尽在掌握。

点一下,出去喝杯茶,回来收图,25种不同形态,一口气扔给客户。

客户:“我们想要做一个模型,有点像贝壳,又有点像帆,能不能多出点效果看看?”

Houdini 17.5 PDG用户:“好的,我给你出5000种。”

PDG让多种形态的生成变得可控、高效。

适用范围非常广泛,可以适用于贴图wedge流程。

甚至,流程中引入外部软件,将贴图使用subtance designer烘焙后使用mantra渲染,然后导入PS生成montage图。由于PDG是一个接口,因此不局限于Houdini软件,你可以运用它到任何想得到的地方!

▌PDG与SOP无缝衔接

这里是很多不同形态的资产,我们可以使用TOP系统生成资产库。

然后,通过TOP系统随机载入不同形态的植株,与SOP无缝衔接,并可以直接在窗口绘制它们。还可以切换显示高模和低模,以提高效率。

▌PDG与流程管理

PDG是一个高效的流程管理系统,在整个CG流程中可以发挥非常重要的作用。例如上图的镜头,不同的部门需要拿到的文件不一样,动画组需要绑定和模型,特效组只需要动画缓存文件,而灯光组需要拿到整个场景的材质贴图文件……

使用PDG,将镜头信息导入进来,然后根据类型分成不同的资产,再根据不同部门分类,最终生成hip文件。

需要生成什么类型的文件,打勾选择即可。

比如只需要动画关键帧和绑定,生成的场景文件就只包含这部分内容了。

▌PDG与动态化解算和渲染

上面这个群集场景,碰到“炸弹”的会爆炸,没有碰到的会一直往前跑。传统的流程是先模拟群集,然后看哪些“人”碰到了炸弹并标记,然后有标记的炸弹进行爆炸模拟。

有了PDG,这个流程可以变得动态化(Dynamic)。

当人碰到炸弹,随即触发一个pyro模拟,而不是等待群集解算全部模拟完成后再看看哪些炸弹被触发,PDG可以让这个流程变得动态化,可以从一个任务触发新的任务。

在这个流程中,一环扣一环,一个任务触发下一个新任务,直到最终全部解算完成,触发渲染任务渲染整个序列。这就是PDG所带来的一种革命性的动态化解算和渲染流程。

▌PDG与Houdini engine引擎

上图的场景是使用Houdini engine的HDAs生成的一个程序化场景。

在过去,每一个元素都由单独的HDA生成,例如道路、山脉、桥梁、数木,它们都是相互独立的HDA,不同元素之间没有任何联系。

有了PDG,所有的HDA资产之间都建立了联系(dependencies),从而打造了一个可视化的程序化系统。有什么好处呢?

仔细看上图,当我们主观改变了道路高度,Houdini自动生成其周围的环境,相应添加了树木,山体,最重要的是出现了一座桥。这一切看似神奇,其实都是因为PDG建立起了元素之间彼此相互的联系,从而实现了一个元素的改变,可以顺应改变其他元素来与之匹配。这就是PDG的魅力所在。

可以看到,通过PDG系统,每个元素之间都建立起了联系和依赖。

▌PDG与机器学习

PDG的高效和程序化注定了它非常适合用于机器学习。

机器学习顾名思义是通过大量的数据模型的训练,教会计算机像人类一样的“思考”和技能。SideFX举了两个例子,用PDG去实现。

第一个例子是对一个基础山体模型进行erode操作。先使用SOP在PDG中对山体进行成百上千的erode输出,组建数据模型,然后进行PDG机器学习的训练,最终得到的效果跟SOP里直接生成的结果非常像,而速度却快了50000倍。

第二个例子是关于山体绘制的,使用PDG进行数据训练完成后可以直接通过绘制山脊线生成山体模型。

这是在整个PDG流程里用到的软件和程序(后期很有可能被慢慢集成到PDG中,形成一个巨大的生态环境),具体的实现流程在发布会都有讲解,感兴趣的朋友可以自行查看,这里就不再赘述了。

这就是整个Houdini 17.5发布会上关于PDG讲解的内容了,后面的时间SideFX请出了MPC的流程主管上台发言,Bill Polson对比了迪士尼的USD流程,对PDG的前景大加称赞。

SideFX指出PDG让Houdini程序化思想得到了升华,让整个VFX流程更进了一步。

▌Houdini 17.5发布会(中英字幕)⇓⇓⇓

https://vfxforce.cn/archives/4911