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.
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.
I think it’s passed enough time for aws to deliver an official USD submitter as well UBL for Karma. The submitter part we can work around but not UBL. I stopped using AWS for rendering due to the lack of Karma-only licenses.
I added the CheckPathMapping function so this works cross-platform.
#renderer handled in job file.
outputPath = self.GetPluginInfoEntry("OutputPath")
outputPath = RepositoryUtils.CheckPathMapping( outputPath )
argument += "-o {0}".format(outputPath)
argument += " --make-output-path" + " "
Good catch, in Houdini 20 the renderer names are changed.
We don’t really use the submission dialog, so thanks for fixing usd there too.
The main issue with sharing our updates is that we have a bunch of other modifications that are better left out (they wouldn’t make sense in other pipelines), but there is no git repo where we could e.g. maintain a branch for general availability, where your fixes could also be included. (I’ve repeatedly asked here but no definitive answer from the devs whether that would be allowed).
In the exportJobInfoFile
section of SubmitHoudiniToDeadlineFunctions.py, lowerExportType
is called to read the job values dynamically. lowerExportType
, as it stands with a husk standalone job, resolves to huskstandalone
which has no associated job values, it’s all usd
like usdconcurrent
, usdgroup
, etc.
Adding the below if statement after lowerExportType is created is a quick fix, as it appears lowerExportType is only used when creating the JobInfoFile
lowerExportType = exportType.lower()
if exportType == "HuskStandalone":
lowerExportType = "usd"
I also changed the existing exportType
from pass
to exportType = "USD"
to solve any protential issues for USD ROP exports.
elif exportType in ["USD", "USD ROP"]:
exportType = "USD"
Can you post the updated version or is there githubnow for this?
I would love there to be a github, but I don’t think the license allows it. Never got a response on this from the Thinkbox guys.
Could you still upload the latest version with all the incorporated fixes here?
@zainali @Justin_B Can you please inform us, if getting those modifications on github is ok so it is easier to maintain? Also, information about an official workflow would be really good. Is this beiing worked on or is it still under consideration
I’ll check on what the rules are with regard to putting plugins up on github. @eamsler is the one I’d ask but he’s out for the week so if I don’t find another person we’ll have to hang tight.
With regard to official workflow we can’t say anything about plans for the product.
I’ll post back here once I know more.
I’ve been on vacation, but he definitely did!
I have some thoughts, I’m running my proper response through our product team to make sure I don’t mispeak (they’re much smarter about this stuff than I am!)
Any news about Karma UBL licenses?
Nothing I can say, we’re not able to share details about the roadmap.