git.lucas.co / hou-control
SideFX Houdini customization package
git clone https://git.lucas.co/hou-control.git

commit61b958d591c4f61d76965064826bbc3350cbfe92
parentec22fe36a4
authorLucas Galante <[email protected]>
date2026-09-16 13:14
developer.md: operator list matches the nodes on disk

The list used Scalar/Vector names for families that no longer exist
and pre-rename names for the surface nodes; 34 of its 55 items matched
no node. It now lists the 47 developer nodes by tab-menu submenu, with
the names each consolidated node replaced and a one-line description
where the behaviour was verified this month. The Attribute Categories
section says the scalar and vector families are one type-agnostic set.
The design prose above it is unchanged.

Co-Authored-By: Claude Fable 5.1 <[email protected]>

 developer.md | 114 +++++++++++++++++++++++++++--------------------------------
 1 file changed, 52 insertions(+), 62 deletions(-)

diff --git a/developer.md b/developer.md
index 7f2ce21..eef5818 100644
--- a/developer.md
+++ b/developer.md
@@ -1,6 +1,6 @@
 # Shapeshifter - Developer Plugin Design Document
 
-Version 0.1 | Author: Lucas Galante | December 2025
+Version 0.1 | Author: Lucas Galante | December 2025 (operator list updated September 2026)
 
 ## Overview
 
@@ -55,11 +55,8 @@ Global attributes useful for storing statistics and analyses.
 
 ## Attribute Categories
 
-### Scalar
-Operators that edit scalar attribute values.
-
-### Vector
-Operators that edit vector attribute values.
+### Scalar and Vector
+One set of attribute operators serves both. Each reads the attribute's size at cook time: a float is treated as a value in 0..1 and kept there, a vector is handled componentwise, or by its length and direction where that is the natural reading (Concentrate's Global method, Align, Bleed). The separate Scalar and Vector operator families that existed until September 2026 were merged, and the vector-only operators were merged by function (see Operators).
 
 ### Surface
 Operators that use input attributes to alter geometry topology.
@@ -71,69 +68,62 @@ Looking ahead: Volumes can be reservoirs of value. Vector directs value to flow
 
 ## Operators
 
-### Scalar
-- Scalar Analysis
-- Scalar Composite
-- Scalar Combine
-- Scalar Concentrate
-- Scalar Diffuse
-- Scalar Initialize
-- Scalar Map
-- Scalar Migrate
-- Scalar Normalize
-- Scalar Ramp
-- Scalar Weight
-
-### Vector
-- Vector Analysis
-- Vector Composite
-- Vector Conform
-- Vector Diffuse
-- Vector Direct
-- Vector From Scalar
-- Vector Migrate
-- Vector Normalize
-- Vector Rotate
-- Vector Unify
-- Vector Weight
+Names are the tab-menu labels without the "Developer" prefix; the file in `otls/` is `sop_lsgalante.developer_<name>.<version>.hdalc`. Grouped by tab-menu submenu. Where an operator replaced earlier ones, the old names follow in parentheses.
 
-### Surface
+### Developer
+- Align (Vector Conform, Vector Direct, Vector Unify): steers a vector attribute toward a list of targets in order: local average, global average, a constant, another attribute, or the surface tangent.
+- Analysis (Scalar Analysis, Vector Analysis): writes min, max, sum, average, ratio and spread into the attribute's `<attr>_info` dictionary.
+- Bleed (Scalar Bleed): decays an attribute toward zero by a per-frame amount.
+- Charge
+- Concentrate (Scalar Concentrate, Vector Concentrate): sharpens an attribute against its neighbours, globally, by distance or by connectivity.
+- Cull
+- Develop
+- Diffuse (Scalar Diffuse, Vector Diffuse): smooths an attribute toward its neighbours, by distance, connectivity or a global goal.
+- Embryo
+- Expire
+- Gradient (Vector From Scalar): a unit vector along the slope of a scalar attribute, uphill or downhill, optionally along the surface and twisted about the normal.
+- ID
+- Lead
+- Measure
+- Metamax
+- Migrate 1.2 (Scalar Migrate, Vector Migrate): pushes an attribute's values along a per-point direction vector, by proximity or connectivity; the sender loses what the target gains.
+- Normalize (Scalar Normalize, Vector Normalize)
+- Panel: one visualizer tab per attribute.
+- Region Center
+- Release
+- Rotate (Vector Rotate): rotates a vector attribute about an axis attribute or a constant axis by an angle in degrees.
+- Select
+- Solver
+- Submute Begin / Submute End
+- Vitality
+- Weight (Scalar Weight, Vector Weight)
+
+### Developer/Attribute
+- Attribute Clip
+- Attribute Combine (Combine)
+- Attribute Composite (Scalar Composite, Vector Composite): folds an operation across weighted attributes: set, add, subtract, multiply, divide, minimum, maximum, average, difference, screen, mix, cross, dot, distance, angle, project, length, normalize.
+- Attribute Constant (Constant)
+- Attribute Initialize (Scalar Initialize, Vector Initialize): one tab per attribute; creates it from a constant or a source attribute with optional noise variation, plus an `<attr>_info` dictionary holding its range and any zeroed age attributes.
+- Attribute Promote
+- Attribute Remap (Scalar Map, Scalar Ramp)
+
+### Developer/Surface
 - Surface Adapt
+- Surface Detangle (Detangle)
 - Surface Open
+- Surface Remesh 1.0 and 1.1 (Remesh)
+- Surface Subdivide (Subdivide)
 - Surface Suture
-- Subdivide
-- Remesh
-- Detangle
 
-### Time
+### Developer/Time
 - Time
+- Time Analysis
 - Time Ramp
 - Time Switch
 
-### Simulation
-- Solver
-- Develop
-- Submute Begin / End
-- Lead
+### Developer/Volume
+- Core
+- Volume Miasma
 
-### Tentative
-- Region
-- Analyze
-- Vitality
-- Edge Analysis
-- Analyze Change
-- Volume/Miasma
-- Volume/Core
-- Filter/Select
-- Region/Region Center
-- Attribute/Promote
-- Visualize/Panel
-- ID
-- Age/Expire
-- Energize
-- Create/Embryo
-- Filter/Cull
-- Combine
-- Constant
-- Measure
-- Metamax
+### Not built
+Ideas from the first draft with no node behind them: Energize, Edge Analysis, Analyze Change, Region (only Region Center exists).