nishi code wiki / research / soft-tissue dynamics
Soft-tissue dynamics: the plant, the drive, and the difference that reorders the work
Published · lineage: forks off the cloth and soft tissue brief, which established that material realism is not the bottleneck and that we must gate on ratios and kinematics · context: a browser WebGL2 engine with integer-deterministic fixed-point physics, shipping characters whose chest motion is already tuned and already measured
1. The plant and the drive are different quantities
| Quantity | Published value | What it describes |
|---|---|---|
| Natural frequency (plant) | mediolateral 4.87–4.91 Hz, vertical 4.99–5.02 Hz, braless, single subject | a property of the tissue and its suspension alone; visible only when the drive stops |
| Damping ratio (plant) | ζ = 0.475 ± 0.062, n = 1 | how fast the oscillation dies; governs jiggle decay |
| Drive frequency | 1.5–5.0 Hz step rate; 2–3 Hz at gait | the forcing term, a property of locomotion, not of tissue |
The two overlap at the top of the running range, and that overlap is the physiological resonance mechanism. They are not two estimates of one thing and must never be reconciled into a single number. Sources: first ten natural frequencies, single subject (secondary table; primary not pinned) · Haake & Scurr, Sports Engineering 12(4):189–197 (2010) · same, institutional record
2. Our own plant, derived from our own shipped constants
Our solver is semi-implicit Euler with stiffness K and damping C expressed per-1024, stepped at a fixed 60 Hz. That yields closed forms for both plant quantities: f_n = sqrt(K/1024) · 60 / 2π and ζ = C / (2·sqrt(1024·K)).
K = 85, and the formula returns 2.75 Hz — exactly the figure written in the engine's own comment, independently. Only then is it applied to the bred range.| Firmness stop | K | C | f_n (Hz) | ζ |
|---|---|---|---|---|
| 0 (softest bred) | 60 | 100 | 2.31 | 0.202 |
| 3 (firmest bred) | 135 | 148 | 3.47 | 0.199 |
| published human | — | — | 4.0–5.2 | 0.475 |
The gap, stated as numbers: our natural frequency is 1.4–2.2× too low and our damping ratio is 2.4× too low — our tissue is both too soft and too bouncy. Because a lightly damped plant driven at its own natural frequency amplifies by roughly 1/(2ζ), ζ = 0.20 predicts about 2.5× resonant gain, and the engine's own measurement comment independently records ~2.6×. Two derivations agreeing is why we state this as a finding rather than a suspicion.
scurr2011-breast-kinematics-2to3hz-gait; jigglephysics-naelstrof-defaults — a human gait figure (a drive) sitting beside a game mod's spring defaults, and the plant was then tuned until it sat at the drive frequency. A citation that mixes a subject measurement with a tooling default will silently license a wrong constant, because every later reader sees a citation and stops asking. The fix is structural: subject truth and solver tunables now live in separate row families that may not be compared until an instrument reports in both units.3. The identified parameters worth adopting
| Finding | Value | Why it is adoptable |
|---|---|---|
| Piecewise asymmetric stiffness | k above equilibrium 73.5 N/m; k below 658 N/m (~9×); c 1.83 and 2.07 N·s/m | validated at ≤2.6% RMSE against real running kinematics; one sign test on displacement selects the branch, which is exact in integer arithmetic and costs nothing |
| Per-axis ranges, no bra | vertical 0.057 m, mediolateral 0.034, front-back 0.035; breast mass 0.747 kg; tissue density 945 kg/m³ | CC-BY, commercially usable. Yields anisotropy 1 : 0.61 : 0.60, which independently confirms our banked 1 : 0.62 and corrects our lateral figure upward from 0.55 |
| Cup-size scaling A→G | vertical 4.2 → 9.9 cm; unsupported resultant 4.2±1.0 cm walking → 15.2±4.2 cm running | gives the per-size sub-band we had flagged as future work actual numbers |
| Node budget | 9 masses, 16 springs, 16 dampers per breast | a published, peer-reviewed topology an order of magnitude inside our budget |
| Accuracy parity bar | 7.05 mm mean surface error, offline multi-component FE vs 4D scan | anything inside this is at parity with the offline state of the art, and we can say so with a citation |
Sources: Cai et al., J Biomech 67:137–143 (2018), piecewise mass-spring-damper · Mills et al., Eur J Sport Sci (2025), CC-BY · multiplanar breast kinematics across cup sizes · Liang et al. (2026), multi-directional nonlinear MSD · Chen et al., Biomech Model Mechanobiol (2024), CC-BY
4. Contested and unresolved: Cooper's ligament stiffness
The structure that controls motion amplitude carries an unresolved measurement disagreement. Cadaver uniaxial testing gives 5.8 ± 4.2 MPa across n = 28 ligaments with a mode at 3.0 MPa; simulation practice uses 100 kPa; and historical extrapolation from other ligamentous structures gave 80–400 MPa. A 2026 patient-specific finite-element study reports that anatomically informed ligaments reduce displacement by 38% and that stiffening yields limited benefit above 2 MPa.
We therefore adopt 1–2 MPa as the behaviourally relevant window only, record the cadaver figure alongside it, and do not average the two. Sources: ex-vivo Cooper's ligament characterisation · Biomech Model Mechanobiol (2022) · Med Eng Phys (2026), ligament networks · the 100 kPa simulation baseline, CC-BY
5. Controllability: the parameterisation is the interface
A sweep of the 2025–26 literature and the SIGGRAPH 2026 index found no published framework for exposing soft-tissue behaviour as designer-facing parameters with physical meaning — only raw stiffness and damping sliders in tool forums. That absence is itself the answer: the mass-spring-damper parameterisation is the designer contract, because (k_up, k_down, c_up, c_down) per axis are four numbers a biomechanics paper also reports, which is the only property that makes them gateable at all. A learned latent would be more expressive and completely ungateable.
6. What this changes in our build
The instrument comes first. Every probe we had measured the forced response, which confounds plant with drive; the two numbers the literature publishes are only visible once the drive stops. Our characters ring down every time they stop walking, so a free pluck test was already happening in the game and nobody was recording it — which means measuring our own tissue needs no reference footage and no capture session at all. The ringdown probe reads the tissue-vs-bone channel (correct because respiration at 0.233 Hz is tracked quasi-statically, so the relative offset decays toward zero and what remains is the free response), detects extrema rather than zero crossings (crossings give period but say nothing about amplitude, and amplitude decay is the damping), and refuses any window with fewer than three peaks above two quantisation units.
q8 meant different things in the two files and nobody had converted.UNVERIFIED / declared gaps
- Markerless monocular capture is not yet a competent oracle for tissue dynamics. No 2025–26 human-mesh-recovery or 4D-Gaussian paper publishes per-region soft-tissue error; whole-mesh error sits around 9 mm, the same order as the signal being measured. Landmark measurement with an explicit scale anchor is the honest path until that changes.
- Nobody fits damping. Every differentiable-simulation parameter-identification result surveyed recovers Young's modulus, Poisson ratio and yield stress — never damping, never on human soft tissue, and never in real time (the leading method costs about two hours per scene on a workstation GPU). Damping governs jiggle decay and it is the one parameter the field is not fitting.
- No commercially licensed dataset of moving human soft tissue exists that this sweep could find. The 4D breast-motion dataset is CC-BY-NC-SA; the general 4D human datasets are academic-use. All are oracle-only: no derived asset or fitted parameter table from them may ship.
- The glute is entirely unmeasured. No published band for gluteal natural frequency, damping, mass or amplitude was found at all, and we hold no motion reference for it. Static geometry, canon ratios and muscle attachments exist on our side; dynamics do not. The absence is the first gap.
- Static droop has no citation. Resting sag is real and visible and the sweep found no published band for it.
- Values not yet measured by us: the plant figures in §2 are derived from our own source constants and validated against the engine's own stated 2.75 Hz, but the empirical ringdown had not yet reported at publication time. Derivation and measurement are different evidence classes and this brief does not conflate them.
- Single-subject provenance is restated deliberately: ζ = 0.475, the per-axis ranges, and the 7.05 mm parity bar are each n = 1. The sample size for the piecewise stiffness result was not recoverable from the accessible record.