Solaris Large Scene Optimisation

   355   1   1
User Avatar
Member
5 posts
Joined: 6月 2020
オンライン
Hey fellas, need an experts help!

I dont feel confident in my knowledge of Houdini/Solaris, probably there will be some stupid ideas in my question, please forgive me in advance and point to a right way. And sorry for a long post, as you may see from the amount of text - I am really bad at optimization

Intro>
I've built a city in Solaris. Its made out USD files - there are around 30 different USD files, each one is a different building, and there are around 8 variants in each USD.
City was built manually - it need to have a very specific look, so I cant go with abstract 'copy to points' design.
Scene composed from couple dozen of Stage Manager LOPs grafted together. Each Stage Manager LOP basically is a city quarter, it contains a couple of dozen of different USDs. After each Stage Manager LOP there is a Set Variant LOP. Additionally to the hundreds and hundreds of buildings there are another elements like set/street dressing and environment elements.
While all my USD files have very simplified proxy for viewport preview it is still very heavy assembly. Houdini crashes every second time when I am trying to load or render all the scene.

So now I am thinking of ways to optimize my scene.


My plan>
I understand that dozens of Stage Manager containing the same USD files again and again is not a proper way for instancing. It was a forced choice to get a specific look. Now when the look/composition is achieved maybe I can transform it to instancing by 'copy to points'.
I can add a point to each original USD file, this point will have a unique name and will be placed at null of each building. Then I will extract all these unique points from all the Stage Managers grafted together. These points will have a coordinates, orientation and unique name - so now I can copy to point my USD files and will have the same layout as before, but it will be made only from 30 instanced files.

What do you think of my plan? I would appreciated any other alternative advices.
Edited by sergiylysenko - 2026年3月31日 09:21:37
User Avatar
スタッフ
4574 posts
Joined: 7月 2005
オフライン
sergiylysenko
Houdini crashes every second time when I am trying to load or render all the scene.

Is this because your computer is running out of RAM or VRAM? If not, the problem isn't the size of your scene. It's most likely an issue with the renderers. What version of Houdini are you running, and which OS? If you're on Linux, could you please submit a sampling of crash logs as a bug to Houdini support?

If the crashing is because your system is running out of memory, then instancing could certainly help with that. But you don't need to do anything fancy to take advantage of instancing with USD. Just use a Configure Primitive LOP, and use it to set "Instanceable" to "on" for all the assets you have loaded. This will be effectively the same as completely converting everything over to a copy-to-points based setup, but it will be a whole lot easier.

The Stage Manager also lets you set assets to be instanceable, and you'll actually get more benefit if you set this flag on each asset prim in the stage manager LOPs themselves, but the configure primitive approach will be easier to just test out (assuming you can devise a Primitive Pattern that can identify your various assets... The %payload auto-collection might be a good starting point, assuming your assets have payloads at the root prim level.

After setting up instancing, another thing you might want to try is to use the Expansion Effect in the Scene Graph Tree to render collapsed branches of your scene as bounding boxes (or making them invisible if you want to expansion effect to also prune content from karma renders in the viewport).

Hope that helps!
  • Quick Links