Queue multiple Solaris ROP nodes in Scheduler

   4114   13   7
User Avatar
Member
8 posts
Joined: Oct. 2015
Offline
Hi all,

I'm wondering if there is a way to queue multiple USD Render ROPs in Solaris in either Scheduler or MPlay. I would only like to render on a single machine but I have around 30 different render ROPs in the stage. If I try to submit them all at once it either crashes my Houdini or makes my machine completely unresponsive as they all start rendering at the same time using the same GPU.
I looked into setting up a render manager to handle this, but unfortunately Deadline doesn't support Houdini 19 yet and I wasn't;t able to get HQueue to work.

I'm just wondering how people are doing this, or if there is another Render Manager that I could look into that supports Houdini 19

For details I am rendering in Redshift and I'm on a MacPro 2019

Thanks
User Avatar
Member
37 posts
Joined:
Offline
Hi Milen,
a year after your post I have the same problem.
However, I found a temporary solution:
Using the Husk utility you can schedule several .usd files with the '&' command:

husk usd_file & husk usd_file & .....


I hope to be proved helpful
User Avatar
Member
336 posts
Joined: April 2018
Online
This has to easily be one of the biggest hurdles to new users.

There are ways to do what you want (selecting all ROPs and pressing Render on any one of them, or using TOPs) but they're all wildly unintuitive, and fairly clunky to use, and you can't queue the same ROP with a different frame range (for example), you'd need to duplicate that ROP.

Please RFE for a simple Render Manager that will let you queue any ROP and have an easy to manage list from which to initiate your render.

It should be something as simple as right-clicking a ROP and saying "Add to Render Queue".
User Avatar
Member
129 posts
Joined: Oct. 2020
Offline
you can use TOPs to do it with "ROP Fetch", also you can use regular ROPs. You dont need a render manager to queue
https://www.youtube.com/channel/UC4NQi8wpYUbR9wLolfHrZVA [www.youtube.com]
User Avatar
Member
129 posts
Joined: Oct. 2020
Offline
also deadline now supports 19.5
https://www.youtube.com/channel/UC4NQi8wpYUbR9wLolfHrZVA [www.youtube.com]
User Avatar
Member
336 posts
Joined: April 2018
Online
AhmedHindy
you can use TOPs to do it with "ROP Fetch", also you can use regular ROPs. You dont need a render manager to queue
I mentioned both those things in my post. They're both clunky to use and unintuitive for such a basic task. A render manager that can do this with a dead-simple list would be an order of magnitude more friendly to use and manage, and vastly more intuitive for everyone involved.

It's the same philosophy of VEX and VOPs vs building artist-friendly interfaces. You could do ramps and noise with VEX and VOPs easily enough, but thankfully we now have excellent Attribute Adjust SOPs to do the same thing with better, more friendly UIs.
User Avatar
Member
8 posts
Joined: Oct. 2014
Offline
I have a HDA to handle this situation. You just need to select the required USD render ROP node and click the button. This tool is very rudimentary, so once the rendering is interrupted, you need to readjust the frame range of the rendering. It is strongly recommended that you do a simple test before using it. It should be able to run in a 19.5 python3.9 environment.

Attachments:
屏幕截图 2023-05-17 132019.jpg (44.3 KB)
lop_LOP_local_render.hda (3.8 KB)

User Avatar
Member
262 posts
Joined: July 2013
Offline
If you make a ropnet (green) in the stage context and put some usdRendernoders in there, you can link those together to create dependencies that render in top down order. You can set it to frame-by-frame or node-by-node in the node's properties. In the blue circle you point each ropNode to to what ever you want to render. (use a null or something and not rendernode as in the screenshot)

Attachments:
renderq.jpg (135.6 KB)

More code, less clicks.
User Avatar
Member
336 posts
Joined: April 2018
Online
Jonathan de Blok
If you make a ropnet (green) in the stage context and put some usdRendernoders in there, you can link those together to create dependencies that render in top down order. You can set it to frame-by-frame or node-by-node in the node's properties. In the blue circle you point each ropNode to to what ever you want to render. (use a null or something and not rendernode as in the screenshot)
It's still pretty clunky. It's similar to the TOPnet ROP Fetch workflow, where you're disconnected from your actual node graph, so you'll have to keep things manually organised, and if you just need to render a subset of that ROPnet, you have to set up new connections.

I'm yet to see any implementation in Houdini that is functionally friendlier than a simple list. It's all doable, but it's all a UX disaster.
Edited by eikonoklastes - May 21, 2023 05:22:18
User Avatar
Member
262 posts
Joined: July 2013
Offline
You can also use fetch rop to gather ROPs from all over the place, can even be from COPs if your render depends on that.

