archz2 Posted March 21 Share Posted March 21 (edited) 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. Is there an automated way to delete this attribute instead of entering the node for every piece inside the wristwatch? 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 March 21 by archz2 Quote Link to comment Share on other sites More sharing options...
fencer Posted March 21 Share Posted March 21 (edited) 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 Edited March 21 by fencer Quote Link to comment Share on other sites More sharing options...
archz2 Posted March 22 Author Share Posted March 22 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 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? Quote Link to comment Share on other sites More sharing options...
archz2 Posted March 22 Author Share Posted March 22 (edited) 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. Jump to operator button right next to it only shows this panel. Edited March 22 by archz2 Quote Link to comment Share on other sites More sharing options...
fencer Posted March 22 Share Posted March 22 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 1 Quote Link to comment Share on other sites More sharing options...
archz2 Posted March 24 Author Share Posted March 24 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. 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? Quote Link to comment Share on other sites More sharing options...
fencer Posted March 24 Share Posted March 24 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. Quote Link to comment Share on other sites More sharing options...
Recommended Posts
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.