SideFX Houdini customization package
git clone https://git.lucas.co/hou-control.git
developer_attribute_combine: the Weights scale their attributes
Weight 0 and Weight 1 were never read. Each attribute is now multiplied
by its Weight before the operation, in all eight type-pairing
wrangles. Defaults of 1 leave existing instances unchanged, so the
version stays 1.0.
Co-Authored-By: Claude Fable 5.1 <[email protected]>
developer.md | 2 +-
otls-audit.md | 3 ++-
..._lsgalante.developer_attribute_combine.1.0.hdalc | Bin 24445 -> 24543 bytes
3 files changed, 3 insertions(+), 2 deletions(-)
diff --git a/developer.md b/developer.md
index c975977..49afdf3 100644
--- a/developer.md
+++ b/developer.md
@@ -100,7 +100,7 @@ Names are the tab-menu labels without the "Developer" prefix; the file in `otls/
### Developer/Attribute
- Attribute Clip
-- Attribute Combine (Combine)
+- Attribute Combine (Combine): combines two weighted attributes, float or vector, with an operation, or mixes a vector from their components.
- 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 float, vector or integer 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.
diff --git a/otls-audit.md b/otls-audit.md
index 064bf73..51bfb74 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_attribute_combine` multiplies each attribute by its Weight before the operation.
+>
> `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.
@@ -158,7 +160,6 @@ For each top-level parameter the audit looked for a channel reference from any c
| node | unreferenced parameters |
|---|---|
| `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` |
| `developer_attribute_remap::1.0` | `class`, `type` |
| `developer_charge::1.0` | `release`, `amount` |
diff --git a/otls/sop_lsgalante.developer_attribute_combine.1.0.hdalc b/otls/sop_lsgalante.developer_attribute_combine.1.0.hdalc
index 1ddfa07..aa423e5 100644
Binary files a/otls/sop_lsgalante.developer_attribute_combine.1.0.hdalc and b/otls/sop_lsgalante.developer_attribute_combine.1.0.hdalc differ