AWS Thinkbox Discussion Forums

Official Houdini Solaris Husk submitter

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.

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.

3 Likes

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" + " "
1 Like

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"
1 Like

Thank you @PostMotion I incorporated your fixes!

2 Likes

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.

Privacy | Site terms | Cookie preferences