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
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.
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.