瑞云渲染首届泛CG实用技术线上分享会干货整理-Houdini分布式调度

2020-03-16 07:20:50

由瑞云渲染主办,旨在打造一个属于CG人的自由分享与交流的平台的“泛CG 聚未来,首届泛CG实用技术线上分享会”第一期已于上周六直播完毕!

1

第一期嘉宾,是从业7年,在Houdini开发领域拥有丰富经验,现任瑞云渲染高级技术工程师缪远喜,主要负责流程规范设计和流程框架搭建。在上周六直播结束后我们的嘉宾还将直播的内容整理好和大家分享,还有精彩的直播回放哦!

2

01.HQueue和Deadline简单比较

HQueue:

1、HQueue搭建麻烦;

2、问题排查不方便;

3、机器调度不够人性化;

4、只能调度Houdini任务,如果你想跑Maya或者其他产品的任务,需要多次折腾;

5、二次开发不方便;

6、工作效率不高;

7、HQueue 是很早搭建到本地农场,在制作特效的时候,测试几次后发现效率比较低,玩不出什么花来。不是HQueue不行,发现了用农场管理软件API调用Houdini里面的东西来的更加稳定,更加方便管理。然后彻底舍弃了HQueue , 但那个时候是不能分布式模拟的只能单机模拟,现在应该都是可以了的。

Deadline的优势:

1、可以补足HQueue 的劣势;

2、我们用起来也方便快捷;

3、对于TD来说,可能更多的是做二次开发,开发的接口都很方便。

02.HQueue搭建介绍

简单说一下HQueue的安装,网上也都有相应的教程。

HQ平台分为服务端(server)和客户端(client),如有两台电脑,联机使用HQUEUE。首先来到第一台电脑(服务端与客户端并存),双击Houdini安装包,进行到这一步的时候,勾选如图所示的服务端和客户端:

3

我们将这台电脑既用作服务端也用作客户端,然后一路下一步。

4

进行到这里,来到共享目录的设置,这个共享目录是HQ所有机器都可以访问到的目录,这样我们就可以进行联机解算和渲染了,只有让所有的机器都访问到HIP文件才能进行联机对不对。这里默认在C盘的HQueueServer\shared路径下创建共享目录,你可以改成其他位置。要注意,共享目录可以是服务端机器上,也可以是一个本地局域网目录,例如一些公司有专门的共享文件服务器。这里的共享目录是在服务端上的。下面的H是共享文件夹挂载盘符,由于该共享目录需要通过windows共享才能访问,所以需要给该共享路径指定一个盘符,默认为H,一路下一步。

5

这里是设置服务端的地址信息,由于我们这里客户端与服务端在同一台电脑,因此可以直接下一步。一路下一步,等待HQ服务端与客户端安装完成。这时第一台电脑就设置好了,打开浏览器访问localhost:5000显示如下界面:

6

下面进行第二台电脑(客户端)的设置。

7

这里只选择客户端。

8

这里需要填写服务端的内网IP地址,也就是第一台电脑的IP地址,填写主机名也是可以的,为了保险起见填IP地址,在第一台电脑命令提示符中输入ipconfig回车:

9

箭头所示即为IP地址。其他地方都与之前一样,安装完成后,不出意外的话打开localhost:5000就可以看到第二台电脑上线了。如果看不到,可以尝试关闭防火墙,来到第二台电脑,你的客户端,打开服务,找到HQueueClient这一项。

10

右键属性,来到这里。

11

这里请填写你本机电脑的登陆帐户名和密码,完成后点应用,会提示需要重启服务才生效,然后回到服务,在该服务上右键选择重新启动即可。

如果你的电脑登陆账户名为中文,或者登陆没有密码,一定要新建账户,必须是英文,如果你有多台客户端,重复上述操作即可。(上述配置默认两台电脑都装了Houdini并且均已可用的情况。两台电脑的Houdini安装路径必须一致,切记!)大功告成!

03.Deadline 搭建

F:\BaiduNetdiskDownload\Deadline-10\Deadinne-10.0.7.0-windoz-installers

AWSPortalLink 这个东西是干嘛的:使用Deadline Monitor控制的AWS Portal(aws的连接入口)连接到一个AWS账户,并允许您启动AWS渲染节点来创建渲染场或连接并扩展本地场。您可以选择启动预先安装了渲染软件的渲染节点,也可以选择原始的Deadline渲染节点并在其上安装自己的软件。渲染节点可以使用基于Deadline使用的许可(也可以通过连接到现有许可证服务器来使用浮动许可证)。

12

Deadline现在你准备好的服务器安装deadlineRepository(数据库),然后在你的渲染机器上安装client,具体细节都比较简单。

04.Deadline分发Houdini任务配置,Deadline10如何去配置到Houdini 17、18里面提交

13

具体要知道,安装软件里面的提交接口,是安装的什么,在Houdini里面就是菜单和一个otl ,如图,我们只需要添加环境变量,就可以适配Houdini17、18了。

