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

commit5d5350f8d0fb1fc9dd540d734f41680db8b803cc
parent1a68a025bd
authorLucas Galante <[email protected]>
date2026-09-16 13:37
developer_vitality 1.1: age attributes match Attribute Initialize

Vitality 1.0 counts into <attr>_age1, _age2 and _age3 while Attribute
Initialize's Age toggles create _age0, _age1 and _age2, so only two
lined up and the accumulator never had an attribute to write to. 1.1
renames the counters in order: the one that resets on sign change is
_age0, the one that never resets _age1, the accumulator _age2. The
internal nodes are named for what they count. Verified on a saturated
frame, a sign flip, and an input without age attributes.

1.0 stays for hips that read the old names, with help pointing at 1.1.
developer.md and the audit list both versions.

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

 developer.md                                    |   2 +-
 otls-audit.md                                   |   3 +++
 otls/sop_lsgalante.developer_vitality.1.0.hdalc | Bin 7517 -> 7540 bytes
 otls/sop_lsgalante.developer_vitality.1.1.hdalc | Bin 0 -> 7599 bytes
 4 files changed, 4 insertions(+), 1 deletion(-)

diff --git a/developer.md b/developer.md
index eef5818..2cffa87 100644
--- a/developer.md
+++ b/developer.md
@@ -95,7 +95,7 @@ Names are the tab-menu labels without the "Developer" prefix; the file in `otls/
 - Select
 - Solver
 - Submute Begin / Submute End
-- Vitality
+- 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)
 
 ### Developer/Attribute
diff --git a/otls-audit.md b/otls-audit.md
index 3f7c705..6a60737 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_vitality 1.1` counts into `_age0..2` to match `developer_attribute_initialize`; 1.0 stays for hips that read `_age1..3`.
+>
 > Alongside: `developer_attribute_composite` gained vector and further scalar operations (`ffd6c75`), `developer_analysis` writes its statistics into the `<attr>_info` dictionary that `developer_attribute_initialize` creates, whose range is one vector2 key (`8e87ec2`, `43ba011`). No hip in the repo used any removed type; hips elsewhere that did will load those nodes as empty placeholders.
 
 | | count |
@@ -323,6 +325,7 @@ The operator list in `developer.md` uses **Scalar** names (`Scalar Diffuse`, `Sc
 | `developer_time_ramp` | 1.0 | Sop | Developer/Time | 0-0 | 3 | 0 | 0 | 0 | ok |
 | `developer_time_switch` | 1.0 | Sop | Developer/Time | 1-2 | 4 | 0 | 0 | 0 | ok |
 | `developer_vitality` | 1.0 | Sop | Developer | 1-2 | 1 | 0 | 0 | 0 | ok |
+| `developer_vitality` | 1.1 | Sop | Developer | 1-2 | 1 | 0 | 0 | 0 | ok |
 | `developer_volume_miasma` | 1.0 | Sop | Developer/Volume | 0-1 | 0 | 0 | 0 | 1 | ok |
 | `developer_weight` | 1.0 | Sop | Developer | 0-1 | 2 | 2 | 0 | 0 | ok |
 | `gem_border` | 1.0 | Cop | GEM | 0-1 | 0 | 0 | 0 | 0 | - |
diff --git a/otls/sop_lsgalante.developer_vitality.1.0.hdalc b/otls/sop_lsgalante.developer_vitality.1.0.hdalc
index 6d9c2e6..87e3159 100755
Binary files a/otls/sop_lsgalante.developer_vitality.1.0.hdalc and b/otls/sop_lsgalante.developer_vitality.1.0.hdalc differ
diff --git a/otls/sop_lsgalante.developer_vitality.1.1.hdalc b/otls/sop_lsgalante.developer_vitality.1.1.hdalc
new file mode 100644
index 0000000..db00966
Binary files /dev/null and b/otls/sop_lsgalante.developer_vitality.1.1.hdalc differ