
Jeff Lim
galagast
About Me
EXPERTISE
Game Artist
INDUSTRY
Gamedev
Houdini Skills
Availability
Not Specified
Recent Forum Posts
[COPs][Recipes][Error] tuple index out of range March 16, 2025, 2:46 a.m.
I sent an RFE for this, but wanted to share the info here in case anyone else has also encountered this:
#### Steps to reproduce
1. in COPs context
2. create a Slap Comp Block
3. remove the depth input from both the Block Begin and End nodes.
4. select both Block Begin and End nodes, then right click: Recipes > Save selected items as Tool.. (or Decoration...)
= Script Error:
#### Actual vs expected behavior
It should pop up the Save Tool/Decoration dialog.
#### Investigation
It looks like I will need to manually remove the last item on the Block Begin/End's Input Operators list.

In my example above, by dropping a Slap Comp Block, it starts out with two Input Operators.
But when i deleted the "Depth" input, the Input Operators list still shows 2 input items.
Deleting the last item (not the top/first item) now allows me to save the Recipe.
#### Steps to reproduce
1. in COPs context
2. create a Slap Comp Block
3. remove the depth input from both the Block Begin and End nodes.
4. select both Block Begin and End nodes, then right click: Recipes > Save selected items as Tool.. (or Decoration...)
= Script Error:
Traceback (most recent call last): File "<stdin>", line 3, in <module> File "C:\PROGRA~1/SIDEEF~1/HOUDIN~1.538/houdini/python3.11libs\hrecipes\__init__.py", line 40, in showRecipeDialog preset_dialog = NodeRecipeDialog(editor=editor, items=items, ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\PROGRA~1/SIDEEF~1/HOUDIN~1.538/houdini/python3.11libs\hrecipes\ui\nodedialog.py", line 63, in __init__ self.setSelection(items, central) File "C:\PROGRA~1/SIDEEF~1/HOUDIN~1.538/houdini/python3.11libs\hrecipes\ui\nodedialog.py", line 374, in setSelection self._nodeeditor.setSelection(list(items), central) File "C:\PROGRA~1/SIDEEF~1/HOUDIN~1.538/houdini/python3.11libs\hrecipes\ui\nodeeditor.py", line 136, in setSelection data = hou.data.clusterItemsAsData(items, **opts.asdict()) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\PROGRA~1/SIDEEF~1/HOUDIN~1.538/houdini/python3.11libs\houpythonportion\data.py", line 88, in clusterItemsAsData return networkcluster.dataForCluster(items=items, **opts.asdict()) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\PROGRA~1/SIDEEF~1/HOUDIN~1.538/houdini/python3.11libs\hrecipes\core\networkcluster.py", line 469, in dataForCluster return cluster.getData(list(items), **opts) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\PROGRA~1/SIDEEF~1/HOUDIN~1.538/houdini/python3.11libs\hrecipes\core\networkcluster.py", line 287, in getData self._addChildren(combined_items, **opts) File "C:\PROGRA~1/SIDEEF~1/HOUDIN~1.538/houdini/python3.11libs\hrecipes\core\networkcluster.py", line 181, in _addChildren items_data = networkitems.dataForNetworkItems(items=all_items, **opts) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\PROGRA~1/SIDEEF~1/HOUDIN~1.538/houdini/python3.11libs\hrecipes\core\networkitems.py", line 1212, in dataForNetworkItems return _getItemSelectionData(items, opts) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\PROGRA~1/SIDEEF~1/HOUDIN~1.538/houdini/python3.11libs\hrecipes\core\networkitems.py", line 293, in _getItemSelectionData item_data = dataForNetworkItem(item, **opts) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\PROGRA~1/SIDEEF~1/HOUDIN~1.538/houdini/python3.11libs\hrecipes\core\networkitems.py", line 1133, in dataForNetworkItem return _network_item_type_chooser[item.networkItemType().name()].dataForItem(item, **opts) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\PROGRA~1/SIDEEF~1/HOUDIN~1.538/houdini/python3.11libs\hrecipes\core\networkitems.py", line 988, in dataForItem return self.getData(item, **opts) ^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\PROGRA~1/SIDEEF~1/HOUDIN~1.538/houdini/python3.11libs\hrecipes\core\datahandler.py", line 44, in getData value = self.getter_method_chooser[key](hou_obj, opts) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\PROGRA~1/SIDEEF~1/HOUDIN~1.538/houdini/python3.11libs\hrecipes\core\networkitems.py", line 116, in _getInputData return networkitemconnection.dataForInputs(item, ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\PROGRA~1/SIDEEF~1/HOUDIN~1.538/houdini/python3.11libs\hrecipes\core\networkitemconnection.py", line 221, in dataForInputs inputs = inputsWithIndices(item, ^^^^^^^^^^^^^^^^^^^^^^^ File "C:\PROGRA~1/SIDEEF~1/HOUDIN~1.538/houdini/python3.11libs\hrecipes\core\networkitemconnection.py", line 177, in inputsWithIndices srcidx if not srcidx_as_name else _outputIndexToName(srcitem, srcidx), ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\PROGRA~1/SIDEEF~1/HOUDIN~1.538/houdini/python3.11libs\hrecipes\core\networkitemconnection.py", line 34, in _outputIndexToName return item.outputNames()[index] ~~~~~~~~~~~~~~~~~~^^^^^^^ IndexError: tuple index out of range
#### Actual vs expected behavior
It should pop up the Save Tool/Decoration dialog.
#### Investigation
It looks like I will need to manually remove the last item on the Block Begin/End's Input Operators list.
In my example above, by dropping a Slap Comp Block, it starts out with two Input Operators.
But when i deleted the "Depth" input, the Input Operators list still shows 2 input items.
Deleting the last item (not the top/first item) now allows me to save the Recipe.
Day 14 | Texture: COPS | GRAFFITI | Image March 15, 2025, 12:11 a.m.
DAY14 - Graffiti

Day 13 | Texture: COPS | SCALES | Image March 13, 2025, 2:23 p.m.
DAY13 - Scales