C:\Users\Slash\AppData\Local\Thinkbox\Deadline10\submitters\HoudiniSubmitter

14

05.Deadline如何整合到自己的pipeline 流程当中去

15

那就得说说Deadline提交任务的几种方式:

1、常规的插件提交,Houdini里面节点提交,

2、命令行提交

命令行提交任务:

https://docs.thinkboxsoftware.com/products/deadline/10.0/1_User%20Manual/manual/manual-submission.html

调用: 16

17

18

19

20

3、API提交

Deadline API在哪,Deadline提供了几种API?在帮助里面也可以找到,我们上Deadline官网帮助网页,它提供了用户手册(User Manual)、脚本参考(Scripting Reference)以及Python参考(Python Reference),用户手册主要讲Deadline怎么使用的,我们打开Python Reference文档,根据官网帮助,简单参考代码:

21

找到我们的Deadline安装路径下,不管你是本地部署也好,服务器部署也罢,这个API的包你都能找的见,包里写了很多py文件。

22

这里又涉及到两个Python基础知识,一个Python执行环境,一个sys.path,首先我们要有一个Python代码执行的环境,然后我们需要将这个包路径添加到PYTHONPATH当中,192.168.0.3,就是一开始安装的时候Deadline部署的那台电脑的IP地址,并且要开下面这个Thinkbox中的服务deadlinewebservice.exe,服务器里面要一直开着。

23

这个在服务器端要一直开着,API才能成功使用。我们就可以借助提交任务的案例代码来提交任务了。找一个Python执行环境,我们去执行这个脚本,不出意外,我们的任务会顺利提交到Deadline。

24

JobInfo和PluginInfo只是两个字典数据类型而已,你提交Houdini还是Maya的任务完全是靠这两个字典数据来控制的,这是描述你的任务的,可去查看帮助。

06.Houdini里面分布式制作,提交Deadline,或提交到HQ里面,对比优缺点:HQ里面管理,稳定性都不是很好, Deadline里面对于Houdini的分布式稳定性是一般,有时候,任务会一直卡在那里,有机器问题,网络问题,Deadline的服务器问题,等等,因为每公司的硬件也不相同,网络波动,存储波动,都可能造成卡顿,假死情况,Deadline的 客户端 slave 就假死在那里,看日志也是停在解算过程中,难搞,机器也浪费,东西还没出来。

自己去调度,去管理这机器,高效的去做Houdini分布式解算:

houdini分布式联机解算,既然是多台机器解算同一个东西,那总得有个数据交流的东西吧,那就是 这个东西了 。

C:\Program Files\Side Effects Software\Houdini 18.0.287\houdini\python2.7libs

25

为了做分布式模拟,也是要放到我们的调度软件munu里面,所以考虑了怎么设计让连接稳定,分布式结算隔离。等等问题,这个主要管理simtracker。和所有参与解算的机器的进程和状态。让每一个分布式模拟拥有一个tracker.相互独立。

总体的思路:

简单来说,用munu来调度,munu_agent_controller 发送远程执行的命令给munu_agent去执行,以完成节点机本地环境配置,然后去执行解算过程,返回数据等等。

__大概框架如下:

服务器端(农场里面的主控机器)__

  1. 初始化参数

  2. 创建socket server(upd ,tcp),可能是多个协议,功能如下图

2.1 Hold住所有参与解算的机器的开始和结束时间,需要做时间异步容错处理 2.2 检查解算任务是否正常完成 2.3 随时监控机器状态,任务状态, 3. 解算过程

3.1 清理运行的环境 残余的进程 license server服务 tracker进程 3.2 重新安装流程所需要的服务和程序 3.3 解算slice的分发 3.3.1 一个ip对应一个slice 3.3.2 启动解算子进程 3.4 socket server 等待解算子进程的返回信号(upd ,tcp)

客户端(农场里面的参与解算的机器)

  1. 初始化参数

  2. 解算过程

2.1 清理运行的环境 2.2 重新安装流程所需要的服务和程序 2.3 创建一个socket client(upd ,tcp) 2.4 更新$SLICE环境变量 2.5 执行解算 2.6 socket client 返回一个信号给socket server(upd ,tcp) 2.7 关掉相关服务,返回数据给服务器(解算时间,费用等等)

26

07.欢迎各位朋友们提交,如果还有什么需求可以书写在我们的留言板里,瑞云可以去做相应的开发,本着一个服务行业的心,方便大伙在制作上的需求。后面瑞云还会推出一套Houdini相关插件,请大家敬请期待!

08.直播回放地址:https://www.bilibili.com/video/av94972020  资料获取:微信公众号后台回复“泛CG”

上一篇:瑞云渲染直播预告:《哪吒》视效导演分享他的影视特效制作之旅

下一篇: 瑞云渲染直播预告:红鲤动画技术研发总监与你对谈产线技术研发