Houdini Tip of the Day - Render Multiple Alembic ROP's at one time!

I'm still a beginner when it comes to using Houdini but whenever I come across something that I think is cool, I've got to share it. So here's something I stumbled onto the other day that saved me a bunch of time:

Let's say you've got a simulation of multiple walls fracturing and you want to export each wall as an alembic. Simple enough, you would just lay down a "ROP Alembic Output" node in your network. 
For instance, mine needed to be put after the "Dop Import" node. (So that when I go to render the Alembic file it actually renders what I have simulated)

Now in this case I have 2 ROP Alembic output nodes. The one on the left is for my static wall, and the one on the right is for my wall fragments.

Now normally if you want to render each alembic you would just select one of them and hit the "Render to Disk" button. But that could get really annoying if you have a bunch of Alembic's that you want to render.

Instead, drop down a "ROP Network Node" and dive inside of it.
We can use the "Fetch ROP" to call the "ROP Alembic Output" nodes we have. So in this case we need 2 Fetch ROP's, each of them pointed at a specific ROP Alembic Output node.
So far so good.
And you can do this for as many ROP Alembic Output nodes as you have. 
Now we need to use a "Merge ROP" to merge them together.
It's important to note that this will NOT actually merge the Alembic files together when you hit the render button on the ROP Network node. All it does is combine the operation for the ROP Network node so when you go to render it knows which Alembic to render next.

Now that you've got all your Fetch ROP's in there, go up one level to the ROP Network and all you have to do is hit the "Render" button and it will go through and render out all the Alembic's one after another.

I really like this method because it's very procedural (duh, it's Houdini) and it saves a lot of time. Rather than going through your whole network and finding each Alembic Output node you can just hit one button and render all of them at once. Very cool!

Also, it's not limited to ROP Alembic Output nodes. That's just what I was using. You could point your Fetch ROP's to a ROP Output Driver node, so instead of rendering Alembic files you could render out BGEO files.


I think this method pairs nicely when you are writing out a simulation.
For instance,  there are many ways to write out your simulation, but click on your DOP Network and go to the "Cache" tab. Check-on "Allow caching to disk", and "Save checkpoints". 
Now your simulation will write out a file every frame. 
Here's why it pairs nicely with the Alembic trick mentioned above:
     -If you've only simulated 50 out of 100 frames and you hit the Render button on the ROP Network, it will render the first 50 frames and when it gets to frame 51 (a frame you haven't cached out yet) it will actually simulate the frame, write out the .sim file, and then it will continue by writing out the Alembic files (or whatever you are rendering).
     -When it comes time to render the second Alembic file, because it has gone through the first Alembic file completely, it won't have to simulate any new frames which means it will render out the remaining Alembic files faster.
     -Last but not least, when you hit the "Render" button on the ROP Network node, it disables updating of your Viewport, which speeds up the rendering (and simulating) process because your computer won't have to redraw the Viewport.

Well this was a long one, but I hope to be writing more of these in the future and I hope this makes sense and it helps you out.
Send me an email or leave a comment if you have any questions!