SideFX Houdini customization package
git clone https://git.lucas.co/hou-control.git
otls: read the unread parameters on Select, Suture, Time and Time Ramp
Time and Time Ramp honour the start of Range: the output is the frame's
position between start and end, unchanged at the default start of 0.
Surface Suture's thresholds drive a fuse after the detangle: points
whose collision count has reached Fusion Threshold are fused within
Distance Threshold; 0 (the default) fuses nothing, so existing
instances behave as before. Its second input was always the rest
source and is described as such.
Select 1.1 reads Random Float's Variation, its seed and Multiplier
(which now defaults to 1 so it can be used), builds Random Vector as a
random direction per covered point with its own coverage, seed,
normalize and multiplier, and drops the newparameter placeholder. A
new minor version because Multiplier's default and effect changed and
a parameter was removed; 1.0 stays.
Co-Authored-By: Claude Fable 5.1 <[email protected]>
developer.md | 8 ++++----
otls-audit.md | 7 +++++--
otls/sop_lsgalante.developer_select.1.1.hdalc | Bin 0 -> 20741 bytes
otls/sop_lsgalante.developer_surface_suture.1.0.hdalc | Bin 6921 -> 8247 bytes
otls/sop_lsgalante.developer_time.1.0.hdalc | Bin 6012 -> 6098 bytes
otls/sop_lsgalante.developer_time_ramp.1.0.hdalc | Bin 6291 -> 6373 bytes
6 files changed, 9 insertions(+), 6 deletions(-)
diff --git a/developer.md b/developer.md
index 4efd656..b09ba0f 100644
--- a/developer.md
+++ b/developer.md
@@ -92,7 +92,7 @@ Names are the tab-menu labels without the "Developer" prefix; the file in `otls/
- Region Center
- Release
- Rotate (Vector Rotate): rotates a vector attribute about an axis attribute or a constant axis by an angle in degrees.
-- Select
+- Select 1.0 and 1.1: creates a float or vector attribute from a constant, another attribute, a dot or cross product, or a random draw; 1.1 reads the random Variation and Multiplier and builds Random Vector.
- Solver
- Submute Begin / Submute End
- Vitality 1.0 and 1.1: age counters for an attribute; 1.1 writes `_age0..2` to match Attribute Initialize, 1.0 wrote `_age1..3`.
@@ -113,12 +113,12 @@ Names are the tab-menu labels without the "Developer" prefix; the file in `otls/
- Surface Open
- Surface Remesh 1.0 and 1.1 (Remesh)
- Surface Subdivide (Subdivide)
-- Surface Suture
+- Surface Suture: resolves collisions against the previous frame and fuses points that keep colliding within a distance.
### Developer/Time
-- Time
+- Time: a detail attribute running 0 to 1 across a frame range.
- Time Analysis
-- Time Ramp
+- Time Ramp: the same through a ramp.
- Time Switch
### Developer/Volume
diff --git a/otls-audit.md b/otls-audit.md
index 76b1a70..d9abaf6 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_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.
>
> `developer_vitality 1.1` counts into `_age0..2` to match `developer_attribute_initialize`; 1.0 stays for hips that read `_age1..3`.
@@ -163,10 +165,10 @@ For each top-level parameter the audit looked for a channel reference from any c
| `developer_expire::1.0` | `attr` |
| `developer_lead::1.0` | `amt` |
| `developer_normalize::1.0` | `method` (`type` drives the branch switch since the vector fix; `method` has one entry) |
-| `developer_select::1.0` | `rnd_float_coverage`, `rnd_float_coverage_seed`, `rnd_float_variation`, `rnd_float_variation_seed`, `rnd_float_multiplier`, `newparameter` |
+| `developer_select::1.0` | `rnd_float_variation`, `rnd_float_variation_seed`, `rnd_float_multiplier`, `newparameter` (all read or removed in 1.1) |
| `developer_surface_detangle::1.0` | `developer_iteration_ct` |
| `developer_surface_remesh::1.0` | `transfer_method` |
-| `developer_surface_suture::1.0` | `distthresh`, `fusionthresh` |
+| `developer_surface_suture::1.0` | none since the thresholds drive the fuse |
| `developer_weight::1.0` | `attr`, `multiplier` |
| `gem_build_area::1.0` | `machine`, `dimensions` |
| `gem_mold_solver::1.0` | `thickness`, `frame` |
@@ -313,6 +315,7 @@ The operator list in `developer.md` uses **Scalar** names (`Scalar Diffuse`, `Sc
| `developer_release` | 1.0 | Sop | Developer | 0-1 | 0 | 0 | 0 | 0 | ok |
| `developer_rotate` | 1.0 | Sop | Developer | 0-1 | 8 | 0 | 0 | 0 | ok |
| `developer_select` | 1.0 | Sop | Developer | 1-1 | 31 | 6 | 0 | 0 | ok |
+| `developer_select` | 1.1 | Sop | Developer | 1-1 | 35 | 0 | 0 | 0 | ok |
| `developer_solver` | 1.0 | Sop | Developer | 0-1 | 8 | 0 | 0 | 0 | ok |
| `developer_submute_begin` | 1.0 | Sop | Developer | 1-1 | 2 | 0 | 0 | 0 | ok |
| `developer_submute_end` | 1.0 | Sop | Developer | 2-2 | 2 | 0 | 0 | 0 | ok |
diff --git a/otls/sop_lsgalante.developer_select.1.1.hdalc b/otls/sop_lsgalante.developer_select.1.1.hdalc
new file mode 100644
index 0000000..3dc6f26
Binary files /dev/null and b/otls/sop_lsgalante.developer_select.1.1.hdalc differ
diff --git a/otls/sop_lsgalante.developer_surface_suture.1.0.hdalc b/otls/sop_lsgalante.developer_surface_suture.1.0.hdalc
index 0d98772..d9f44a9 100755
Binary files a/otls/sop_lsgalante.developer_surface_suture.1.0.hdalc and b/otls/sop_lsgalante.developer_surface_suture.1.0.hdalc differ
diff --git a/otls/sop_lsgalante.developer_time.1.0.hdalc b/otls/sop_lsgalante.developer_time.1.0.hdalc
index 2f1ffac..0786c26 100755
Binary files a/otls/sop_lsgalante.developer_time.1.0.hdalc and b/otls/sop_lsgalante.developer_time.1.0.hdalc differ
diff --git a/otls/sop_lsgalante.developer_time_ramp.1.0.hdalc b/otls/sop_lsgalante.developer_time_ramp.1.0.hdalc
index 420caaf..ccd08a3 100755
Binary files a/otls/sop_lsgalante.developer_time_ramp.1.0.hdalc and b/otls/sop_lsgalante.developer_time_ramp.1.0.hdalc differ