Jeff Lim

galagast

About Me

EXPERTISE
Game Artist
INDUSTRY
Gamedev

Connect

LOCATION
Philippines

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:
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