HDA Asset Workflow

   1246   4   2
User Avatar
Member
45 posts
Joined: July 2015
Offline
hi,

i have an asset geo as an HDA...
when modifying i typically create a new version and it will be saved with the new version number, which is fine, so i see a bunch of hda files in the hda folder...
but when an older version of the hda was placed in a hip, how can it be replaced with the new version? in maya i would "replace reference" in the reference editor.
what is the equivalent to this in houdini? and how can this be automated?
User Avatar
Member
900 posts
Joined: Feb. 2016
Offline
I thought it would be replaced automatically, but now I'm not sure anymore.
Anyway, to do it manually you RMB on the HDA instance > Action > Change Type
Edited by Andr - Sept. 24, 2022 05:42:24
User Avatar
Member
45 posts
Joined: July 2015
Offline
thx for the hint...i will try.

normally it shouldnt update automatically, because lets say you are middle in rendering with v1.1 and modify to a new v1.2...then when it automaticalky updates then you mess up rendering...

(but there are situations where you want to automate the update process)
Edited by soulcage_dpt - Sept. 24, 2022 06:12:57
User Avatar
Member
900 posts
Joined: Feb. 2016
Offline
oh, that's make sense right.

ps.
The above procedure I've described is a bit tedious, but it works for every selected node.
So in case you have multiple nodes to replace that are scattered in the network, you can ctrl+f to find and select them (by type)
Edited by Andr - Sept. 24, 2022 06:48:02
User Avatar
Member
131 posts
Joined: Aug. 2012
Offline
You can create a button in the Toolbar that compiles which nodes are using outdated definitions:

e.g. a node named "namespace::myHDA::1"

import hou
customNodes = [x for x in hou.node("/").allSubChildren() if x.type().nameComponents()[1] == "namespace"]

for node in customNodes:
    definition = node.type().definition()
    
    if definition.nodeType().name() != hou.nodeType(definition.nodeTypeCategory(), definition.nodeTypeName()).namespaceOrder()[0]:
        print("Warning... Node instance is using older definition: ", node.path())

...then filter node.path()'s result to convert the nodes you want.
  • Quick Links