import numpy as np

target_node = hou.selectedNodes()[0]
parent = target_node.parent()
geo = target_node.geometry()
mat_list = geo.findPrimAttrib("shop_materialpath").strings()
matnet = parent.createNode("matnet", node_name=str(target_node)+"_matnet")

pos = target_node.position()
matnet.setPosition(pos + hou.Vector2(3,0))

new_mats = []
for mat in mat_list:
new_mat = matnet.createNode("redshift_vopnet", node_name=str(mat))
new_mats.append(new_mat)
rs_node = new_mat.children()[1]
rs_node.setParms({"base_color":np.clip(np.random.rand(3), 0.05, 0.7)})
rs_node.setParms({"refl_roughness":np.clip(np.random.rand(1)[0], 0.1, 0.7)})

matnet.layoutChildren()

material_node = parent.createNode("material", node_name=str(target_node)+"_mats")
material_node.setInput(0, target_node)
material_node.setParms({"num_materials":len(new_mats)})
material_node.moveToGoodPosition(relative_to_inputs=True)

for count, mat in enumerate(new_mats):
mat_parm_name = "shop_materialpath"+str(count+1)
group_parm_name = "group"+str(count+1)
group_val = "@shop_materialpath="+str(mat)
material_node.setParms({mat_parm_name:mat.path()})
material_node.setParms({group_parm_name:group_val})

material_node.setDisplayFlag(True)
material_node.setRenderFlag(True)

Edit
Pub: 12 Mar 2023 12:46 UTC
Views: 129