Recipes (H20.5) not working with Octane Material Builder

Hydra Solaris
Post Reply
Andreu
Licensed Customer
Posts: 15
Joined: Sat May 09, 2020 9:20 am

The new h20.5 recipes are useful for many things one of them been saving material libraries.

The problem is that when saving a recipe with a Octane Material Builder it fails to load outputting a python error.

If the material builder has only the default 2 nodes inside then it works but it creates the nodes disconnected. If the material has any other node inside it gives the error when trying to load the saved recipe.

I works perfectly with non octane materials.

Already contacted Sidefx but they say they don't support any plugins so I could not submit the bug.

Thanks!
Andreu
BK
OctaneRender Team
Posts: 1436
Joined: Mon Oct 31, 2016 7:54 pm

Andreu wrote:The new h20.5 recipes are useful for many things one of them been saving material libraries.

The problem is that when saving a recipe with a Octane Material Builder it fails to load outputting a python error.

If the material builder has only the default 2 nodes inside then it works but it creates the nodes disconnected. If the material has any other node inside it gives the error when trying to load the saved recipe.

I works perfectly with non octane materials.

Already contacted Sidefx but they say they don't support any plugins so I could not submit the bug.

Thanks!
Andreu

Hi Andreu,

Thank you so much for this.

Would you please share the steps to replicate and the python script?

cheers
Kind Regards

bk3d
Andreu
Licensed Customer
Posts: 15
Joined: Sat May 09, 2020 9:20 am

No special steps required, Octane Material Builder node doesn't properly load when saving it as a Recipe.

Just create a default Octane Material Builder press right mouse button and select Recipes/Save selected item as tool.

Then try to load it and it loads back the Octane Material Builder node but the nodes inside are disconnected.

There isn't any python script being used for this error to ocur, is just using basic Recipe functionality to save and reload a material what is not working.

If instead of default Material you add any node before saving it to the Recipe then it will also through a python error when calling the recipe back through tab menu:

Traceback (most recent call last):
File "andreu::test", line 1, in <module>
File "C:\PROGRA~1/SIDEEF~1/HOUDIN~1.410/houdini/python3.11libs\houpythonportion\data.py", line 211, in applyTabToolRecipe
return ref.applyRecipe(kwargs, **tabtoolrecipe_set_opts)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\PROGRA~1/SIDEEF~1/HOUDIN~1.410/houdini/python3.11libs\hrecipes\storage.py", line 751, in applyRecipe
return recipedata.applyTabToolRecipe(self.loadRecipeData(add_name=True), kwargs, **tabtoolrecipe_set_opts)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\PROGRA~1/SIDEEF~1/HOUDIN~1.410/houdini/python3.11libs\hrecipes\api\recipedata.py", line 715, in applyTabToolRecipe
resulted_data = hou.data.createClusterItemsFromData(parent=parent,
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\PROGRA~1/SIDEEF~1/HOUDIN~1.410/houdini/python3.11libs\houpythonportion\data.py", line 100, in createClusterItemsFromData
return networkcluster.setClusterFromData(parent=parent,
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\PROGRA~1/SIDEEF~1/HOUDIN~1.410/houdini/python3.11libs\hrecipes\core\networkcluster.py", line 476, in setClusterFromData
return cluster.setData(parent=parent, data=data, **opts)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\PROGRA~1/SIDEEF~1/HOUDIN~1.410/houdini/python3.11libs\hrecipes\core\networkcluster.py", line 348, in setData
items_dict = networkitems.setNetworkItemsFromData(parent=parent,
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\PROGRA~1/SIDEEF~1/HOUDIN~1.410/houdini/python3.11libs\hrecipes\core\networkitems.py", line 1363, in setNetworkItemsFromData
_setItems(parent, {"children": data}, opts)
File "C:\PROGRA~1/SIDEEF~1/HOUDIN~1.410/houdini/python3.11libs\hrecipes\core\networkitems.py", line 714, in _setItems
_setItems(container=item,
File "C:\PROGRA~1/SIDEEF~1/HOUDIN~1.410/houdini/python3.11libs\hrecipes\core\networkitems.py", line 693, in _setItems
networkitemconnection.setVopInputsFromData(sub_item_data, container)
File "C:\PROGRA~1/SIDEEF~1/HOUDIN~1.410/houdini/python3.11libs\hrecipes\core\networkitemconnection.py", line 423, in setVopInputsFromData
success = _createWireFromConnectionData(wiredata, container)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\PROGRA~1/SIDEEF~1/HOUDIN~1.410/houdini/python3.11libs\hrecipes\core\networkitemconnection.py", line 394, in _createWireFromConnectionData
return setInputFromData(item, connection_data)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\PROGRA~1/SIDEEF~1/HOUDIN~1.410/houdini/python3.11libs\hrecipes\core\networkitemconnection.py", line 283, in setInputFromData
srcnode = item.parent().item(srcpath)
^^^^^^^^^^^
AttributeError: 'NoneType' object has no attribute 'parent'

As suggested by Sidefx I tried latest daily build and the python error is gone but the nodes inside the material are still disconnected.

Also tested with other external renders materials and they all work so it seems very specific of Octane Material Builder.
BK
OctaneRender Team
Posts: 1436
Joined: Mon Oct 31, 2016 7:54 pm

Andreu wrote:No special steps required, Octane Material Builder node doesn't properly load when saving it as a Recipe.

Just create a default Octane Material Builder press right mouse button and select Recipes/Save selected item as tool.

Then try to load it and it loads back the Octane Material Builder node but the nodes inside are disconnected.

There isn't any python script being used for this error to ocur, is just using basic Recipe functionality to save and reload a material what is not working.

If instead of default Material you add any node before saving it to the Recipe then it will also through a python error when calling the recipe back through tab menu:

Traceback (most recent call last):
File "andreu::test", line 1, in <module>
File "C:\PROGRA~1/SIDEEF~1/HOUDIN~1.410/houdini/python3.11libs\houpythonportion\data.py", line 211, in applyTabToolRecipe
return ref.applyRecipe(kwargs, **tabtoolrecipe_set_opts)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\PROGRA~1/SIDEEF~1/HOUDIN~1.410/houdini/python3.11libs\hrecipes\storage.py", line 751, in applyRecipe
return recipedata.applyTabToolRecipe(self.loadRecipeData(add_name=True), kwargs, **tabtoolrecipe_set_opts)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\PROGRA~1/SIDEEF~1/HOUDIN~1.410/houdini/python3.11libs\hrecipes\api\recipedata.py", line 715, in applyTabToolRecipe
resulted_data = hou.data.createClusterItemsFromData(parent=parent,
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\PROGRA~1/SIDEEF~1/HOUDIN~1.410/houdini/python3.11libs\houpythonportion\data.py", line 100, in createClusterItemsFromData
return networkcluster.setClusterFromData(parent=parent,
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\PROGRA~1/SIDEEF~1/HOUDIN~1.410/houdini/python3.11libs\hrecipes\core\networkcluster.py", line 476, in setClusterFromData
return cluster.setData(parent=parent, data=data, **opts)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\PROGRA~1/SIDEEF~1/HOUDIN~1.410/houdini/python3.11libs\hrecipes\core\networkcluster.py", line 348, in setData
items_dict = networkitems.setNetworkItemsFromData(parent=parent,
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\PROGRA~1/SIDEEF~1/HOUDIN~1.410/houdini/python3.11libs\hrecipes\core\networkitems.py", line 1363, in setNetworkItemsFromData
_setItems(parent, {"children": data}, opts)
File "C:\PROGRA~1/SIDEEF~1/HOUDIN~1.410/houdini/python3.11libs\hrecipes\core\networkitems.py", line 714, in _setItems
_setItems(container=item,
File "C:\PROGRA~1/SIDEEF~1/HOUDIN~1.410/houdini/python3.11libs\hrecipes\core\networkitems.py", line 693, in _setItems
networkitemconnection.setVopInputsFromData(sub_item_data, container)
File "C:\PROGRA~1/SIDEEF~1/HOUDIN~1.410/houdini/python3.11libs\hrecipes\core\networkitemconnection.py", line 423, in setVopInputsFromData
success = _createWireFromConnectionData(wiredata, container)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\PROGRA~1/SIDEEF~1/HOUDIN~1.410/houdini/python3.11libs\hrecipes\core\networkitemconnection.py", line 394, in _createWireFromConnectionData
return setInputFromData(item, connection_data)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\PROGRA~1/SIDEEF~1/HOUDIN~1.410/houdini/python3.11libs\hrecipes\core\networkitemconnection.py", line 283, in setInputFromData
srcnode = item.parent().item(srcpath)
^^^^^^^^^^^
AttributeError: 'NoneType' object has no attribute 'parent'

As suggested by Sidefx I tried latest daily build and the python error is gone but the nodes inside the material are still disconnected.

Also tested with other external renders materials and they all work so it seems very specific of Octane Material Builder.

Hi Andreu,

Thank you so much for the response.

Yep, we can replicate this issue and have created an internal ticket to investigate.


cheers
Kind Regards

bk3d
Andreu
Licensed Customer
Posts: 15
Joined: Sat May 09, 2020 9:20 am

Thanks BK!
User avatar
eh_studio
Licensed Customer
Posts: 21
Joined: Mon Jun 19, 2023 5:51 pm

I also noticed the same issue when trying to create recipes for Octane Material node setups. All the nodes inside would be disconnected and jumbled up after activating the recipe. Even saving the setup as a decoration didn't work. Someone in a FB group told me that recipes only work for SOP nodes, but I'm curious whether this is true or not. Hopefully you can get it to work, BK. Thanks for looking into it.
Andreu
Licensed Customer
Posts: 15
Joined: Sat May 09, 2020 9:20 am

That is the issue I'm referring to. I think when you say "Octane Material node setup" and "Octane Material Builder" is the same thing.

I have tested it and Recipes work in all context including other external render's material networks so this is a Octane plugin's issue.

One thing I forgot to mention is that it doesn't work in either "Octane Material Builder" and "Octane Material Builder Solaris" so it also affects to the non Solaris plugin.
dom_otoy
OctaneRender Team
Posts: 46
Joined: Mon Mar 17, 2025 9:33 pm

I've created a ticket for the normal plugin as well. Hope we can find a way to get this working!
Edit: Seems it's to do with how octane nodes are named, when they're created. Hopefully we can figure this out!
Post Reply

Return to “Hydra Solaris”