I want to better understand a remarkable paper: https://cseweb.ucsd.edu/~alchern/projects/MinimalCurrent/
The authors provide the source code as a proprietary binary code that can only be opened in Houdini. A .hipnc
file. The binary data can be viewed in other applications, but not the source code.
Opening the file with the free licensed version of Houdini shows some graphical output.
However searching around in the documentation and playing with the UI I cannot find a text editor to actually see the source code of what the researchers were doing.
Given the original paper description, I know that the source code is contained in the Houdini file. The authors explicitly say so. But I cannot find documentation describing how to see that source code.
Houdini is described as an "IDE for computer graphics", and not a typical code/script editor. In the context of this question, the .hipnc
file contains a workflow comprising network nodes, which looks something like below in Network View
:
Assuming you are interested in the mincurr_FFT_solver
node, you can use the built-in Python Shell
to get the source code of any given node:
import hou
node = hou.node('/obj/Minimal_Current/mincurr_FFT_solver')
print(node.asCode())
Results when written to file:
# Initialize parent node variable.
if locals().get("hou_parent") is None:
hou_parent = hou.node("/obj/Minimal_Current")
# Code for /obj/Minimal_Current/mincurr_FFT_solver
hou_node = hou_parent.createNode("subnet", "mincurr_FFT_solver", run_init_scripts=False, load_contents=True, exact_type_name=True)
hou_node.move(hou.Vector2(1.25615, -5.79144))
hou_node.bypass(False)
hou_node.setDisplayFlag(False)
hou_node.hide(False)
hou_node.setHighlightFlag(False)
hou_node.setHardLocked(False)
hou_node.setSoftLocked(False)
hou_node.setSelectableTemplateFlag(False)
hou_node.setSelected(True)
hou_node.setRenderFlag(False)
hou_node.setTemplateFlag(False)
hou_node.setUnloadFlag(False)
hou_parm_template_group = hou.ParmTemplateGroup()
# Code for parameter template
hou_parm_template = hou.StringParmTemplate("label1", "Input #1 Label", 1, default_value=(["Sub-Network Input #1"]), naming_scheme=hou.parmNamingScheme.Base1, string_type=hou.stringParmType.Regular, menu_items=([]), menu_labels=([]), icon_names=([]), item_generator_script="", item_generator_script_language=hou.scriptLanguage.Python, menu_type=hou.menuType.Normal)
hou_parm_template_group.append(hou_parm_template)
# Code for parameter template
hou_parm_template = hou.StringParmTemplate("label2", "Input #2 Label", 1, default_value=(["Sub-Network Input #2"]), naming_scheme=hou.parmNamingScheme.Base1, string_type=hou.stringParmType.Regular, menu_items=([]), menu_labels=([]), icon_names=([]), item_generator_script="", item_generator_script_language=hou.scriptLanguage.Python, menu_type=hou.menuType.Normal)
hou_parm_template_group.append(hou_parm_template)
# Code for parameter template
hou_parm_template = hou.StringParmTemplate("label3", "Input #3 Label", 1, default_value=(["Sub-Network Input #3"]), naming_scheme=hou.parmNamingScheme.Base1, string_type=hou.stringParmType.Regular, menu_items=([]), menu_labels=([]), icon_names=([]), item_generator_script="", item_generator_script_language=hou.scriptLanguage.Python, menu_type=hou.menuType.Normal)
hou_parm_template_group.append(hou_parm_template)
# Code for parameter template
hou_parm_template = hou.StringParmTemplate("label4", "Input #4 Label", 1, default_value=(["Sub-Network Input #4"]), naming_scheme=hou.parmNamingScheme.Base1, string_type=hou.stringParmType.Regular, menu_items=([]), menu_labels=([]), icon_names=([]), item_generator_script="", item_generator_script_language=hou.scriptLanguage.Python, menu_type=hou.menuType.Normal)
hou_parm_template_group.append(hou_parm_template)
# Code for parameter template
hou_parm_template = hou.ButtonParmTemplate("resimulate", "Reset Simulation")
hou_parm_template.setTags({"autoscope": "0000000000000000"})
hou_parm_template_group.append(hou_parm_template)
# Code for parameter template
hou_parm_template = hou.FolderParmTemplate("folder0", "Fast ADMM Parameters", folder_type=hou.folderType.Simple, default_value=0, ends_tab_group=False)
hou_parm_template.setTags({"group_type": "simple"})
# Code for parameter template
hou_parm_template2 = hou.FloatParmTemplate("tau", "time step (tau)", 1, default_value=([0.1]), min=0, max=1, min_is_strict=False, max_is_strict=False, look=hou.parmLook.Regular, naming_scheme=hou.parmNamingScheme.Base1)
hou_parm_template2.setScriptCallbackLanguage(hou.scriptLanguage.Python)
hou_parm_template2.setTags({"autoscope": "0000000000000000", "script_callback_language": "python"})
hou_parm_template.addParmTemplate(hou_parm_template2)
# Code for parameter template
hou_parm_template2 = hou.FloatParmTemplate("c_threshold", "threshold (c_threshold)", 1, default_value=([0.5]), min=0, max=1, min_is_strict=False, max_is_strict=False, look=hou.parmLook.Regular, naming_scheme=hou.parmNamingScheme.Base1)
hou_parm_template2.setScriptCallbackLanguage(hou.scriptLanguage.Python)
hou_parm_template2.setTags({"autoscope": "0000000000000000", "script_callback_language": "python"})
hou_parm_template.addParmTemplate(hou_parm_template2)
hou_parm_template_group.append(hou_parm_template)
# Code for parameter template
hou_parm_template = hou.FolderParmTemplate("folder1", "Pointers to Volumes", folder_type=hou.folderType.Simple, default_value=0, ends_tab_group=False)
hou_parm_template.setTags({"group_type": "simple"})
# Code for parameter template
hou_parm_template2 = hou.IntParmTemplate("rhs", "RHS", 1, default_value=([32]), min=0, max=10, min_is_strict=False, max_is_strict=False, look=hou.parmLook.Regular, naming_scheme=hou.parmNamingScheme.Base1, menu_items=([]), menu_labels=([]), icon_names=([]), item_generator_script="", item_generator_script_language=hou.scriptLanguage.Python, menu_type=hou.menuType.Normal, menu_use_token=False)
hou_parm_template2.setScriptCallbackLanguage(hou.scriptLanguage.Python)
hou_parm_template2.setTags({"script_callback_language": "python"})
hou_parm_template.addParmTemplate(hou_parm_template2)
# Code for parameter template
hou_parm_template2 = hou.IntParmTemplate("ind_eta0", "eta0", 1, default_value=([2]), min=0, max=30, min_is_strict=False, max_is_strict=False, look=hou.parmLook.Regular, naming_scheme=hou.parmNamingScheme.Base1, menu_items=([]), menu_labels=([]), icon_names=([]), item_generator_script="", item_generator_script_language=hou.scriptLanguage.Python, menu_type=hou.menuType.Normal, menu_use_token=False)
hou_parm_template2.setScriptCallbackLanguage(hou.scriptLanguage.Python)
hou_parm_template2.setTags({"autoscope": "0000000000000000", "script_callback_language": "python"})
hou_parm_template.addParmTemplate(hou_parm_template2)
# Code for parameter template
hou_parm_template2 = hou.IntParmTemplate("ind_eta", "eta", 1, default_value=([5]), min=0, max=30, min_is_strict=False, max_is_strict=False, look=hou.parmLook.Regular, naming_scheme=hou.parmNamingScheme.Base1, menu_items=([]), menu_labels=([]), icon_names=([]), item_generator_script="", item_generator_script_language=hou.scriptLanguage.Python, menu_type=hou.menuType.Normal, menu_use_token=False)
hou_parm_template2.setScriptCallbackLanguage(hou.scriptLanguage.Python)
hou_parm_template2.setTags({"autoscope": "0000000000000000", "script_callback_language": "python"})
hou_parm_template.addParmTemplate(hou_parm_template2)
# Code for parameter template
hou_parm_template2 = hou.IntParmTemplate("ind_phi", "phi", 1, default_value=([9]), min=0, max=30, min_is_strict=False, max_is_strict=False, look=hou.parmLook.Regular, naming_scheme=hou.parmNamingScheme.Base1, menu_items=([]), menu_labels=([]), icon_names=([]), item_generator_script="", item_generator_script_language=hou.scriptLanguage.Python, menu_type=hou.menuType.Normal, menu_use_token=False)
hou_parm_template2.setScriptCallbackLanguage(hou.scriptLanguage.Python)
hou_parm_template2.setTags({"autoscope": "0000000000000000", "script_callback_language": "python"})
hou_parm_template.addParmTemplate(hou_parm_template2)
# Code for parameter template
hou_parm_template2 = hou.IntParmTemplate("ind_X", "X", 1, default_value=([10]), min=0, max=30, min_is_strict=False, max_is_strict=False, look=hou.parmLook.Regular, naming_scheme=hou.parmNamingScheme.Base1, menu_items=([]), menu_labels=([]), icon_names=([]), item_generator_script="", item_generator_script_language=hou.scriptLanguage.Python, menu_type=hou.menuType.Normal, menu_use_token=False)
hou_parm_template2.setScriptCallbackLanguage(hou.scriptLanguage.Python)
hou_parm_template2.setTags({"autoscope": "0000000000000000", "script_callback_language": "python"})
hou_parm_template.addParmTemplate(hou_parm_template2)
# Code for parameter template
hou_parm_template2 = hou.IntParmTemplate("ind_Xhat", "Xhat", 1, default_value=([13]), min=0, max=30, min_is_strict=False, max_is_strict=False, look=hou.parmLook.Regular, naming_scheme=hou.parmNamingScheme.Base1, menu_items=([]), menu_labels=([]), icon_names=([]), item_generator_script="", item_generator_script_language=hou.scriptLanguage.Python, menu_type=hou.menuType.Normal, menu_use_token=False)
hou_parm_template2.setScriptCallbackLanguage(hou.scriptLanguage.Python)
hou_parm_template2.setTags({"autoscope": "0000000000000000", "script_callback_language": "python"})
hou_parm_template.addParmTemplate(hou_parm_template2)
# Code for parameter template
hou_parm_template2 = hou.IntParmTemplate("ind_Xprev", "Xprev", 1, default_value=([16]), min=0, max=30, min_is_strict=False, max_is_strict=False, look=hou.parmLook.Regular, naming_scheme=hou.parmNamingScheme.Base1, menu_items=([]), menu_labels=([]), icon_names=([]), item_generator_script="", item_generator_script_language=hou.scriptLanguage.Python, menu_type=hou.menuType.Normal, menu_use_token=False)
hou_parm_template2.setScriptCallbackLanguage(hou.scriptLanguage.Python)
hou_parm_template2.setTags({"autoscope": "0000000000000000", "script_callback_language": "python"})
hou_parm_template.addParmTemplate(hou_parm_template2)
# Code for parameter template
hou_parm_template2 = hou.IntParmTemplate("ind_lambda", "lambda", 1, default_value=([19]), min=0, max=30, min_is_strict=False, max_is_strict=False, look=hou.parmLook.Regular, naming_scheme=hou.parmNamingScheme.Base1, menu_items=([]), menu_labels=([]), icon_names=([]), item_generator_script="", item_generator_script_language=hou.scriptLanguage.Python, menu_type=hou.menuType.Normal, menu_use_token=False)
hou_parm_template2.setScriptCallbackLanguage(hou.scriptLanguage.Python)
hou_parm_template2.setTags({"autoscope": "0000000000000000", "script_callback_language": "python"})
hou_parm_template.addParmTemplate(hou_parm_template2)
# Code for parameter template
hou_parm_template2 = hou.IntParmTemplate("ind_lambdahat", "lambdahat", 1, default_value=([22]), min=0, max=30, min_is_strict=False, max_is_strict=False, look=hou.parmLook.Regular, naming_scheme=hou.parmNamingScheme.Base1, menu_items=([]), menu_labels=([]), icon_names=([]), item_generator_script="", item_generator_script_language=hou.scriptLanguage.Python, menu_type=hou.menuType.Normal, menu_use_token=False)
hou_parm_template2.setScriptCallbackLanguage(hou.scriptLanguage.Python)
hou_parm_template2.setTags({"autoscope": "0000000000000000", "script_callback_language": "python"})
hou_parm_template.addParmTemplate(hou_parm_template2)
# Code for parameter template
hou_parm_template2 = hou.IntParmTemplate("ind_lambdaprev", "lambdaprev", 1, default_value=([25]), min=0, max=30, min_is_strict=False, max_is_strict=False, look=hou.parmLook.Regular, naming_scheme=hou.parmNamingScheme.Base1, menu_items=([]), menu_labels=([]), icon_names=([]), item_generator_script="", item_generator_script_language=hou.scriptLanguage.Python, menu_type=hou.menuType.Normal, menu_use_token=False)
hou_parm_template2.setScriptCallbackLanguage(hou.scriptLanguage.Python)
hou_parm_template2.setTags({"autoscope": "0000000000000000", "script_callback_language": "python"})
hou_parm_template.addParmTemplate(hou_parm_template2)
# Code for parameter template
hou_parm_template2 = hou.IntParmTemplate("ind_Y", "Y", 1, default_value=([28]), min=0, max=30, min_is_strict=False, max_is_strict=False, look=hou.parmLook.Regular, naming_scheme=hou.parmNamingScheme.Base1, menu_items=([]), menu_labels=([]), icon_names=([]), item_generator_script="", item_generator_script_language=hou.scriptLanguage.Python, menu_type=hou.menuType.Normal, menu_use_token=False)
hou_parm_template2.setScriptCallbackLanguage(hou.scriptLanguage.Python)
hou_parm_template2.setTags({"autoscope": "0000000000000000", "script_callback_language": "python"})
hou_parm_template.addParmTemplate(hou_parm_template2)
# Code for parameter template
hou_parm_template2 = hou.IntParmTemplate("ind_summand", "summand", 1, default_value=([31]), min=0, max=30, min_is_strict=False, max_is_strict=False, look=hou.parmLook.Regular, naming_scheme=hou.parmNamingScheme.Base1, menu_items=([]), menu_labels=([]), icon_names=([]), item_generator_script="", item_generator_script_language=hou.scriptLanguage.Python, menu_type=hou.menuType.Normal, menu_use_token=False)
hou_parm_template2.setScriptCallbackLanguage(hou.scriptLanguage.Python)
hou_parm_template2.setTags({"autoscope": "0000000000000000", "script_callback_language": "python"})
hou_parm_template.addParmTemplate(hou_parm_template2)
hou_parm_template_group.append(hou_parm_template)
# Code for parameter template
hou_parm_template = hou.FolderParmTemplate("folder2", "Paths to Cached Matrices", folder_type=hou.folderType.Simple, default_value=0, ends_tab_group=False)
hou_parm_template.setTags({"group_type": "simple"})
# Code for parameter template
hou_parm_template2 = hou.StringParmTemplate("path_laplacian", "DVEC Laplacian", 1, default_value=(["../vdec_laplacian1/"]), naming_scheme=hou.parmNamingScheme.Base1, string_type=hou.stringParmType.NodeReference, menu_items=([]), menu_labels=([]), icon_names=([]), item_generator_script="", item_generator_script_language=hou.scriptLanguage.Python, menu_type=hou.menuType.Normal)
hou_parm_template2.setTags({"autoscope": "0000000000000000", "oprelative": "."})
hou_parm_template.addParmTemplate(hou_parm_template2)
# Code for parameter template
hou_parm_template2 = hou.StringParmTemplate("path_sharp", "DVEC Sharp Matrix", 1, default_value=(["../vdec_sharp_matrix1/"]), naming_scheme=hou.parmNamingScheme.Base1, string_type=hou.stringParmType.NodeReference, menu_items=([]), menu_labels=([]), icon_names=([]), item_generator_script="", item_generator_script_language=hou.scriptLanguage.Python, menu_type=hou.menuType.Normal)
hou_parm_template2.setTags({"autoscope": "0000000000000000", "oprelative": "."})
hou_parm_template.addParmTemplate(hou_parm_template2)
# Code for parameter template
hou_parm_template2 = hou.StringParmTemplate("path_system_matrix", "MINCURR System Matrix", 1, default_value=(["../mincurr_system_matrix1/"]), naming_scheme=hou.parmNamingScheme.Base1, string_type=hou.stringParmType.NodeReference, menu_items=([]), menu_labels=([]), icon_names=([]), item_generator_script="", item_generator_script_language=hou.scriptLanguage.Python, menu_type=hou.menuType.Normal)
hou_parm_template2.setTags({"autoscope": "0000000000000000", "oprelative": "."})
hou_parm_template.addParmTemplate(hou_parm_template2)
hou_parm_template_group.append(hou_parm_template)
hou_node.setParmTemplateGroup(hou_parm_template_group)
# Code for /obj/Minimal_Current/mincurr_FFT_solver/label1 parm
if locals().get("hou_node") is None:
hou_node = hou.node("/obj/Minimal_Current/mincurr_FFT_solver")
hou_parm = hou_node.parm("label1")
hou_parm.lock(False)
hou_parm.deleteAllKeyframes()
hou_parm.set("Sub-Network Input #1")
hou_parm.setAutoscope(False)
# Code for /obj/Minimal_Current/mincurr_FFT_solver/label2 parm
if locals().get("hou_node") is None:
hou_node = hou.node("/obj/Minimal_Current/mincurr_FFT_solver")
hou_parm = hou_node.parm("label2")
hou_parm.lock(False)
hou_parm.deleteAllKeyframes()
hou_parm.set("Sub-Network Input #2")
hou_parm.setAutoscope(False)
# Code for /obj/Minimal_Current/mincurr_FFT_solver/label3 parm
if locals().get("hou_node") is None:
hou_node = hou.node("/obj/Minimal_Current/mincurr_FFT_solver")
hou_parm = hou_node.parm("label3")
hou_parm.lock(False)
hou_parm.deleteAllKeyframes()
hou_parm.set("Sub-Network Input #3")
hou_parm.setAutoscope(False)
# Code for /obj/Minimal_Current/mincurr_FFT_solver/label4 parm
if locals().get("hou_node") is None:
hou_node = hou.node("/obj/Minimal_Current/mincurr_FFT_solver")
hou_parm = hou_node.parm("label4")
hou_parm.lock(False)
hou_parm.deleteAllKeyframes()
hou_parm.set("Sub-Network Input #4")
hou_parm.setAutoscope(False)
# Code for /obj/Minimal_Current/mincurr_FFT_solver/resimulate parm
if locals().get("hou_node") is None:
hou_node = hou.node("/obj/Minimal_Current/mincurr_FFT_solver")
hou_parm = hou_node.parm("resimulate")
hou_parm.lock(False)
hou_parm.deleteAllKeyframes()
hou_parm.set("0")
hou_parm.setAutoscope(False)
# Code for /obj/Minimal_Current/mincurr_FFT_solver/folder0 parm
if locals().get("hou_node") is None:
hou_node = hou.node("/obj/Minimal_Current/mincurr_FFT_solver")
hou_parm = hou_node.parm("folder0")
hou_parm.lock(False)
hou_parm.deleteAllKeyframes()
hou_parm.set(0)
hou_parm.setAutoscope(False)
# Code for /obj/Minimal_Current/mincurr_FFT_solver/tau parm
if locals().get("hou_node") is None:
hou_node = hou.node("/obj/Minimal_Current/mincurr_FFT_solver")
hou_parm = hou_node.parm("tau")
hou_parm.lock(False)
hou_parm.deleteAllKeyframes()
hou_parm.set(0.040000000000000001)
hou_parm.setAutoscope(False)
# Code for /obj/Minimal_Current/mincurr_FFT_solver/c_threshold parm
if locals().get("hou_node") is None:
hou_node = hou.node("/obj/Minimal_Current/mincurr_FFT_solver")
hou_parm = hou_node.parm("c_threshold")
hou_parm.lock(False)
hou_parm.deleteAllKeyframes()
hou_parm.set(0.5)
hou_parm.setAutoscope(False)
# Code for /obj/Minimal_Current/mincurr_FFT_solver/folder1 parm
if locals().get("hou_node") is None:
hou_node = hou.node("/obj/Minimal_Current/mincurr_FFT_solver")
hou_parm = hou_node.parm("folder1")
hou_parm.lock(False)
hou_parm.deleteAllKeyframes()
hou_parm.set(0)
hou_parm.setAutoscope(False)
# Code for /obj/Minimal_Current/mincurr_FFT_solver/rhs parm
if locals().get("hou_node") is None:
hou_node = hou.node("/obj/Minimal_Current/mincurr_FFT_solver")
hou_parm = hou_node.parm("rhs")
hou_parm.lock(False)
hou_parm.deleteAllKeyframes()
hou_parm.set(32)
hou_parm.setAutoscope(False)
# Code for /obj/Minimal_Current/mincurr_FFT_solver/ind_eta0 parm
if locals().get("hou_node") is None:
hou_node = hou.node("/obj/Minimal_Current/mincurr_FFT_solver")
hou_parm = hou_node.parm("ind_eta0")
hou_parm.lock(False)
hou_parm.deleteAllKeyframes()
hou_parm.set(2)
hou_parm.setAutoscope(False)
# Code for /obj/Minimal_Current/mincurr_FFT_solver/ind_eta parm
if locals().get("hou_node") is None:
hou_node = hou.node("/obj/Minimal_Current/mincurr_FFT_solver")
hou_parm = hou_node.parm("ind_eta")
hou_parm.lock(False)
hou_parm.deleteAllKeyframes()
hou_parm.set(5)
hou_parm.setAutoscope(False)
# Code for /obj/Minimal_Current/mincurr_FFT_solver/ind_phi parm
if locals().get("hou_node") is None:
hou_node = hou.node("/obj/Minimal_Current/mincurr_FFT_solver")
hou_parm = hou_node.parm("ind_phi")
hou_parm.lock(False)
hou_parm.deleteAllKeyframes()
hou_parm.set(9)
hou_parm.setAutoscope(False)
# Code for /obj/Minimal_Current/mincurr_FFT_solver/ind_X parm
if locals().get("hou_node") is None:
hou_node = hou.node("/obj/Minimal_Current/mincurr_FFT_solver")
hou_parm = hou_node.parm("ind_X")
hou_parm.lock(False)
hou_parm.deleteAllKeyframes()
hou_parm.set(10)
hou_parm.setAutoscope(False)
# Code for /obj/Minimal_Current/mincurr_FFT_solver/ind_Xhat parm
if locals().get("hou_node") is None:
hou_node = hou.node("/obj/Minimal_Current/mincurr_FFT_solver")
hou_parm = hou_node.parm("ind_Xhat")
hou_parm.lock(False)
hou_parm.deleteAllKeyframes()
hou_parm.set(13)
hou_parm.setAutoscope(False)
# Code for /obj/Minimal_Current/mincurr_FFT_solver/ind_Xprev parm
if locals().get("hou_node") is None:
hou_node = hou.node("/obj/Minimal_Current/mincurr_FFT_solver")
hou_parm = hou_node.parm("ind_Xprev")
hou_parm.lock(False)
hou_parm.deleteAllKeyframes()
hou_parm.set(16)
hou_parm.setAutoscope(False)
# Code for /obj/Minimal_Current/mincurr_FFT_solver/ind_lambda parm
if locals().get("hou_node") is None:
hou_node = hou.node("/obj/Minimal_Current/mincurr_FFT_solver")
hou_parm = hou_node.parm("ind_lambda")
hou_parm.lock(False)
hou_parm.deleteAllKeyframes()
hou_parm.set(19)
hou_parm.setAutoscope(False)
# Code for /obj/Minimal_Current/mincurr_FFT_solver/ind_lambdahat parm
if locals().get("hou_node") is None:
hou_node = hou.node("/obj/Minimal_Current/mincurr_FFT_solver")
hou_parm = hou_node.parm("ind_lambdahat")
hou_parm.lock(False)
hou_parm.deleteAllKeyframes()
hou_parm.set(22)
hou_parm.setAutoscope(False)
# Code for /obj/Minimal_Current/mincurr_FFT_solver/ind_lambdaprev parm
if locals().get("hou_node") is None:
hou_node = hou.node("/obj/Minimal_Current/mincurr_FFT_solver")
hou_parm = hou_node.parm("ind_lambdaprev")
hou_parm.lock(False)
hou_parm.deleteAllKeyframes()
hou_parm.set(25)
hou_parm.setAutoscope(False)
# Code for /obj/Minimal_Current/mincurr_FFT_solver/ind_Y parm
if locals().get("hou_node") is None:
hou_node = hou.node("/obj/Minimal_Current/mincurr_FFT_solver")
hou_parm = hou_node.parm("ind_Y")
hou_parm.lock(False)
hou_parm.deleteAllKeyframes()
hou_parm.set(28)
hou_parm.setAutoscope(False)
# Code for /obj/Minimal_Current/mincurr_FFT_solver/ind_summand parm
if locals().get("hou_node") is None:
hou_node = hou.node("/obj/Minimal_Current/mincurr_FFT_solver")
hou_parm = hou_node.parm("ind_summand")
hou_parm.lock(False)
hou_parm.deleteAllKeyframes()
hou_parm.set(31)
hou_parm.setAutoscope(False)
# Code for /obj/Minimal_Current/mincurr_FFT_solver/folder2 parm
if locals().get("hou_node") is None:
hou_node = hou.node("/obj/Minimal_Current/mincurr_FFT_solver")
hou_parm = hou_node.parm("folder2")
hou_parm.lock(False)
hou_parm.deleteAllKeyframes()
hou_parm.set(0)
hou_parm.setAutoscope(False)
# Code for /obj/Minimal_Current/mincurr_FFT_solver/path_laplacian parm
if locals().get("hou_node") is None:
hou_node = hou.node("/obj/Minimal_Current/mincurr_FFT_solver")
hou_parm = hou_node.parm("path_laplacian")
hou_parm.lock(False)
hou_parm.deleteAllKeyframes()
hou_parm.set("../vdec_laplacian1/")
hou_parm.setAutoscope(False)
# Code for /obj/Minimal_Current/mincurr_FFT_solver/path_sharp parm
if locals().get("hou_node") is None:
hou_node = hou.node("/obj/Minimal_Current/mincurr_FFT_solver")
hou_parm = hou_node.parm("path_sharp")
hou_parm.lock(False)
hou_parm.deleteAllKeyframes()
hou_parm.set("../vdec_sharp_matrix1/")
hou_parm.setAutoscope(False)
# Code for /obj/Minimal_Current/mincurr_FFT_solver/path_system_matrix parm
if locals().get("hou_node") is None:
hou_node = hou.node("/obj/Minimal_Current/mincurr_FFT_solver")
hou_parm = hou_node.parm("path_system_matrix")
hou_parm.lock(False)
hou_parm.deleteAllKeyframes()
hou_parm.set("../mincurr_system_matrix1/")
hou_parm.setAutoscope(False)
hou_node.setExpressionLanguage(hou.exprLanguage.Hscript)
# Code to establish connections for /obj/Minimal_Current/mincurr_FFT_solver
hou_node = hou_parent.node("mincurr_FFT_solver")
if hou_parent.node("mincurr_FFT_initialize") is not None:
hou_node.setInput(0, hou_parent.node("mincurr_FFT_initialize"), 0)
hou_node.setUserData("___Version___", "19.5.465")
if hasattr(hou_node, "syncNodeVersionIfNeeded"):
hou_node.syncNodeVersionIfNeeded("19.5.465")
To address this question, I had to consult information related to Python SOP (surface operators in Houdini), such as: https://github.com/kiryha/Houdini/wiki/python-for-artists#python-integration-basics