AWS Thinkbox Discussion Forums

Official Houdini Solaris Husk submitter

I agree it’s getting hard to track changes, I’m hesitant to spend too much time on this plugin if the Thinkbox team are actively developing one. The initial request on the forum came back in 2019 so I’m not sure what the ETA is being that they won’t share a roadmap or any other info.

Other render managers have a working solution, I think we’ll be stuck waiting for the slowing release cycle

2 Likes

Of course I can do that but it could be total mess as I’ve manually merged original author’s Deadline version with newer one plus our local changes. So no one will recognize what is related to Husk what is the updates from Deadline and what’s our own additions :man_facepalming:

I’ll still take that and see what happens.

Having an odd problem when submitting multiple usd render nodes(via fetch nodes) to a single deadline rop.

This submits 3 sets of houdini → huskstandalone jobs. They all seem to have the correct usd(a) paths and image paths. However the final image that the husk jobs render, although correctly pathed, sometimes are the same exact image. (example: the Bty pass will render the image that I’d expect from the atmos pass). I’ve tried alternating between usd and usda files to no avail.

They all render correctly if I do an Mplay preview/Local render on my workstation.

Curious if anyone has had similar behavior and might have some pointers on where to look.
Thanks,
-Jake

Here you are. Few notes for usage. This code should be placed into custom folder in the Deadline repository otherwise it wont be working(HDA is modified to look there). Then we changed way how right version of Houdini is selected. Instead of defining all versions paths we used one unified naming where XX.X.XXX are replaced by proper version sent by submitter. You just need to set it up to your needing. So if new version used it will work right away without adding it to the code. Then we are not relaying on houdini.env on the slaves. To set all necessary environments we are using JobPreload.py + pipeline_launch.sh were it’s all set. If you don’t need it just delete JobPreload.py. And as I said before there is couple of changes which are needed for our internal usage. All the code should be compatible for Deadline 10.3.0.13

custom.zip (84.6 KB)

Hope it helps you

Ales

2 Likes

This seems to be particular to a couple of complex scenes that we have. I’ll report back when I’ve figured out the cause.

If you have such scenes, it might be a good idea to make automated tests.
I will volunteer for such a task:

  • Mock functions with side effects (e.g. that submit to deadline; you could also just swap deadlinecommand?)
  • Run submitter on edge case scenes, check results

I don’t know if the Deadline guys already have such a thing.

Thanks a lot! I’ll try and might come back with questions.

ok, so it works. I am just wondering about the version functionality. I needed to create the systemvariable “VERSION” for the submitter to work. Should this replace the XX.X.XXX in the path to husk?

no. version is plugin info variable and is written by the code itself (SubmitHoudiniToDeadlineFunctions.py at 995) during submitting, please don’t confuse it with system environment VERSION which we are using as file version token, but this is not involved in determining Houdini version.

update paths in HuskStandalone plugin to your needing, eg. we have like this

then HuskStandalone plugin reads that version in RenderExecutable function and replaces XXX with version of Houdini which submitted your job

    def RenderExecutable(self):
        #if we know submitter's Hou version we could eventualy use it
        version = self.GetPluginInfoEntryWithDefault( "Version", "" )
        pathList = self.GetConfigEntry("USD_RenderExecutable").replace("XX.X.XXX", version)
        executableFound = FileUtils.SearchFileList(pathList)
        if version == "" or not executableFound:       
            self.LogInfo("Failed to find executable:\nconfig:{}\nVersion:{}\n".format(pathList, version))
        return executableFound

Same technique we are using in Houdini_VFX plugin

Ah, I see. I still need to set the VERSION variable for the submitter to work, but that is apparently something you use in your pipeline and we don’t.

Also, just to make sure I use this as intended: it is still a usd rop feeding into the deadline rop, right? Because I see people pluging (multiple) fetch nodes into it (pointing to usd render lops?)

Ah, I see. I still need to set the VERSION variable for the submitter to work

Hmm this interesting, what kind of error it gives you? You’re right it is just needed in our pipeline so if you want you can cut it off the code.

Yes we are connecting usd rops to the Deadline rop input. It should be fine with usd_render rop too.

EDIT:
you can modify code like this to avoid that missing VERSION env

    ver = hou.getenv('VERSION')
    if ver:
        hou.putenv("VERSION", ver)
        hou.hscript('varchange VERSION')

EDIT2: you may wonder why we have this silly code there, we are trying to workaround with it an issue when we are increasing VERSION programmatically it isn’t updated properly in Solaris stage. This code should fix it however even this isn’t working if user have manual update on :frowning:

EDIT3: eventually fixed incorporating idea from here Solaris - Force cook stage and export - stage is null | Forums | SideFX

Yep, works perfectly. Thanks!

We also have these kinds of changes that are hard to separate. Perhaps some sort of hooks system could work.
Of course, if we had a public git repo, at least we could separate our stuff in branches :slight_smile:

1 Like

Hold my beer…

@eamsler any news here?

1 Like

22/03/24 and 10.3.2.1 released, still no husk integration : :cry:

maybe in the next quarterly release…

I was wondering if you found a way to get the Husk standalone render working with the $F4 tag in the USD file output?

I’ve run into the same issue when trying to render on the farm from Solaris. I don’t think I’m able to render it with a single USD as I’m pulling in some fur sim bgeo sequences with SOP imports, and they don’t seem to retain their animation when outputting a single USD. Unless there’s another way I should be doing it.

USD doesn’t understand $F4. You need to transform it to another placeholder at submission time, e.g. #### or %04d (I think it understands both).

1 Like

Thank you! I think it’s working now by passing the file through SubmitHoudiniToDeadlineFunction.py with the $F4 tag, then editing HuskStandalone.py to reformat the tag.

This works too. The submitter must preserve $F4 if you are going to render Houdini jobs. It’s a bit of a mess but

  • Houdini uses the Output key from job plugin info, which has $F4
  • The output directory in the job info has #### because Deadline understands that.
2 Likes
Privacy | Site terms | Cookie preferences