SideFX Houdini customization package
git clone https://git.lucas.co/hou-control.git
developer_analysis: working Class Edge and Element folder
Class Edge's switch expression was missing its ch() so it never
selected the branch, and the branch itself was half-built. It now
measures the mesh's edge lengths, min, max, sum, average, median,
ratio, spread and count, into an edges_info dictionary with the same
toggles and rounding, and passes the geometry through.
The Element folder's wrangle compared against an Attribute SOP that
had no input; the node's second input, the previous frame, was the
intent. Change writes <attr>_change and <attr>_direction, Previous
Value writes <attr>_prev, nothing when the second input is missing.
Named after the attribute so they no longer collide with a dir
vector. The Type menu and Element folder hide for Class Edge. Neither
part ever worked, so the version stays 1.0.
Co-Authored-By: Claude Fable 5.1 <[email protected]>
developer.md | 2 +-
otls-audit.md | 5 +++--
otls/sop_lsgalante.developer_analysis.1.0.hdalc | Bin 16164 -> 12800 bytes
3 files changed, 4 insertions(+), 3 deletions(-)
diff --git a/developer.md b/developer.md
index b09ba0f..c975977 100644
--- a/developer.md
+++ b/developer.md
@@ -72,7 +72,7 @@ Names are the tab-menu labels without the "Developer" prefix; the file in `otls/
### 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.
+- Analysis (Scalar Analysis, Vector Analysis): writes min, max, sum, average, ratio and spread of a point attribute into its `<attr>_info` dictionary, or of the mesh's edge lengths into `edges_info`; the Element folder compares against the previous frame.
- 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.
diff --git a/otls-audit.md b/otls-audit.md
index d9abaf6..064bf73 100644
--- a/otls-audit.md
+++ b/otls-audit.md
@@ -17,6 +17,8 @@ Audit of every HDA in `otls/`, run 2026-09-14 against Houdini 22.0.429 (Indie) w
> | `developer_vector_from_scalar` | `developer_gradient 1.0` | `95abc44` |
> | `developer_vector_rotate` | `developer_rotate 1.0` | `95abc44` |
>
+> `developer_analysis` gained a working Class Edge (edge-length statistics into `edges_info`) and Element folder (change, direction and previous value against the second input); the audit's Analysis rows are updated.
+>
> `developer_select 1.1` reads the random Variation, its seed and Multiplier, builds Random Vector and drops the `newparameter` placeholder; `developer_surface_suture` fuses points past Fusion Threshold within Distance Threshold; `developer_time` and `developer_time_ramp` honour the start of Range.
>
> `developer_lead 1.1` takes its radius from a parameter in edge lengths and blends by Amount; 1.0 had a fixed 0.05 radius and ignored Amount.
@@ -155,7 +157,6 @@ For each top-level parameter the audit looked for a channel reference from any c
| node | unreferenced parameters |
|---|---|
-| `developer_analysis::1.0` | `enable_prev` (`enable_round` and `round_places` are read since `8e87ec2`) |
| `developer_attribute_clip::1.0` | `range` |
| `developer_attribute_combine::1.0` | `input_0`, `type_0`, `weight_0`, `x_0`, `y_0`, `z_0`, `input_1`, `type_1`, `weight_1`, `x_1`, `y_1`, `z_1` |
| `developer_attribute_constant::1.0` | `class` |
@@ -285,7 +286,7 @@ The operator list in `developer.md` uses **Scalar** names (`Scalar Diffuse`, `Sc
| type | ver | category | submenu | inputs | parms | unread | dummies | bypassed | cook |
|---|---|---|---|---|---|---|---|---|---|
| `developer_align` | 1.0 | Sop | Developer | 1-1 | 11 | 0 | 0 | 0 | ok |
-| `developer_analysis` | 1.0 | Sop | Developer | 1-2 | 13 | 1 | 0 | 0 | ok |
+| `developer_analysis` | 1.0 | Sop | Developer | 1-2 | 13 | 0 | 0 | 0 | ok |
| `developer_attribute_clip` | 1.0 | Sop | Developer/Attribute | 0-1 | 1 | 1 | 0 | 0 | ok |
| `developer_attribute_combine` | 1.0 | Sop | Developer/Attribute | 1-2 | 18 | 12 | 0 | 0 | ok |
| `developer_attribute_composite` | 1.0 | Sop | Developer/Attribute | 1-2 | 5 | 0 | 0 | 0 | ok |
diff --git a/otls/sop_lsgalante.developer_analysis.1.0.hdalc b/otls/sop_lsgalante.developer_analysis.1.0.hdalc
index f908452..ac9a29e 100755
Binary files a/otls/sop_lsgalante.developer_analysis.1.0.hdalc and b/otls/sop_lsgalante.developer_analysis.1.0.hdalc differ