Nice thing is that this will render with the tree dependency, skipping disabled nodes so subsets are easy to dail in. Also when you feed this into a deadline node it will create separate but dependent jobs in deadline.

As with most things in Houdini it might be a bit clucky for simple things but it quickly becomes quite elegant for more complex setups.

Attachments:
Screenshot 2023-05-21 121327.jpg (43.1 KB)

More code, less clicks.
User Avatar
Member
336 posts
Joined: April 2018
Online
Jonathan de Blok
You can also use fetch rop to gather ROPs from all over the place, can even be from COPs if your render depends on that.

Nice thing is that this will render with the tree dependency, skipping disabled nodes so subsets are easy to dail in. Also when you feed this into a deadline node it will create separate but dependent jobs in deadline.

As with most things in Houdini it might be a bit clucky for simple things but it quickly becomes quite elegant for more complex setups.

Image Not Found
I'm sorry, but I'm not seeing where the elegance is. You can't see which Fetch node corresponds to which source node, or the frame range, or any settings on the original ROP for that matter.

You have to manually click through each one, then jump to that network and look at the parameters, and then jump back here.

If you have to manually name each Fetch ROP to correspond to the ROP you want to render, you'll have to include important info like frame range and resolution. Manually.

If you change any important settings on the source ROP, you have to manually rename the Fetch ROP again and whatever manual comments you have added, and if you forget to do that, that's going to cause more confusion when you return to this network.

If anything, this setup becomes more of a nightmare to maintain the more complex your setup gets.

I love Houdini's node system, but when you need to submit several shots overnight for render, you need to have a clean overview of the important settings on each one of those shots, and the best way to do that is with a list/spreadsheet.

Houdin's system offers no peace of mind, is tedious to set up, is error prone and is difficult to check for errors at a glance. It forces an unnecessarily stressful and painstaking approach from the user to ensure accuracy across every shot before hitting that Render All button.

All this can be mitigated with a dead simple "Add to Render Queue" button on every ROP, and a Render Queue spreadsheet that shows *all* the settings of that ROP in a filterable and sortable column view, for easy comparisons, sorting and mass editing.
Edited by eikonoklastes - May 22, 2023 09:40:07
User Avatar
Member
138 posts
Joined: June 2016
Offline
Hi Eikonoklastes,

Houdini is such a masterpiece, I agree that there are things that can to be improved, but its defenitely not a nightmare .
And for this particular case Houdini has a great solution, I'm sure you will love it.

There is something called a parameter spreadsheet in Houdini,





1 - drag your node/nodes here, or copy paste node path and you can use wildcards as i used here

3 - drag any parms in empty area of the spreadsheet

2 - the dragged parms parms will gets filled in this field, you can use wildcards here as well

once you have done this you can view everything at one place and you can bulk edit parms as you wish.


This spreadsheet can be used to control any object's parms not just ROPS so it is far more useful and very simple.


if you want more then you can also create bundles of your favorite nodes to change and point to your bundle (instead of selecting and dragging nodes)in the field marked 1

Only thing you would still do is that you have to fecth the rops as usual to a ropnet, but i don't see that as a bad thing,
you can visually define your dependencies which is a great thing to have. when you have complex scene with different rops depends on other rops then this will save you.


eikonoklastes
If you have to manually name each Fetch ROP to correspond to the ROP you want to render, you'll have to include important info like frame range and resolution. Manually.

If you change any important settings on the source ROP, you have to manually rename the Fetch ROP again and whatever manual comments you have added, and if you forget to do that, that's going to cause more confusion when you return to this network.

I did not understand this point, fetch is just a ROP node that points to your other Ropsops(such as fileCache) somewhere else in the scene. you don't need to manually rename anything in there, if you rename your source node it should automatically update in the fetch's source parm.




I hope this helps.

Attachments:
Screenshot 2023-06-01 070301.png (57.6 KB)
Screenshot 2023-06-01 072543.png (39.6 KB)

Mohan Pugaz
movfx
https://www.instagram.com/movfx/ [www.instagram.com]
https://www.youtube.com/channel/@_movfx
User Avatar
Member
88 posts
Joined: April 2008
Online
Jonathan de Blok
If you make a ropnet (green) in the stage context and put some usdRendernoders in there, you can link those together to create dependencies that render in top down order. You can set it to frame-by-frame or node-by-node in the node's properties. In the blue circle you point each ropNode to to what ever you want to render. (use a null or something and not rendernode as in the screenshot)

This works great. Do you know if there is a way to Render to Disk in Background (i.e. generate and execute the husk commands) via this fetch workflow for multiple Render ROPs?
User Avatar
Member
336 posts
Joined: April 2018
Online
Mohanpugaz
There is something called a parameter spreadsheet in Houdini,
Thanks for that. It does help, yes.
  • Quick Links