ugly-app 0.1.968 → 0.1.970
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +14 -10
- package/dist/character/shared/lib/retarget.d.ts.map +1 -1
- package/dist/character/shared/lib/retarget.js +85 -3
- package/dist/character/shared/lib/retarget.js.map +1 -1
- package/dist/cli/version.d.ts +1 -1
- package/dist/cli/version.js +1 -1
- package/package.json +1 -1
- package/src/character/shared/lib/retarget.ts +91 -3
- package/src/cli/version.ts +1 -1
package/README.md
CHANGED
|
@@ -68,11 +68,12 @@ const app = createApp(
|
|
|
68
68
|
(configurator: AppConfigurator) => {
|
|
69
69
|
configurator.setPages({ pages });
|
|
70
70
|
configurator.setExperiments(experiments);
|
|
71
|
+
const tables: Record<string, Record<string, string>> = { en, es };
|
|
71
72
|
configurator.setStrings({
|
|
72
73
|
defaultLang: stringsDef.defaultLang,
|
|
73
74
|
langs: stringsDef.langs,
|
|
74
75
|
criticalKeys: stringsDef.criticalKeys,
|
|
75
|
-
getTable: (lang) =>
|
|
76
|
+
getTable: (lang) => tables[lang] ?? tables[stringsDef.defaultLang]!,
|
|
76
77
|
});
|
|
77
78
|
configurator.setWorkers(cronTasks, cronHandlers);
|
|
78
79
|
configurator.setOnEmail(async (inbound: InboundEmail) => { /* … */ });
|
|
@@ -337,9 +338,9 @@ export const {
|
|
|
337
338
|
|
|
338
339
|
**Returns:**
|
|
339
340
|
|
|
340
|
-
- **`RouterProvider`** — props: `children`, `fallback
|
|
341
|
-
- **`RouterView`** — renders the active page with animated transitions. Props: `durationMs?`, `easing?: EasingFunction`, `transitionComponent?: React.ComponentType<RouterTransitionProps
|
|
342
|
-
- **`useRouter()`** — returns `RouterContextValue<Pages
|
|
341
|
+
- **`RouterProvider`** — props: `children`, `fallback?: ReactNode` (rendered before the initial route resolves), `isAuthenticated?: () => boolean`, `initialUrl?: { pathname, search }` (required for SSR; used during client hydration so the first render matches the server output). Manages route state, browser history, and the popup layer. Runs the per-route auth check synchronously and renders `<AuthRoot>` in place of the page when the current route has `auth: true` and `isAuthenticated()` returns false — apps cannot override this login fallback.
|
|
342
|
+
- **`RouterView`** — renders the active page with animated transitions (default: `ViewFlipper`). Props: `durationMs?`, `easing?: EasingFunction`, `transitionComponent?: React.ComponentType<RouterTransitionProps>`, `renderPage?(state: RouterStateRaw) => ReactElement` (sync alternative to `allPages` loaders — bypassed when the auth guard is showing).
|
|
343
|
+
- **`useRouter()`** — returns `RouterContextValue<Pages>`: `{ current, transitionType, push, replace, back, openPopup, closePopup, closeAllPopups }`. Throws if used outside `<RouterProvider>`.
|
|
343
344
|
- **`Link`** — typed SPA link bound to this router. Renders a real `<a>` (right-click / cmd-click / SEO keep working) but intercepts a plain left-click and routes through `push` / `replace`. Props: `to`, `params` (both type-checked against `pages`), `replace?`, `children`, plus common anchor attrs (`className`, `style`, `target`, `aria-label`, `data-id`, `onClick`).
|
|
344
345
|
- **`setAllPages(map)`** — register the lazy `PageMap<Pages>` after construction (typically from the browser entry, so the Worker's import graph stays free of every lazy page).
|
|
345
346
|
|
|
@@ -428,7 +429,7 @@ const handle = openPopup(<MyContent />, {
|
|
|
428
429
|
handle.hide(); // dismiss programmatically — same as router.closePopup(handle.id)
|
|
429
430
|
```
|
|
430
431
|
|
|
431
|
-
`openPopup` returns a `PopupHandle = { id, hide }`. Modes:
|
|
432
|
+
`openPopup(content, options?)` returns a `PopupHandle = { id, hide }` — `hide()` is sugar for `router.closePopup(handle.id)`. Modes:
|
|
432
433
|
|
|
433
434
|
- **`block`** (default) — 40% opacity backdrop, **does not** dismiss on backdrop click.
|
|
434
435
|
- **`transient`** — 20% opacity backdrop, **dismisses** on backdrop click.
|
|
@@ -436,8 +437,9 @@ handle.hide(); // dismiss programmatically — same as router.closePopup(handle.
|
|
|
436
437
|
|
|
437
438
|
`renderLayer` receives `{ content, spring, hide }`: `spring` is a
|
|
438
439
|
`createAnimatedValue()` result driving 0 → 1; `hide` closes the popup. The
|
|
439
|
-
default layer animates open with `easeOut` (250 ms) and closed
|
|
440
|
-
`easeIn` (200 ms)
|
|
440
|
+
default layer animates open with `easeOut` (default 250 ms) and closed
|
|
441
|
+
with `easeIn` (default 200 ms); override via `animConfig.duration` /
|
|
442
|
+
`animConfig.easing`. Popups render as siblings of the router's children
|
|
441
443
|
(managed inside `RouterProvider`), so they stack above every page.
|
|
442
444
|
|
|
443
445
|
### Scroll containers
|
|
@@ -532,9 +534,11 @@ const {
|
|
|
532
534
|
`useApp<TAsyncOptions>()` is generic in the async-options type so apps can
|
|
533
535
|
pass a custom option through to a custom `loadingOverlay` element. When
|
|
534
536
|
`runAsync` is pending, `AppProvider` `cloneElement`s the overlay with
|
|
535
|
-
`{ label, asyncOptions }
|
|
536
|
-
|
|
537
|
-
|
|
537
|
+
`{ label, asyncOptions }` (and hides it once the last concurrent
|
|
538
|
+
`runAsync` resolves — counts are refcounted, not toggled).
|
|
539
|
+
`useAppOptional()` returns `null` outside the provider;
|
|
540
|
+
`useLocalizer()` prefers `<StringsProvider>` data, falls back to the
|
|
541
|
+
`AppProvider` `localizer` prop, and finally to identity.
|
|
538
542
|
|
|
539
543
|
Two popup APIs coexist: `useRouter().openPopup()` (spring-animated,
|
|
540
544
|
dismissible, mode-aware — **the default choice**) and `useApp().showPopup()`
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"retarget.d.ts","sourceRoot":"","sources":["../../../../src/character/shared/lib/retarget.ts"],"names":[],"mappings":"AA+DA,OAAO,EAAqB,KAAK,IAAI,EAAE,KAAK,IAAI,EAAE,MAAM,eAAe,CAAC;AAExE,sEAAsE;AACtE,MAAM,WAAW,OAAO;IACtB,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;IACzB,4CAA4C;IAC5C,OAAO,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC;IAC3B,0CAA0C;IAC1C,KAAK,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC;IACzB,+FAA+F;IAC/F,KAAK,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC;CAC1B;AAED,0FAA0F;AAC1F,MAAM,WAAW,QAAQ;IACvB,wFAAwF;IACxF,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC,CAAC;IACnC,oEAAoE;IACpE,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAC7B,kEAAkE;IAClE,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;CAC5B;AAED,8DAA8D;AAC9D,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,YAAY,CAAC;IACpB,MAAM,EAAE,YAAY,CAAC;CACtB;
|
|
1
|
+
{"version":3,"file":"retarget.d.ts","sourceRoot":"","sources":["../../../../src/character/shared/lib/retarget.ts"],"names":[],"mappings":"AA+DA,OAAO,EAAqB,KAAK,IAAI,EAAE,KAAK,IAAI,EAAE,MAAM,eAAe,CAAC;AAExE,sEAAsE;AACtE,MAAM,WAAW,OAAO;IACtB,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;IACzB,4CAA4C;IAC5C,OAAO,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC;IAC3B,0CAA0C;IAC1C,KAAK,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC;IACzB,+FAA+F;IAC/F,KAAK,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC;CAC1B;AAED,0FAA0F;AAC1F,MAAM,WAAW,QAAQ;IACvB,wFAAwF;IACxF,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC,CAAC;IACnC,oEAAoE;IACpE,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAC7B,kEAAkE;IAClE,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;CAC5B;AAED,8DAA8D;AAC9D,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,YAAY,CAAC;IACpB,MAAM,EAAE,YAAY,CAAC;CACtB;AA0HD,mEAAmE;AACnE,wBAAgB,WAAW,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,GAAG,IAAI,CAkBlD;AAOD,8FAA8F;AAC9F,wBAAgB,aAAa,CAC3B,IAAI,EAAE,QAAQ,GACb,GAAG,CAAC,MAAM,EAAE;IAAE,CAAC,EAAE,IAAI,CAAC;IAAC,CAAC,EAAE,IAAI,CAAA;CAAE,CAAC,CA0BnC;AAED;;;;;GAKG;AACH,wBAAgB,SAAS,CACvB,GAAG,EAAE,OAAO,EACZ,IAAI,EAAE,QAAQ,EACd,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE;IAAE,CAAC,EAAE,IAAI,CAAC;IAAC,CAAC,EAAE,IAAI,CAAA;CAAE,CAAC,GAC3C,CAAC,IAAI,GAAG,IAAI,CAAC,EAAE,CAsHjB;AAED,kGAAkG;AAClG,wBAAgB,UAAU,CAAC,EAAE,EAAE,UAAU,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI,CA8B1D;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,SAAS,CACvB,GAAG,EAAE,OAAO,EACZ,CAAC,EAAE,CAAC,IAAI,GAAG,IAAI,CAAC,EAAE,EAClB,IAAI,EAAE,QAAQ,EACd,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,EAC/B,IAAI,EAAE,MAAM,GACX,YAAY,CA0Ed"}
|
|
@@ -81,6 +81,15 @@ const TIP = /(?:_End|Hand(?:Thumb|Index|Middle|Ring|Pinky)4)$/;
|
|
|
81
81
|
* in all-mine-sky.
|
|
82
82
|
*/
|
|
83
83
|
const FOOT_CHAIN = /^(?:Left|Right)(?:Foot|ToeBase|Toe_End)$/;
|
|
84
|
+
/**
|
|
85
|
+
* How far a container's own bind may depart from bilateral symmetry before it is not a bind.
|
|
86
|
+
*
|
|
87
|
+
* ⚠️ THE GAP IS ENORMOUS, WHICH IS WHY ONE CONSTANT CAN SERVE. Measured over the shipped
|
|
88
|
+
* catalogue: Mixamo FBX 0.2°, 1.4°; animation-only GLBs 32.5°, 60.3°, 60.3°. Anything between 5°
|
|
89
|
+
* and 25° would separate them identically, so this is a threshold with nothing balanced on it.
|
|
90
|
+
* See the trust test in `calibrate`.
|
|
91
|
+
*/
|
|
92
|
+
const MIRROR_TOLERANCE_DEG = 10;
|
|
84
93
|
/**
|
|
85
94
|
* The NECK AND HEAD take the bind-relative delta too, for the same reason and by the same rule.
|
|
86
95
|
*
|
|
@@ -124,9 +133,42 @@ const FOOT_CHAIN = /^(?:Left|Right)(?:Foot|ToeBase|Toe_End)$/;
|
|
|
124
133
|
* exclusion list. Do not "fix" that test by putting the aim back.
|
|
125
134
|
*/
|
|
126
135
|
const NECK_HEAD_CHAIN = /^(?:Neck|Head|HeadTop_End)$/;
|
|
136
|
+
/**
|
|
137
|
+
* The CLAVICLES take the bind-relative delta as well — the third instance of the same class, and
|
|
138
|
+
* the one with the widest blast radius.
|
|
139
|
+
*
|
|
140
|
+
* `Shoulder` is a short bone between two joints that every rigger places by convention, so the
|
|
141
|
+
* direction from the shoulder root to the arm root is a RIG CHOICE, not a pose. Aiming ours at the
|
|
142
|
+
* clip's adopts that choice for the whole clip: our clavicle never returns to our own bind, it sits
|
|
143
|
+
* permanently rotated by whatever the two rigs disagree about — measured across the catalogue at
|
|
144
|
+
* 13.8°, 30.2°, 54.1° and 82.3° depending on which source character the file was exported from.
|
|
145
|
+
* That is exactly why the same body read as droop-shouldered in one clip and shrugging in another.
|
|
146
|
+
*
|
|
147
|
+
* Found by auditing all 165 built-ins for pose quality and then running the SAME AUDIT on the
|
|
148
|
+
* source rigs (ugly-bot's `catalogueSweep.test.ts`). The sources keep their clavicles inside the
|
|
149
|
+
* physiological range; we were inflating them:
|
|
150
|
+
*
|
|
151
|
+
* clip their clavicle ours (aimed) ours (bind-relative)
|
|
152
|
+
* m_run_01 0° 117° 0°
|
|
153
|
+
* m_expr_07 0° 114° 0°
|
|
154
|
+
* f_dance_01 0° 85° 0°
|
|
155
|
+
* f_dance_04 47° 92° 47°
|
|
156
|
+
* m_dance_53 61° 74° 60°
|
|
157
|
+
*
|
|
158
|
+
* Under this rule our clavicle swing equals the clip's own — the last column reproduces the first.
|
|
159
|
+
* `f_dance_01`'s "weird shoulder contortion in the back" was ours, not the animation's.
|
|
160
|
+
*
|
|
161
|
+
* ⚠️ AND THE SWING MUST BE MEASURED IN THE CHEST'S FRAME, or none of the above is visible. The
|
|
162
|
+
* first version of that audit compared world directions, so a breakdancer who turned upside down
|
|
163
|
+
* reported a 174° clavicle and 36 clips came back "not physiological" for rolling over.
|
|
164
|
+
*
|
|
165
|
+
* ⚠️ THIS RETIRES THE CLAVICLE AIM ASSERTION, in this repo's `fbxCalibrate`/`irRetarget` and in
|
|
166
|
+
* all-mine-sky's. A bone on this list has no aim to check. Do not put it back.
|
|
167
|
+
*/
|
|
168
|
+
const CLAVICLE = /^(?:Left|Right)Shoulder$/;
|
|
127
169
|
/** Bones whose clip-side direction is a PLACEMENT CONVENTION rather than a pose, and which
|
|
128
170
|
* therefore hold our own bind and replay only the clip's motion deltas. */
|
|
129
|
-
const bindRelative = (name) => FOOT_CHAIN.test(name) || NECK_HEAD_CHAIN.test(name);
|
|
171
|
+
const bindRelative = (name) => FOOT_CHAIN.test(name) || NECK_HEAD_CHAIN.test(name) || CLAVICLE.test(name);
|
|
130
172
|
const vNorm = (v) => {
|
|
131
173
|
const l = Math.hypot(v[0], v[1], v[2]) || 1;
|
|
132
174
|
return [v[0] / l, v[1] / l, v[2] / l];
|
|
@@ -254,12 +296,52 @@ export function calibrate(rig, bind, clipWorld) {
|
|
|
254
296
|
calibrated[i] = C;
|
|
255
297
|
return { S, C };
|
|
256
298
|
};
|
|
299
|
+
// ⚠️ IS THIS CONTAINER'S STORED REST ACTUALLY A BIND? The two rules answer to
|
|
300
|
+
// the clip's bind very differently, and it decides which one is safe:
|
|
301
|
+
//
|
|
302
|
+
// AIM is INDEPENDENT of it. `ours(t)` points where `clip(t)` points at every
|
|
303
|
+
// frame by construction, whatever the bind was.
|
|
304
|
+
// BIND-RELATIVE is ENTIRELY BUILT ON IT — it replays `clip`'s delta FROM its
|
|
305
|
+
// bind — so a rest that is not a bind becomes a constant rotation error that
|
|
306
|
+
// no frame of animation put there and none takes away.
|
|
307
|
+
//
|
|
308
|
+
// A humanoid bind is bilaterally symmetric. Reflect the left foot's bind
|
|
309
|
+
// direction across the sagittal plane and it must land on the right's. Measured
|
|
310
|
+
// over the real catalogue: Mixamo FBX downloads disagree by 0.2°–1.4°, while
|
|
311
|
+
// several animation-only GLBs disagree by 32°–60°. Those GLBs carry no skin,
|
|
312
|
+
// therefore no `inverseBindMatrices`, therefore no bind at all — glTF never
|
|
313
|
+
// promised the node TRS was one, and for those files it plainly is not.
|
|
314
|
+
// Measured in ugly-bot's `upperBodyProbe.test.ts`, where it showed up as a foot
|
|
315
|
+
// rotated 59° out of true for an entire clip whose own animation was symmetric.
|
|
316
|
+
//
|
|
317
|
+
// Where the test fails the foot chain falls back to AIM, which cannot be
|
|
318
|
+
// poisoned by a bind it does not read. The cost is Mixamo's toes-on-the-ground
|
|
319
|
+
// convention on those clips — the very thing FOOT_CHAIN exists to avoid — so
|
|
320
|
+
// this is the lesser of two known defects, not a fix for the container. A GLB
|
|
321
|
+
// that fails this wants re-exporting.
|
|
322
|
+
const footDir = (side) => {
|
|
323
|
+
const a = clipWorld.get(`${side}Foot`);
|
|
324
|
+
const b = clipWorld.get(`${side}ToeBase`);
|
|
325
|
+
if (!a || !b)
|
|
326
|
+
return null;
|
|
327
|
+
return vNorm([b.p[0] - a.p[0], b.p[1] - a.p[1], b.p[2] - a.p[2]]);
|
|
328
|
+
};
|
|
329
|
+
const l = footDir('Left');
|
|
330
|
+
const r = footDir('Right');
|
|
331
|
+
let footBindTrusted = true;
|
|
332
|
+
if (l && r) {
|
|
333
|
+
// Mirror is a negated X: the sagittal plane is x = 0 in both rigs.
|
|
334
|
+
const dot = Math.max(-1, Math.min(1, -l[0] * r[0] + l[1] * r[1] + l[2] * r[2]));
|
|
335
|
+
footBindTrusted = (Math.acos(dot) * 180) / Math.PI <= MIRROR_TOLERANCE_DEG;
|
|
336
|
+
}
|
|
257
337
|
const K = Array.from({ length: n }, () => null);
|
|
258
338
|
for (let i = 0; i < n; i++) {
|
|
259
|
-
const
|
|
339
|
+
const name = rig.names[i];
|
|
340
|
+
const cw = clipWorld.get(name);
|
|
260
341
|
if (!cw)
|
|
261
342
|
continue;
|
|
262
|
-
|
|
343
|
+
const useBindRelative = bindRelative(name) && (footBindTrusted || !FOOT_CHAIN.test(name));
|
|
344
|
+
K[i] = useBindRelative
|
|
263
345
|
? qMul(qConj(cw.q), worldRest(i))
|
|
264
346
|
: qMul(qConj(cw.q), pose(i).C);
|
|
265
347
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"retarget.js","sourceRoot":"","sources":["../../../../src/character/shared/lib/retarget.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"retarget.js","sourceRoot":"","sources":["../../../../src/character/shared/lib/retarget.ts"],"names":[],"mappings":"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"}
|
package/dist/cli/version.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export declare const CLI_VERSION = "0.1.
|
|
1
|
+
export declare const CLI_VERSION = "0.1.969";
|
|
2
2
|
//# sourceMappingURL=version.d.ts.map
|
package/dist/cli/version.js
CHANGED
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "ugly-app",
|
|
3
3
|
"packageManager": "pnpm@10.34.5",
|
|
4
|
-
"version": "0.1.
|
|
4
|
+
"version": "0.1.970",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"comment:files": "Allowlist what ships to npm. dist = runtime; src = sourcemap targets (dist/*.js.map reference ../../src/); templates = CLI scaffold. Everything else at repo root (.pgdata local Postgres, coverage, assets/icons sources, test/, test-results/) is excluded by omission. The !negations strip the scaffold's installed deps + cruft (templates/node_modules is 200MB+ and must never ship). package.json/README/LICENSE ship automatically.",
|
|
7
7
|
"files": [
|
|
@@ -112,6 +112,16 @@ const TIP = /(?:_End|Hand(?:Thumb|Index|Middle|Ring|Pinky)4)$/;
|
|
|
112
112
|
*/
|
|
113
113
|
const FOOT_CHAIN = /^(?:Left|Right)(?:Foot|ToeBase|Toe_End)$/;
|
|
114
114
|
|
|
115
|
+
/**
|
|
116
|
+
* How far a container's own bind may depart from bilateral symmetry before it is not a bind.
|
|
117
|
+
*
|
|
118
|
+
* ⚠️ THE GAP IS ENORMOUS, WHICH IS WHY ONE CONSTANT CAN SERVE. Measured over the shipped
|
|
119
|
+
* catalogue: Mixamo FBX 0.2°, 1.4°; animation-only GLBs 32.5°, 60.3°, 60.3°. Anything between 5°
|
|
120
|
+
* and 25° would separate them identically, so this is a threshold with nothing balanced on it.
|
|
121
|
+
* See the trust test in `calibrate`.
|
|
122
|
+
*/
|
|
123
|
+
const MIRROR_TOLERANCE_DEG = 10;
|
|
124
|
+
|
|
115
125
|
/**
|
|
116
126
|
* The NECK AND HEAD take the bind-relative delta too, for the same reason and by the same rule.
|
|
117
127
|
*
|
|
@@ -156,10 +166,44 @@ const FOOT_CHAIN = /^(?:Left|Right)(?:Foot|ToeBase|Toe_End)$/;
|
|
|
156
166
|
*/
|
|
157
167
|
const NECK_HEAD_CHAIN = /^(?:Neck|Head|HeadTop_End)$/;
|
|
158
168
|
|
|
169
|
+
/**
|
|
170
|
+
* The CLAVICLES take the bind-relative delta as well — the third instance of the same class, and
|
|
171
|
+
* the one with the widest blast radius.
|
|
172
|
+
*
|
|
173
|
+
* `Shoulder` is a short bone between two joints that every rigger places by convention, so the
|
|
174
|
+
* direction from the shoulder root to the arm root is a RIG CHOICE, not a pose. Aiming ours at the
|
|
175
|
+
* clip's adopts that choice for the whole clip: our clavicle never returns to our own bind, it sits
|
|
176
|
+
* permanently rotated by whatever the two rigs disagree about — measured across the catalogue at
|
|
177
|
+
* 13.8°, 30.2°, 54.1° and 82.3° depending on which source character the file was exported from.
|
|
178
|
+
* That is exactly why the same body read as droop-shouldered in one clip and shrugging in another.
|
|
179
|
+
*
|
|
180
|
+
* Found by auditing all 165 built-ins for pose quality and then running the SAME AUDIT on the
|
|
181
|
+
* source rigs (ugly-bot's `catalogueSweep.test.ts`). The sources keep their clavicles inside the
|
|
182
|
+
* physiological range; we were inflating them:
|
|
183
|
+
*
|
|
184
|
+
* clip their clavicle ours (aimed) ours (bind-relative)
|
|
185
|
+
* m_run_01 0° 117° 0°
|
|
186
|
+
* m_expr_07 0° 114° 0°
|
|
187
|
+
* f_dance_01 0° 85° 0°
|
|
188
|
+
* f_dance_04 47° 92° 47°
|
|
189
|
+
* m_dance_53 61° 74° 60°
|
|
190
|
+
*
|
|
191
|
+
* Under this rule our clavicle swing equals the clip's own — the last column reproduces the first.
|
|
192
|
+
* `f_dance_01`'s "weird shoulder contortion in the back" was ours, not the animation's.
|
|
193
|
+
*
|
|
194
|
+
* ⚠️ AND THE SWING MUST BE MEASURED IN THE CHEST'S FRAME, or none of the above is visible. The
|
|
195
|
+
* first version of that audit compared world directions, so a breakdancer who turned upside down
|
|
196
|
+
* reported a 174° clavicle and 36 clips came back "not physiological" for rolling over.
|
|
197
|
+
*
|
|
198
|
+
* ⚠️ THIS RETIRES THE CLAVICLE AIM ASSERTION, in this repo's `fbxCalibrate`/`irRetarget` and in
|
|
199
|
+
* all-mine-sky's. A bone on this list has no aim to check. Do not put it back.
|
|
200
|
+
*/
|
|
201
|
+
const CLAVICLE = /^(?:Left|Right)Shoulder$/;
|
|
202
|
+
|
|
159
203
|
/** Bones whose clip-side direction is a PLACEMENT CONVENTION rather than a pose, and which
|
|
160
204
|
* therefore hold our own bind and replay only the clip's motion deltas. */
|
|
161
205
|
const bindRelative = (name: string): boolean =>
|
|
162
|
-
FOOT_CHAIN.test(name) || NECK_HEAD_CHAIN.test(name);
|
|
206
|
+
FOOT_CHAIN.test(name) || NECK_HEAD_CHAIN.test(name) || CLAVICLE.test(name);
|
|
163
207
|
|
|
164
208
|
const vNorm = (v: Vec3): Vec3 => {
|
|
165
209
|
const l = Math.hypot(v[0], v[1], v[2]) || 1;
|
|
@@ -298,11 +342,55 @@ export function calibrate(
|
|
|
298
342
|
return { S, C };
|
|
299
343
|
};
|
|
300
344
|
|
|
345
|
+
// ⚠️ IS THIS CONTAINER'S STORED REST ACTUALLY A BIND? The two rules answer to
|
|
346
|
+
// the clip's bind very differently, and it decides which one is safe:
|
|
347
|
+
//
|
|
348
|
+
// AIM is INDEPENDENT of it. `ours(t)` points where `clip(t)` points at every
|
|
349
|
+
// frame by construction, whatever the bind was.
|
|
350
|
+
// BIND-RELATIVE is ENTIRELY BUILT ON IT — it replays `clip`'s delta FROM its
|
|
351
|
+
// bind — so a rest that is not a bind becomes a constant rotation error that
|
|
352
|
+
// no frame of animation put there and none takes away.
|
|
353
|
+
//
|
|
354
|
+
// A humanoid bind is bilaterally symmetric. Reflect the left foot's bind
|
|
355
|
+
// direction across the sagittal plane and it must land on the right's. Measured
|
|
356
|
+
// over the real catalogue: Mixamo FBX downloads disagree by 0.2°–1.4°, while
|
|
357
|
+
// several animation-only GLBs disagree by 32°–60°. Those GLBs carry no skin,
|
|
358
|
+
// therefore no `inverseBindMatrices`, therefore no bind at all — glTF never
|
|
359
|
+
// promised the node TRS was one, and for those files it plainly is not.
|
|
360
|
+
// Measured in ugly-bot's `upperBodyProbe.test.ts`, where it showed up as a foot
|
|
361
|
+
// rotated 59° out of true for an entire clip whose own animation was symmetric.
|
|
362
|
+
//
|
|
363
|
+
// Where the test fails the foot chain falls back to AIM, which cannot be
|
|
364
|
+
// poisoned by a bind it does not read. The cost is Mixamo's toes-on-the-ground
|
|
365
|
+
// convention on those clips — the very thing FOOT_CHAIN exists to avoid — so
|
|
366
|
+
// this is the lesser of two known defects, not a fix for the container. A GLB
|
|
367
|
+
// that fails this wants re-exporting.
|
|
368
|
+
const footDir = (side: 'Left' | 'Right'): Vec3 | null => {
|
|
369
|
+
const a = clipWorld.get(`${side}Foot`);
|
|
370
|
+
const b = clipWorld.get(`${side}ToeBase`);
|
|
371
|
+
if (!a || !b) return null;
|
|
372
|
+
return vNorm([b.p[0] - a.p[0], b.p[1] - a.p[1], b.p[2] - a.p[2]]);
|
|
373
|
+
};
|
|
374
|
+
const l = footDir('Left');
|
|
375
|
+
const r = footDir('Right');
|
|
376
|
+
let footBindTrusted = true;
|
|
377
|
+
if (l && r) {
|
|
378
|
+
// Mirror is a negated X: the sagittal plane is x = 0 in both rigs.
|
|
379
|
+
const dot = Math.max(
|
|
380
|
+
-1,
|
|
381
|
+
Math.min(1, -l[0] * r[0] + l[1] * r[1] + l[2] * r[2]),
|
|
382
|
+
);
|
|
383
|
+
footBindTrusted = (Math.acos(dot) * 180) / Math.PI <= MIRROR_TOLERANCE_DEG;
|
|
384
|
+
}
|
|
385
|
+
|
|
301
386
|
const K: (Quat | null)[] = Array.from({ length: n }, () => null);
|
|
302
387
|
for (let i = 0; i < n; i++) {
|
|
303
|
-
const
|
|
388
|
+
const name = rig.names[i]!;
|
|
389
|
+
const cw = clipWorld.get(name);
|
|
304
390
|
if (!cw) continue;
|
|
305
|
-
|
|
391
|
+
const useBindRelative =
|
|
392
|
+
bindRelative(name) && (footBindTrusted || !FOOT_CHAIN.test(name));
|
|
393
|
+
K[i] = useBindRelative
|
|
306
394
|
? qMul(qConj(cw.q), worldRest(i))
|
|
307
395
|
: qMul(qConj(cw.q), pose(i).C);
|
|
308
396
|
}
|
package/src/cli/version.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
// Auto-generated by prebuild — do not edit manually
|
|
2
|
-
export const CLI_VERSION = "0.1.
|
|
2
|
+
export const CLI_VERSION = "0.1.969";
|