Skip to content

Instantly share code, notes, and snippets.

View morphingdesign's full-sized avatar
💭
Learning something new

Hans Palacios morphingdesign

💭
Learning something new
View GitHub Profile
@morphingdesign
morphingdesign / hou_nodeShapes.py
Last active October 15, 2024 13:10
List of available Houdini node shapes
editor = hou.ui.paneTabOfType(hou.paneTabType.NetworkEditor)
print(editor.nodeShapes())
# Returned tuple of strings:
# ('rect', 'bone', 'bulge', 'bulge_down', 'burst', 'camera',
# 'chevron_down', 'chevron_up', 'cigar', 'circle', 'clipped_left',
# 'clipped_right', 'cloud', 'diamond', 'ensign', 'gurgle', 'light',
# 'null', 'oval', 'peanut', 'pointy', 'slash', 'squared', 'star',
# 'tabbed_left', 'tabbed_right', 'tilted', 'trapezoid_down',
# 'trapezoid_up', 'wave')
@morphingdesign
morphingdesign / hou_addNodeParms.py
Last active October 10, 2022 16:30
Add custom parameters and folder to Houdini node
# Acquire node from network
node = hou.node('/obj/geo/node')
# Add folder used to collect all newly create parameters
folder = hou.FolderParmTemplate("folder", "Folder Name")
# Define folder type; default is Tabs. Set to Simple
folder.setFolderType(hou.folderType.Simple)
# Add parameter types, defined by parameter name, label, and number of components
# Add float parameter
@morphingdesign
morphingdesign / set_nodeShape.py
Created January 24, 2021 00:32
Syntax for setting a node to a specified node shape from available Houdini node shapes.
# Sets the node shape to be a circle
node.setUserData('nodeshape', 'circle')
@morphingdesign
morphingdesign / hou_nodeColors.py
Created January 24, 2021 02:49
Outline of RGB values for default Houdini node color palette.
# Sorted from left to right and top to bottom.
# Row 1
hou.Color(0.8,0.016,0.016)
hou.Color(1.0,0.0,0.0)
hou.Color(0.98,0.275,0.275)
hou.Color(0.996,0.682,0.682)
hou.Color(1.0,0.529,0.624)
hou.Color(0.624,0.329,0.396)
# Row 2
hou.Color(0.573,0.353,0.0)
@morphingdesign
morphingdesign / hou_defaultNoteAndBoxColor.py
Created January 25, 2021 02:04
Get and set default colors for Houdini sticky notes, text, and network boxes.
# Get default Houdini OOTB colors for Sticky Notes, Text, and Network Boxes
print(hou.defaultColor(hou.colorItemType.StickyNote))
# <hou.Color r=1, g=0.969, b=0.522>
print(hou.defaultColor(hou.colorItemType.StickyNoteText))
# <hou.Color r=0, g=0, b=0>
print(hou.defaultColor(hou.colorItemType.NetworkBox))
# <hou.Color r=0.52, g=0.52, b=0.52>
# Set custom default colors for Houdini Sticky Notes and Network Boxes
# Sticky Notes set to white
@morphingdesign
morphingdesign / hou_attributeToLocalVar.h
Created January 25, 2021 20:26
Create and map a point attribute to a local variable in Houdini, as an alternative to using the Attribute Create SOP.
// Create custom variable
int pt_id = i@ptnum;
// Assign variable to point attribute
i@pt_id = pt_id;
// Map point attribute to local variable
addvariablename(0, "pt_id", "PT_ID");
@morphingdesign
morphingdesign / hou_stampExp.h
Created January 26, 2021 00:53
HScript expression to retrieve local variable from stamping operator in Houdini.
stamp("../pathtoNode", "variableName", 1)
// The 3rd arg is the default value if the
// retrieved variable for a corresponding point
// does not exist.
@morphingdesign
morphingdesign / hou_connectNearPts.h
Created January 26, 2021 03:25
Connect near points with polyline in Houdini Vex with user-defined radius and max point count.
// Set Wrangle to 'Run Over Points'.
// Collect closest pts for each pt, based on radius and max pts.
// Includes user-managed channels for radius and max pts.
// Note that this list will include the current point being run
// through this point wrangle.
int pts[] = pcfind(0,"P",@P,chf('search_radius'),chi('max_points'));
// Used to visualize list in geo spreadsheet; for debugging.
i[]@pts = pts;
@morphingdesign
morphingdesign / hou_setNsetExpression.py
Last active August 3, 2021 02:23
Method for setting parameter values with specified data type or expressions.
rotateNode = hou.node('obj/box1/transform1')
speed = 20
# set() used to specify param value with corresponding data type.
rotateNode.parm('rz').set(10)
# However, it cannot be used to set the value with a non-compatible
# data type, such as a string channel reference. The use of
# setExpression() allows for such instances.
rotateNode.parm('ry').setExpression('ch("../box1/divrate2") * {}'.format(speed))
# Reference: https://www.sidefx.com/docs/houdini/hom/hou/Parm.html
@morphingdesign
morphingdesign / hou_inlineTernaryIf.h
Created February 4, 2021 19:43
Variations in formatting simple inline if statements in Houdini Vex. Complex conditionals should utilize base formatting for clarity.
// Base formatting:
// Curly brackets for encapsulating multiple statements.
if([email protected] > 0){
v@Cd = {1, 0, 0};
}
else{
v@Cd = {0, 1, 0};
}
// Inline formatting: