AWS Thinkbox Discussion Forums

Official Houdini Solaris Husk submitter

Do we have an official release coming anytime soon? Even the latest Deadline doesn’t have this yet :frowning:

@AndrewC_Axis

Thanks for reaching out. Sorry I cannot share an ETA on this. I will reference your ask in our internal engineering ticket.

2 Likes

Thank you Zain for this!

1 Like

Still waiting for Karma to be supported, any updates?

The latest release (10.3.0.10) doesn’t have support for Karma, and I can’t say anything about the roadmap. Keep an eye on the release notes for updates.

1 Like

Here is an updated version of our submitter.
You define the render delegate in the USD Render ROP. It is passed down to the job.
The attached HuskStandalone plugin then uses this parameter to pass the renderer to Husk.
It might need some adjustments, since it has never been tested outside of our farm.
Let me know if it works.

Regarding this, I’d like to hear from the staff whether it is acceptable to put this code up on GitHub, considering that Deadline plugins are only source-available.

houdini_husk_vray_submitter.targz (41.3 KB)
HuskStandalone.targz (4.9 KB)

6 Likes

It’s probably not directly related to the submitter, but a general issues I’m facing when rendering usd files that reference sublayers. It seems that when I submit the job, only the main usd file is being submitted and distributed, and the referenced sublayers, are not passed to deadline. The renders don’t fail, but it can’t find the sublayers and renders black. Any one have a solution to this?

Further investigation, the issue is that the path mapping only works on one level, it doesn’t apply to nested referenced layers. Is there a way to get around that?

Nested references path mapping depends on the plugin you are using like Maya’s dirmap. The plugin is different here.

I’m using Arnold plugin to render .ass or usda files natively.

Indeed nested path mapping would not work currently.
I would love to see usd path mapping that is not just string replacement, but actually aware of the format. This would also make it possible to use binary usd files.

aah okay thanks for explaining that. agreed that string replacement is rather dodgy…

Mois you are actually a legend for sharing these files - have been pulling my hair out to try and get Husk to render Karma without pulling a license and just 30 minutes after finding your post and files I have it up and running :metal:

1 Like

One question I did have is in relation to the husk jobs that are being created. I noticed that they don’t seem to respect the deadline settings from the rop (priority, pool etc.). No matter what settings I change on the deadline ROP the husk jobs come onto deadline with 50 priority and no pool. Where in the various scripts would these settings need to be injected?

Hmm the normal Deadline settings should work. It is possible that I introduced a bug, but that part should not be changed from the original submitter.

Hmm strange. There is one other bug I’m running into - the submitter seems to be submitting an additional Houdini job to the farm no matter what. When clicking “submit to deadline” the follow jobs are created:

  • A Houdini job to export the USD
  • A Husk job to render the USD dependent on the above job
  • A Houdini job named after the deadline submitter node, dependent on the husk job. (Highlighted below)

Screenshot attached.

I’m following your screenshot above (A ROPnet with a USD feeding into the deadline submitter node)

Definitely a bug, but I cannot imagine the specific conditions that trigger it. Would need some debugging.

I’m not getting this to work. On submission both jobs are created, but the USD files aren’t created by the Houdini task. It just renders images like normal. The Husk job fails because the USD files don’t exist, of course. What are the correct USD Export settings on the USD Render Rop in the Stage Context? A simple demo file would be awesome.

See that Render Command is unchecked. Otherwise when USD Rop is triggered, it renders images directly.
image

Alas we do not have the resources to create better documentation right now.

Thanks for responding!
I was able to figure out the rest of it. I had to modify the scripts a bit to work with H20.

In SubmitHoudiniToDeadlineFunctions.py

    elif nodeType in [ "USD Render ROP" , "USD Render", "HuskStandalone"]:
        renderer = node.parm("renderer").eval()
        if renderer in ["BRAY_HdKarmaXPU", "BRAY_HdKarmaCPU", "BRAY_HdKarma"]:
            rule = hou.LopSelectionRule()
            rule.setPathPattern("{ usd_istype(0, @primpath, 'RenderProduct') } & { usd_attrib(0, @primpath, 'productType') == 'raster' }")
            lopNode = node.parm("loppath").evalAsNode()
            if lopNode is not None:
                firstNode = rule.firstPath(lopnode=lopNode)
                if firstNode:
                    outputFile = lopNode.stage()\
                                        .GetPrimAtPath(firstNode)\
                                        .GetAttribute("productName")\
                                        .Get(hou.frame())

In SubmitHoudiniToDeadline.py

        if renderer not in ( "mantra", "arnold", "usd" ):
            valuesToToggle[ renderer ].append( "%sarguments.val" % renderer )

And in SubmitHoudiniToDeadline.ui

INT_FIELD "USD Log Level":LABEL_WIDTH CELL(0,2,0,2) VALUE(usdloglevel.val);

The only issue I’m having now is that it isn’t rendering the correct frame in Deadline when Husk is submitted as a standalone job, it appears to just render frame 1 for the whole animation. Rendering from the USD render Rop directly correctly outputs the animation, as well as rendering through Deadline (not as Husk standalone).
It looks like it correctly add --frame # to the command line, so I’m not sure what’s up.

EDIT: Saved it out as an ascii USD and figured out it was only saving the last frame. Checking the box on the USD Render ROP “Render All Frames With a Single Process” fixed it since I had dropped the $F4 tag on the USD output filename at some point. Adding the $F4 tag back to the USD file breaks the Husk standalone render, as it just requests 0001.usd. WTF am I doing wrong, nothing seems intuitive anymore.

Privacy | Site terms | Cookie preferences