@rig-c/core 2.64.1 → 2.64.3
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/docs/AUTHORING.md +5 -1
- package/package.json +1 -1
- package/src/cli/shared.ts +10 -1
- package/src/core/constraints_physics.ts +12 -0
package/docs/AUTHORING.md
CHANGED
|
@@ -299,7 +299,11 @@ and it never counts a slot whose bone the posed skin leaves unposed (a `"skin":
|
|
|
299
299
|
bone the skin does not name, or any bone below one, §3.4.8), which draws no pixel;
|
|
300
300
|
when every drawn slot is such a slot, the render is refused by name (§3.4). Three commands take `--out`: a directory for `render`
|
|
301
301
|
(default `render/`), the `.html` file for `preview` (default `preview.html`) and
|
|
302
|
-
for `vote` (default `ballot.html`).
|
|
302
|
+
for `vote` (default `ballot.html`). Under `render`'s `--out` each animation is a set
|
|
303
|
+
directory named by the rate (the `--fps` row): `<anim>/` at the default,
|
|
304
|
+
`<anim>@<fps>fps/` at any other — `--fps 24` writes `<anim>@24fps/`, and the default 12 writes `<anim>/`. The line `render` prints for
|
|
305
|
+
each set ends in the directory it wrote, and `frames.json` beside the sets names
|
|
306
|
+
each under `sets[].dir` — read the folder from there, not from the animation's name.
|
|
303
307
|
|
|
304
308
|
`guide` reads this page rather than a rig: `rigc guide <RULE>` prints the row of §5
|
|
305
309
|
(or of `docs/INGEST.md`'s finding-code table) for the rule a failure line names, and
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@rig-c/core",
|
|
3
|
-
"version": "2.64.
|
|
3
|
+
"version": "2.64.3",
|
|
4
4
|
"description": "AI-authored 2D rigging and animation, verified before it is written. rigc compiles a rig spec into skeleton data in the Spine 4.3 format, gates it with named assertions held to a spine-core round trip's verdicts, and emits nothing that fails. Ships as an agent skill.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
package/src/cli/shared.ts
CHANGED
|
@@ -55,6 +55,8 @@ import {
|
|
|
55
55
|
GeometryError,
|
|
56
56
|
POSER_NAMES,
|
|
57
57
|
PoserChoiceError,
|
|
58
|
+
frameSetDir,
|
|
59
|
+
FRAMES_SIDECAR,
|
|
58
60
|
type PoserName,
|
|
59
61
|
PROTOCOL_FPS,
|
|
60
62
|
UnframeablePoseError,
|
|
@@ -1753,7 +1755,14 @@ export const COMMANDS: CommandDoc[] = [
|
|
|
1753
1755
|
],
|
|
1754
1756
|
flags: ['candidate', 'atlas', 'animation', 'skin', 'slot', 'hide', 'fps', 'max', 'viewport', 'viewport-from', 'geometry', 'folds', 'pass-through', 'seam', 'overlaps', 'angle-range', 'environment', 'poser', 'out'],
|
|
1755
1757
|
overrides: {
|
|
1756
|
-
out: {
|
|
1758
|
+
out: {
|
|
1759
|
+
value: '<dir>',
|
|
1760
|
+
meaning:
|
|
1761
|
+
'directory to write the frame series into (default `render/`). Each animation is a set directory under it, named by the rate (see --fps): ' +
|
|
1762
|
+
`\`${frameSetDir('<anim>', PROTOCOL_FPS)}/\` at the default, \`${frameSetDir('<anim>', 24).split('24').join('<fps>')}/\` at any other — ` +
|
|
1763
|
+
`\`--fps 24\` writes \`${frameSetDir('<anim>', 24)}/\`, and the default ${PROTOCOL_FPS} writes \`${frameSetDir('<anim>', PROTOCOL_FPS)}/\`. ` +
|
|
1764
|
+
`The line printed for each set ends in the directory it wrote, and ${FRAMES_SIDECAR} beside the sets names each under \`sets[].dir\``,
|
|
1765
|
+
},
|
|
1757
1766
|
fps: {
|
|
1758
1767
|
meaning:
|
|
1759
1768
|
`frames per second to sample the animation at (default ${PROTOCOL_FPS}). A set drawn at any rate but the default is written to ` +
|
|
@@ -889,6 +889,18 @@ export function stepPhysics(r: CorePhysicsRecord, w: CoreWorld, length: number,
|
|
|
889
889
|
const k = 1 + (s.scaleOffset - s.scaleLag * z) * mix * r.scaleX;
|
|
890
890
|
w.a *= k;
|
|
891
891
|
w.c *= k;
|
|
892
|
+
// The transverse column follows the authored mode (issue #1453), after
|
|
893
|
+
// the X column: the native Volume branch bounds reciprocal compression
|
|
894
|
+
// below 0.7; it is not an area-preservation promise on that branch.
|
|
895
|
+
if (r.scaleYMode === 'Uniform') {
|
|
896
|
+
w.b *= k;
|
|
897
|
+
w.d *= k;
|
|
898
|
+
} else if (r.scaleYMode === 'Volume') {
|
|
899
|
+
const magnitude = Math.abs(k);
|
|
900
|
+
const transverse = magnitude >= 0.7 ? 1 / magnitude : 4 - 3.67347 * magnitude;
|
|
901
|
+
w.b *= transverse;
|
|
902
|
+
w.d *= transverse;
|
|
903
|
+
}
|
|
892
904
|
}
|
|
893
905
|
s.tx = l * w.a;
|
|
894
906
|
s.ty = l * w.c;
|