Jump to content

Removing shopnet attribute in bulk?


archz2

Recommended Posts

I'm trying to import an fbx model with embedded textures but the textures don't show up in the render. 

They get hidden in render because of this shop material attribute that I have to delete for each and every piece of the watch.
nEnjQ3L.png

 

Is there an automated way to delete this attribute instead of entering the node for every piece inside the wristwatch?

mOKLwE1.png

I converted the embedded materials by using ODtools.

Here's the project file. 
https://www.dropbox.com/scl/fi/e8803p5cmz2pw3vsct820/wristwatch-material-challenge.zip?rlkey=kys5oyueemjzkv9k7d86vrb9j&st=4wpwuhkt&dl=0

Edited by archz2
Link to comment
Share on other sites

1. Create an attribdelete with required parameters

2. Windows > Python Source Editor

selected_nodes = hou.selectedNodes()
source_node = selected_nodes[0]

subnet_path = "/obj/Hublot_King_Power_F1___Watch_fbx"
subnet = hou.node(subnet_path)
file_nodes = [n for n in subnet.allSubChildren() if n.type().name() == "file"]

for file_node in file_nodes:
    parent = file_node.parent()
    copied_node = source_node.copyTo(parent)

    outputs = file_node.outputs()
    copied_node.setInput(0, file_node)

3. Select attribdelete to copy to

4. Appy script

It will copy-paste selected node into each node in Hublot_King_Power_F1___Watch_fbx subnetwork and attach it to file* node

wristwatch_material_challenge.thumb.jpg.94c494171eb5464aeca437f700248376.jpg

 

Edited by fencer
Link to comment
Share on other sites

12 hours ago, fencer said:

1. Create an attribdelete with required parameters

2. Windows > Python Source Editor

selected_nodes = hou.selectedNodes()
source_node = selected_nodes[0]

subnet_path = "/obj/Hublot_King_Power_F1___Watch_fbx"
subnet = hou.node(subnet_path)
file_nodes = [n for n in subnet.allSubChildren() if n.type().name() == "file"]

for file_node in file_nodes:
    parent = file_node.parent()
    copied_node = source_node.copyTo(parent)

    outputs = file_node.outputs()
    copied_node.setInput(0, file_node)

3. Select attribdelete to copy to

4. Appy script

It will copy-paste selected node into each node in Hublot_King_Power_F1___Watch_fbx subnetwork and attach it to file* node

wristwatch_material_challenge.thumb.jpg.94c494171eb5464aeca437f700248376.jpg

 

Thank you!! Wow! This worked quite well! Is it also possible to set the display flag to attribdelete inside each of the parts in bulk too?

Link to comment
Share on other sites

Another thing. 
Is there a direct way to select materials of each piece rather than checking what material is applied to it in the render tab by selecting the obj node and then going to the matnet and then searching for the name amongst 50 materials used in the project, and then clicking the material node?

 

If I click on this button on the right side of material it opens a window containing list of all materials inside the model. Doesn't open the directly the material network of the material applied to the geometry piece.

 

 


image.png.4a16c14eeb173e9b9eba3d4fd4dd9edb.png

 

 

Jump to operator button right next to it only shows this panel. 

 

image.png.cba1c61740a0e9b0536e2996b00e2c0b.png

 

 

Edited by archz2
Link to comment
Share on other sites

Quote

Is it also possible to set the display flag to attribdelete inside each of the parts in bulk too?

attribdelete is set as render node already

Quote

Jump to operator button right next to it only shows this panel. 

not sure I understand what this issue is, jump to operator shows exact material applied to the node

  • Like 1
Link to comment
Share on other sites

On 3/22/2026 at 8:44 PM, fencer said:

attribdelete is set as render node already

Quote

Ok. Right. I ran the script again and found it was that indeed. My bad.

Also...while importing the fbx, I came across a better import option that places materials inside the existing matnet instead of creating a new one inside OBJ network.

 

image.png.b6967968c3c8aee53f60388b545af00f.png

It also creates all parts directly at the OBJ level, rather than nesting everything inside a subnet (which is what my earlier method was doing).

Would it be possible for you to tweak your Python script to work with this setup instead?

Here's the updated project file. 

https://www.dropbox.com/scl/fi/e9np7kw2n0n90s5myjrmn/wristwatch_updatedone-Copy.hiplc?rlkey=slt4wfz55snmtf2ljitfi4wzc&st=dtmr0k66&dl=0

Also, I had a broader question.. Is there a no-code way to achieve something like this in Houdini?

Right now, this approach requires knowing Python, remembering the logic, and executing it each time. Is saving these scripts in a file the standard workflow, or is there a more efficient way (like shelf tools, digital assets, or something else) that you’d recommend?

Link to comment
Share on other sites

Quote

Would it be possible for you to tweak your Python script to work with this setup instead?

Wrap new nodes into one subnetwork and use the logic as before.

Quote

Also, I had a broader question.. Is there a no-code way to achieve something like this in Houdini?

Alembic, USD...

Quote

Right now, this approach requires knowing Python, remembering the logic, and executing it each time. Is saving these scripts in a file the standard workflow, or is there a more efficient way (like shelf tools, digital assets, or something else) that you’d recommend?

Save script as a shelf tool. Improve script to be able to select "subnet_path", fully create "attribdelete" instead of copy-paste. 

Google Python examples, you will find close enough to this tasks.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...