DeadlineHoudini

关于Deadline渲染Houdini工程时内存爆炸的解决办法

2021-02-26  本文已影响0人  MasterZhang
说明

我这里使用的Deadline版本是 10.0.20.2。新版本可能会修复。

问题发现

在提交Houdini工程时,会出现内存爆炸的情况导致渲染任务失败,即时内存没爆炸也会渲染非常慢。

查询原因

查到原因是因为Deadline的Path Mapping机制导致,Path Mapping的作用是路径重映射,比如说你的工程路径是D:/test前缀,使用Path Mapping可以在不更改原hip文件下,可以对D:/test进行修改,比如修改成//192.168.1.xxx/test的网络路径。该方法出发点是好的,Deadline官方也说使用Path Mapping是可以支持跨系统路径提交任务。但是官方在对Houdini工程进行Path Mapping时出现了意外。
通过查看Deadline的Houdini插件脚本(xxx/DeadlineRepository10/plugins/Houdini目录下)hrender_dl.py,不管在Deadline上有没有设置Path Mapping,Deadline都对Houdini文件进行Path Mapping检测。其检测方式是检测所有节点(注意这里是所有节点)它们的引用路径,并把他们存起来。问题就出现在检测所有节点的方式上,它这里使用了houdini的自身命令:

hou.fileReferences()

该脚本命令是houdini自身获取场景内所有节点的参数,并且是迭代检测,也就是说封装的内部节点也会检测。所以问题就出现了,当使用该命令时,假如工程里有很多封装节点那么会因为参数庞大而导致内存爆炸,之后就会卡死,这是Houdini自身命令导致的内存爆炸问题与Deadline无关。

解决办法

在Deadline仓库plugins/Houdini脚本下的hrender_dl.py里注销掉path mapping的参数检测,不使用Deadline path mapping功能。

def perform_pathmapping(tempdir):
    ...
    注销
    parms = gather_parms_to_map()
    if parms:
        pathmap_parms(tempdir, parms)
    
上一篇下一篇

猜你喜欢

热点阅读