Jump to content

Swap/Reference/Instance Hi-Res Pieces at Render Time in Mantra

Recommended Posts

Hello, I am working on an RBD simulation of a hotel collapsing and I have roughly 73,000 pieces in the simulation. I simulated with low resolution pieces and I want to replace them with high resolution pieces but render times are ballooning/render crashes when I swap them.

My hi-res pieces are packed and have materials inside. I have the whole set of pieces on a single .bgeo.sc file (5gb) and also each piece individually on disk (See graphic 1). I will refer to them as Set of Pieces and Individual Pieces respectively.

Graphic 1.JPG


I'm fairly new to Houdini so go easy on me, here's the workflow that has gotten me the furthest:

     - I load the Set of high-res pieces and plug both them and the low-res pieces into a Transform Pieces SOP. (See graphic 2). This allows me to copy the transforms of the low-res onto the hi-res pieces. Up to this part I have no problems.


Graphic 2.JPG


     - When I start to render, Mantra takes a long 10-15 minutes generating the scene, using all of my RAM (64gb). If I'm lucky it starts rendering by minute 15, but 90% of the time it just crashes. I'm using Mantra on Houdini 16.5.268 by the way.

I know that Mantra needs a copy of the geometry when it renders, so the Set of Pieces is the problem here.

I have also tried the Instance SOP, creating an Instancefile attibute on the low-res pieces linking them to the hi-res pieces on disk, but it doesn't seem to be working, I have to be missing something here but I can't find the solution. (See graphic 3)


Graphic 3.JPG



I have almost no knowledge of Mantra, so I have the default settings in the Mantra node.

Is there a way of referencing/swapping/instancing the individual hi-res pieces onto Mantra ONLY at render time while also having the transforms of the low-res pieces? Is there another way that I'm missing? Any way of reducing Memory Usage? Am I doing it completely wrong? 

Thank you in advance!

Edited by TheQuantumSpark

Share this post

Link to post
Share on other sites

hi, as far I understand, you're not rendering your geometry as packed primitives. if that's the case, do take a look at packed primitives workflow (really nicely explained in docs). you should have just a single point per piece, representing your transforms, and use that to drive hipoly pieces that are delay-loaded and rendered as memory efficient packed primitives. this way you're able to render hundreds of millions polys with quite low memory requirements. memory consumption depends on many factors of course but in general, packed prims are the most memory efficient way to render heavy geometry in mantra (alongside with Polysoups - but that's more true when you have a single massive mesh rather than rbd pieces). 

cheers, D.

Share this post

Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now