Asset hierarchies in Houdini

   5274   4   3
User Avatar
Member
18 posts
Joined: 11月 2015
オフライン
Hi!

This is another noob question. I tried reading through the various threads regarding this topic but I can't find a really good answer to this.
In XSI we used to have quite deep hierarchies with several SRT nulls/locators to control the individual parts of an asset. Material assignments were done per object or on groups of objects. Maya works similar.

What's the preferred way in Houdini to deal with large hierarchies/complex Assets, especially in regards to material assignments? There are so many ways to do this, but I suppose there must be a best practice common to most companies?

So far I've found the following ways:

  • Classic hierarchy using only subnets, no nulls. Material assignments at object level
This seems to be pretty uncommon. I guess because it's hard (impossible) to select the subnets in the viewport to transform things? But it's pretty fast to setup and looks quite clean to me. Since there is no way to group objects (I think?) material assignments would be assigned to each object individually.

  • Classic hirarchy with subnets and nulls
Here we're using nulls feeding into subnets to control the transformation. This has the advantage that we can see and select the nulls in the viewport to transform things. But it's super cumbersome to setup. We have to create the nulls and wire everything together - the nulls into the subnets and each sub-network input into the nulls - instead of building the hierarchies with a single click. Also things get potentially chaotic if transforms are applied to the subnets instead of the nulls feeding into them.
Materials would be applied similar to above.

These two methods can also be quite confusing with the Show/Ghost/Hide objects mode of the viewport. Although maybe that's just something one hast to get used to.

  • Flat hirarchy, only one subnet with nulls for hirachy
This seems to be quite common. But to me this seems super confusing. When importing FBX or ABC files i really often end up with gigantic trees like the one below.
To be fair, I only recently discovered the Input/Output mode for the tree view which does help a lot to navigate these networks.

All of these methods have the problem that Houdini doesn't seem to be very comfortable with lots of objects in separate object networks. For example I only recently discovered that you can't instance subnets in the viewport? How would you use such assets for large scene layouts? Or it's not possible to edit the mesh of two geometries at the same time.

  • Everything in SOPS using groups and transforms
I've seen this in a couple of tutorials. Bring in and merge all the geometry with one or multiple object merges. Or combine all the SOPs directly by using the combine tool from the shelf. Then manually or with partition sop, or with wrangles, or…. put objects into groups so things can easily be selected in the viewport.
Apply materials with material SOPs.
But building a flexible hirarchy here is almost impossible. You would need to build an inverse tree with merge and transform sops. There is no way to select the transform sops in the viewport. You can't move the transforms without the input objects (child compensation). Also transforming things in SOPs is much slower than on the object level i think? So of course for animation this really isn't an option (or is it?). So I think the only time this would be useful is when you're absolutely sure you don't want to transform things anymore in SOPs and don't care about the original hirarchy.

  • A combination. Use hirarchy for animation/transforms and a single Geometry for material assignments
This would solve some of the problems above, but even more cumbersome to setup. You have one subnet using one of the hierarchical methods above (which one?) and an additional geometry where you merge in the subnet objects and assign materials there. But you constantly would have to switch between the original hierarchy subnet and the flat geometry network if you want to change things. You still have to setup groups to separate the geometry in sops again ( I think the easiest way is to setup attributes in the original hierarchy and use a partition sop to generate the groups based on those?). Material assignment is very annoying (no drag and drop anymore) and also very hard to manage if you have to assign hundreds of materials, it's hard to find which material_sop does what.

  • any other way ?

I've attached a small example scene. Any pro tips and hints here would be greatly appreciated!

Cheers!
Edited by Kaiserlicht - 2017年8月11日 06:57:13

Attachments:
houdini_hirarchies.hip (846.0 KB)
fbx_network.JPG (27.1 KB)

User Avatar
Member
287 posts
Joined: 11月 2014
オフライン
Everything in SOPs unfortunately.
Houdini is super slow with heavy hierarchy or lot of objects. Only way i was able to usably work was at SOP level.

My workflows consist of huge variety if ABC caches. Sometimes with hierarchy, sometimes without, names, no names etc.
So after several years I have something, that works in worst scenario and never failed me.
Bad scenario for me is: 20k pieces, 150 materials, no usable names on objects.


We are assigning materials with one material node and targeting groups. Tricky part is how to create (and more important update) groups and its material assignments. With a help of friend, we come up with something that represents XSI/Maya workflow with materials assigned to groups. We have one special node that allows you update groups, move pieces to different groups and not having any duplicity (in Houdini there is no easy way how to have one object in one group only without duplicity, which is essential for shading). We even published this setup with all scripting to SideFX asking them to build it into next houdini release.

So i have ABC->shadingGroups (this is the key)->one material node.

Before shadigGroups we were using SPLIT node and recreating hieatchy based on material at SOP level.
User Avatar
Member
323 posts
Joined: 1月 2015
オフライン
Hi there,
yes this is very tricky. You also have the material style sheets when rendering in mantra.

kind regards

Olaf
User Avatar
Member
18 posts
Joined: 11月 2015
オフライン
Thanks for the input! My impression is that in Houdini there is a more strict separation between animation and shading steps. So for shading/material assignments giant SOPs with cached Animation are apparently the way to go. Although I still think it's super impractical to transform things or even layout larger scenes this way. So how are Animation scenes organized? I guess 99% are caches from other packages any way so not many people seem to care…

PS: Is it just me, or is subscribing to a topic not working? I never got any email…
User Avatar
Member
8184 posts
Joined: 9月 2011
オフライン
Deep hierarchies are a bit of a pain when it comes to shader assignments in Houdini. However, they are not without recourse. Stylesheets or custom scripts are probably the way to go for applying materials across and asset with a large number of individual nodes. When building your asset, you can tag sets of objects with ‘categories.’ Then later you can use the category as the target when assigning the material using a global stylesheet. I have found this is the most practical way to assign a material to multiple objects that exist in various hierarchy levels. This is the closest analog to shading groups in maya.

Most of the time, my experience with lighting in houdini is dealing with Alembic caches. This makes shader assignment far easier, as they can come in as packed primitives within a single object, and materials can be assigned by path attribute using a material sop.
  • Quick Links