Houdini 17.5 Launch Event 内容整理 PDG
技术综合地编场景制作3D场景引擎地编地图编辑图文
显示全部 13
682 1
实名

通过了实名认证的内容创造者

发布于 2019-6-17 00:07:42

您需要 登录 才可以下载或查看,没有账号?注册

x
Houdini 17.5 Launch Event 内容整理

作者:VenXu



1 什么是PDG?

2019年Houdini 17.5 发布会给出了答案。PDG(Procedural Dependency Graph),字面翻译为程序化依赖图表
寰?俊鍥剧墖_20190616232557.jpg

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

寰?俊鍥剧墖_20190616232601.jpg

一些数据来自于OBJ,一些来自于ROP( Render OPerators)、SOP(Surface OPerators)等,从前这些数据相互转换是不容易,PDG就是用来解决这些问题的。

PDG和TOP节点就代表着一个虚拟任务管理系统。

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


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




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


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



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




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


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



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


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


3 PDG在wedge流程的应用


官方对Wedging attribute的文档说明:http://www.sidefx.com/docs/houdini/tops/wedge.html
wedge节点用于更改某个参数多次,然后分别输出相应结果,比如改变box的宽度,从1到10,然后输出这10种形态。有了PDG,wedge流程更加强大直观。


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


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

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

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


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




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

25种不同形态,一气呵成。


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

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

上半部分的图来自Substance,下半部分的图来自Photoshop。


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


4 PDG与SOP无缝衔接



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


首先,TOP节点内设置一个输入数据的节点,读取了路径下的所有资产。


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

并且你可以输出你想要的正确信息。


5 PDG与流程管理




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


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

创建hip的内部过程。

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

如果需要制作动画,K帧并绑定导出即可。


6 PDG与动态化解算和渲染


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


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


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


7 PDG与Houdini Engine引擎


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

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

有了PDG,所有的HDA资产之间都建立了联系(dependencies),从而打造了一个可视化的程序化系统。有什么好处呢?
可以看到,通过PDG系统,每个元素之间都建立起了联系和依赖。


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


8 PDG与机器学习



PDG的高效和程序化注定了它非常适合用于机器学习。
机器学习顾名思义是通过大量的数据模型的训练,教会计算机像人类一样的“思考”和技能。SideFX举了两个例子,用PDG去实现。

传统工艺流程

使用PDG与机器学习流程

渲染高度图和侵蚀图

所有的模块都可以同时进行计算

各模块数据分析

对应

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

第二个例子是如何把拍摄普通的草图并将其转变为逼真的地形。

Houdini Cook生成的地形。

创建遮罩。

使用PDG进行数据训练。

对草图和高度图进行机器学习训练,得到大量的采样示例。

绘制山脊线生成山体模型。


定制化的山体模型。


9 总结、展望及案例分享


这是在整个PDG流程里用到的软件和程序(后期很有可能被慢慢集成到PDG中,形成一个巨大的生态环境)。

后面还有一大堆例子,简单放两个了。




物件破碎,用Python写的,有部分节点展示


性能分析


以上。


评分

参与人数 2元素币 +40 活跃度 +28 展开 理由
元素界王神... + 40 + 20 看的一脸惊奇!
诺一 + 8 元素有你更精彩!

查看全部评分

上链接
使用道具 <
qq_亦醒_UNO  发表于 2019-7-24 16:18:51  
2#
感谢
回复 收起回复
使用道具
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表