I'm getting my feet wet in the creation of custom HDA's , and noticed that adjusting incoming group names is breaking the HDA.
I noticed the same behavior with most SOPs in Houdini like Polybevel or Polyextrude for instance , so the complete network breaks downstream and one has to manually adjust all the group names in all the SOPs that use the group.
So I suspect it's a Houdini issue and it's just not working like one would expect in an app that is designed to be procedural.
Or is there a way to make the HDA automatically adjust the changed incoming group name , even when it's locked ?
Locked HDA Group rename
164 4 1-
- toonafish
- Member
- 583 posts
- Joined: March 2014
- Offline
-
- tamte
- Member
- 9493 posts
- Joined: July 2007
- Offline
Changing the group or attribute name upstream will not propagate the new name to all nodes downstream, that would be extremely dangerous so really the same answer as here [www.sidefx.com]
This has nothing to do with locked HDA, since any group name parameter can be promoted to the top of the HDA
However the group name in that HDA's group parm will not change automagically just because one of the nodes upstream had it renamed at one point, same reasons as explained in other thread
This has nothing to do with locked HDA, since any group name parameter can be promoted to the top of the HDA
However the group name in that HDA's group parm will not change automagically just because one of the nodes upstream had it renamed at one point, same reasons as explained in other thread
Tomas Slancik
CG Supervisor
Framestore, NY
CG Supervisor
Framestore, NY
-
- toonafish
- Member
- 583 posts
- Joined: March 2014
- Offline
hey, thanks for the quick reply.
So I guess it's basically the same was with UV's ?
I still don't get why it's considered a good thing everything downstream breaks after adjusting a group or uv name, I think that's what's procedural is all about. Or at least create an option to automatically propagate downstream or not.
The strange thing is though, when I use a channel-reference that references the actual Group node that is plugged into the HDA (chs("../../group2/groupname") , the group name seems to be automatically adjusted. But then it only works when the Group node is always called "group2", so in this case I'm referencing a group selection menu in the HDA Parameter Interface (chs("../targetgroup") and that one doesn't get updated strangely enough.
So I guess it's basically the same was with UV's ?
I still don't get why it's considered a good thing everything downstream breaks after adjusting a group or uv name, I think that's what's procedural is all about. Or at least create an option to automatically propagate downstream or not.
The strange thing is though, when I use a channel-reference that references the actual Group node that is plugged into the HDA (chs("../../group2/groupname") , the group name seems to be automatically adjusted. But then it only works when the Group node is always called "group2", so in this case I'm referencing a group selection menu in the HDA Parameter Interface (chs("../targetgroup") and that one doesn't get updated strangely enough.
-
- tamte
- Member
- 9493 posts
- Joined: July 2007
- Offline
You may need to be more specific in what you are trying to do
Channel references are the way to reference values from other parameters
If you are talking about referencing parameters on your HDA from nodes within the HDA, that's the common practice and you should always use relative reference
if your HDA parameters are referencing parameters on nodes outside of HDA, then they would even follow if those nodes are renamed as there is direct dependency between those parameters
However if parameters on nodes inside of your HDA are referencing parameters on nodes outside of the HDA, that's not encouraged and you even get warnings upon saving rhe definition as those nodes may not exist when you create new instance of your HDA in the future
And it's considered good because it's predictable
What you are asking for would modify your scene in ways you can't keep track of and even then it wouldnt be able to modify everything as the amount of ways to procedurally define which attribute name or group any particular node or HDA will use is vast and is not limited by defining the name as a parameter
So if you want that flexibility, referencing all names from single control parameter is much more predictable, or from the same detail attrib or any way you want to pass that information to other nodes
However this is not always needed, so really depends on usecase
Channel references are the way to reference values from other parameters
If you are talking about referencing parameters on your HDA from nodes within the HDA, that's the common practice and you should always use relative reference
if your HDA parameters are referencing parameters on nodes outside of HDA, then they would even follow if those nodes are renamed as there is direct dependency between those parameters
However if parameters on nodes inside of your HDA are referencing parameters on nodes outside of the HDA, that's not encouraged and you even get warnings upon saving rhe definition as those nodes may not exist when you create new instance of your HDA in the future
toonafishIts the same for all attributes and groups
So I guess it's basically the same was with UV's ?
I still don't get why it's considered a good thing everything downstream breaks after adjusting a group or uv name
And it's considered good because it's predictable
What you are asking for would modify your scene in ways you can't keep track of and even then it wouldnt be able to modify everything as the amount of ways to procedurally define which attribute name or group any particular node or HDA will use is vast and is not limited by defining the name as a parameter
So if you want that flexibility, referencing all names from single control parameter is much more predictable, or from the same detail attrib or any way you want to pass that information to other nodes
However this is not always needed, so really depends on usecase
Edited by tamte - yesterday 12:48:26
Tomas Slancik
CG Supervisor
Framestore, NY
CG Supervisor
Framestore, NY
-
- toonafish
- Member
- 583 posts
- Joined: March 2014
- Offline
Hey thanks for taking the time.
But I guess what I'm trying to do is fairly simple. I'm just trying to automate adding Normals and an attribute wrange to properly copy and align some objects to a point selection on some geo to get my feet wet in creating HDA's.
So I created a Subnet/HDA with 2 inputs, and the 2nd input goes into the Target Points input of a "copytopoint" SOP in the HDA, and I then created a pointgroup that I plugged into the HDA.
But I added a selection menu to the HDA's Parameter Interface so I can select different incoming groups, and I'm channel-referencing this group parameter in the "Target Points" of the "copytopoints" SOP inside the HDA (chs("../targetgroup"))
But if it's easier I can put the scene and hda in dropbox.
But I guess what I'm trying to do is fairly simple. I'm just trying to automate adding Normals and an attribute wrange to properly copy and align some objects to a point selection on some geo to get my feet wet in creating HDA's.
So I created a Subnet/HDA with 2 inputs, and the 2nd input goes into the Target Points input of a "copytopoint" SOP in the HDA, and I then created a pointgroup that I plugged into the HDA.
But I added a selection menu to the HDA's Parameter Interface so I can select different incoming groups, and I'm channel-referencing this group parameter in the "Target Points" of the "copytopoints" SOP inside the HDA (chs("../targetgroup"))
But if it's easier I can put the scene and hda in dropbox.
-
- Quick Links

