SideFX Houdini customization package
git clone https://git.lucas.co/hou-control.git
developer_solver: Visualize tabs replace developer_panel
The panel's tabbed multiparm moves onto the solver as a Visualize
folder. Color tabs no longer make a Houdini visualizer: a wrangle after
the DOP network composites every enabled one into Cd in tab order,
mapping a float or integer attribute through Bounds onto its ramp and
blending it by Blend (over, add, multiply, screen) and Opacity over a
Base colour or the geometry's existing Cd. Several colour
visualizations therefore show at once, and a ramp edit never recooks
the simulation. Marker tabs keep a Houdini marker visualizer on the
solver node, with the panel's rebuild/sync Python moved over and the
OnUpdated rebuild that keeps them from crashing after a definition
update; the output carries a visualizer detail attribute pointing at
the internal visualizers null so downstream geometry draws them.
Populate reads the solver's output, where the attributes exist.
With no tabs the output is unchanged, so the solver stays at 1.0.
developer_panel is deleted; the open hip's growth_vis was folded into
its solver with all five tabs carried over.
Co-Authored-By: Claude Fable 5.1 <[email protected]>
developer.md | 3 +--
otls-audit.md | 3 ++-
otls/sop_lsgalante.developer_panel.1.0.hdalc | Bin 21182 -> 0 bytes
otls/sop_lsgalante.developer_solver.1.0.hdalc | Bin 10303 -> 25201 bytes
4 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/developer.md b/developer.md
index 3943d40..518f71f 100644
--- a/developer.md
+++ b/developer.md
@@ -88,12 +88,11 @@ Names are the tab-menu labels without the "Developer" prefix; the file in `otls/
- Metamax: running minimum and maximum of an attribute across a frame range, as detail attributes; can read the range's end frame from outside the solver.
- 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): rescales a float attribute by its sum, maximum or range to a target, or makes a vector attribute unit length.
-- 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 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
+- Solver: runs the per-frame chain on the previous frame's geometry; its Visualize tabs composite float and integer attributes into Cd through ramps, several at once, and draw vector attributes as markers (this replaced the Panel node in September 2026).
- 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`.
- Weight (Scalar Weight, Vector Weight)
diff --git a/otls-audit.md b/otls-audit.md
index 53056f5..b82ab08 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_panel` is removed (2026-09-17): its tabs live on `developer_solver`'s Visualize folder, where Color tabs are composited into `Cd` by a wrangle after the simulation (several at once, with blend and opacity) and Marker tabs keep a Houdini marker visualizer on the solver node.
+>
> `developer_surface_detangle`'s Shapeshifter algorithm is built: a point repulsion over Iterations passes with Thickness in edge lengths and a Neighbour Rings exclusion, replacing the Not Implemented error. Section 4 now lists only the empty shells.
>
> `developer_attribute_remap`'s Class (point, primitive, detail) and Type (float, vector) and `developer_normalize`'s Method (summation, maximum, range) are real menus now.
@@ -315,7 +317,6 @@ The operator list in `developer.md` uses **Scalar** names (`Scalar Diffuse`, `Sc
| `developer_metamax` | 1.0 | Sop | Developer | 1-1 | 3 | 0 | 0 | 1 | ok |
| `developer_migrate` | 1.2 | Sop | Developer | 1-1 | 13 | 0 | 0 | 0 | ok |
| `developer_normalize` | 1.0 | Sop | Developer | 1-1 | 4 | 2 | 0 | 0 | ok |
-| `developer_panel` | 1.0 | Sop | Developer | 0-1 | 3 | 0 | 0 | 0 | ok |
| `developer_region_center` | 1.0 | Sop | Developer | 1-1 | 3 | 0 | 0 | 0 | ok |
| `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 |
diff --git a/otls/sop_lsgalante.developer_panel.1.0.hdalc b/otls/sop_lsgalante.developer_panel.1.0.hdalc
deleted file mode 100755
index 7b70f05..0000000
Binary files a/otls/sop_lsgalante.developer_panel.1.0.hdalc and /dev/null differ
diff --git a/otls/sop_lsgalante.developer_solver.1.0.hdalc b/otls/sop_lsgalante.developer_solver.1.0.hdalc
index afa0f11..81fb384 100755
Binary files a/otls/sop_lsgalante.developer_solver.1.0.hdalc and b/otls/sop_lsgalante.developer_solver.1.0.hdalc differ