HtoA Arnold Operators being read as dependency jobs from Houdini using Deadline node

Hey Thinkboxers!

We are trying to use Arnold Operators in Houdini through the htoa plugin. The way they work is that they are nodes that you chain together and plug into Houdini rops to affect render parameters in Arnold.

It’s a really cool workflow, but when we submit a job to deadline via the Deadline node - those operator nodes get treated as dependent jobs (which they are not).

Is there a callback for the Deadline node that could flag a node type to ignore? Or some other way to deal with this? The Arnold guys are keen to know as well.

Thanks!


Laurence Cymet
CG Supervisor

FOLKS
Storytelling is our business.
Montréal | Toronto

Did you ever get to the bottom of this? Having the same issue at our studio

Glad I’m not the only one. :slight_smile: I’m iterating with support who is helping to resolve this, with the help of the Arnold team. Sounds like the Deadline ROP node needs to have a catch the ignore the operator node types.

For anyone who wants to fix this themselves in the meantime, here is the recommendation from the Arnold team. Big thanks to Julian Hodgson.


Check out htoa/houdini/scripts/python/htoa/operator.py. This builds some python dicts mapping houdini rop names to arnold rop names:

from arnold import *
import hou

def getOperatorMap():

global operator_map, rop_map

operator_map.clear()
rop_map.clear()

universe_is_active = AiUniverseIsActive()
if not universe_is_active:
    AiBegin()
    AiMsgSetConsoleFlags(AI_LOG_NONE)
    AiLoadPlugins(htoa.searchpath.plugin)

nentry_iter = AiUniverseGetNodeEntryIterator(AI_NODE_OPERATOR)

while not AiNodeEntryIteratorFinished(nentry_iter):
    nentry = AiNodeEntryIteratorGetNext(nentry_iter)
    name = AiNodeEntryGetName(nentry)
    operator_map["arnold::%s" % name] = name

if not universe_is_active:
    AiEnd()

# build reverse map
rop_map = {v: k for k, v in operator_map.iteritems()}

So the keys in the operator_map should be the list of all the ROPs that are in fact Arnold ROPs.

Is that what you’re looking for?

import htoa.operator
htoa.operator.operator_map.keys()
[‘arnold::switch_operator’, ‘arnold::set_parameter’, ‘arnold::materialx’, ‘arnold::m
erge’, ‘arnold::include_graph’, ‘arnold::collection’, ‘arnold::set_transform’, ‘arno
ld::string_replace’, ‘arnold::disable’]

For anyone having this issue, @cmoore whipped up a version of the Deadline ROP that should resolve this issue. But we haven’t had anyone test it yet in a real environment. So if you’re feeling brave give it a spin and let us know!

To install, backup and replace the following file with the one attached:

“DeadlineRepository10\submission\Houdini\Main\SubmitDeadlineRop.py”

Note that this is for Deadline 10.1.6.4, if you’re from the future this might not be nessessary.
SubmitDeadlineRop.zip (6.4 KB)

Thanks so much Justin. Our initial tests appear to work, in both a scene that uses every operator node available, and a production scene. Stay tuned for more details as we test further.

Deadline repo 10.0.22.3 and Houdini 18 with htoa 5.2

Privacy | Site terms | Cookie preferences