@rig-c/core 2.39.0 → 2.39.1
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/.claude-plugin/marketplace.json +2 -2
- package/.claude-plugin/plugin.json +2 -2
- package/NOTICE.md +1 -1
- package/README.md +43 -42
- package/docs/AUTHORING.md +25 -25
- package/docs/FACE.md +14 -14
- package/docs/INGEST.md +4 -4
- package/docs/MOTION.md +2 -2
- package/docs/PROMPTING.md +4 -4
- package/docs/RIGGING.md +33 -33
- package/package.json +4 -4
- package/skills/rigc/SKILL.md +8 -8
- package/skills/rigc-face/SKILL.md +6 -6
- package/skills/rigc-ingest/SKILL.md +5 -5
- package/skills/rigc-motion/SKILL.md +6 -6
- package/skills/rigc-rigging/SKILL.md +6 -6
- package/src/ballot.ts +1 -1
- package/src/bonedist.ts +1 -1
- package/src/cli/shared.ts +1 -1
- package/src/cli/spine_commands.ts +1 -1
- package/src/deformmeasure.ts +3 -3
- package/src/depth.ts +3 -3
- package/src/diff.ts +1 -1
- package/src/generation.ts +1 -1
- package/src/preview.ts +2 -2
- package/src/trackgen.ts +1 -1
package/docs/FACE.md
CHANGED
|
@@ -33,11 +33,11 @@ hold its results.
|
|
|
33
33
|
breath's `chest` is a **sibling** of the plate it must not scale, and §4.4 is the
|
|
34
34
|
artless-parent pattern the shared-shift split is one instance of
|
|
35
35
|
- The worked example every number below comes from:
|
|
36
|
-
[`gallery/portrait`](https://github.com/
|
|
36
|
+
[`gallery/portrait`](https://github.com/rig-c/core/tree/main/gallery/portrait),
|
|
37
37
|
and its measurement half,
|
|
38
|
-
[`FINDINGS.md`](https://github.com/
|
|
38
|
+
[`FINDINGS.md`](https://github.com/rig-c/core/tree/main/gallery/portrait/FINDINGS.md)
|
|
39
39
|
- **The same closed forms on the other axis**:
|
|
40
|
-
[`gallery/nod`](https://github.com/
|
|
40
|
+
[`gallery/nod`](https://github.com/rig-c/core/tree/main/gallery/nod) is a
|
|
41
41
|
worked `pitch`, and this page stays written for a **yaw**. It re-derives §4.2's
|
|
42
42
|
fold angle on uneven *rows* and brackets it against `A39` at 33°/34°, and it
|
|
43
43
|
measures §5's foreshortening at **0.863–1.176** against the yaw's 0.892–1.064
|
|
@@ -46,7 +46,7 @@ hold its results.
|
|
|
46
46
|
- **The turn driven by a value instead of played as a time** — the same keys, on
|
|
47
47
|
an axis: §8's *The turn as a value rather than a time* derives the range,
|
|
48
48
|
**AUTHORING §3.5.2** is the `slider` constraint that does it, and
|
|
49
|
-
[`gallery/look`](https://github.com/
|
|
49
|
+
[`gallery/look`](https://github.com/rig-c/core/tree/main/gallery/look) is
|
|
50
50
|
the worked case. Read it when the angle has to follow something outside the
|
|
51
51
|
animation — a pointer, a gaze target, a game value
|
|
52
52
|
|
|
@@ -402,7 +402,7 @@ authority to say what it measured, and the step share is that.
|
|
|
402
402
|
|
|
403
403
|
📐 Method, harness and the full ladders live in the repository rather than in
|
|
404
404
|
this package, as
|
|
405
|
-
[`bench/studies/2026-09-05-density`](https://github.com/
|
|
405
|
+
[`bench/studies/2026-09-05-density`](https://github.com/rig-c/core/tree/main/bench/studies/2026-09-05-density) —
|
|
406
406
|
the same study also measures why `contour` is the wrong generator for a turn: it
|
|
407
407
|
saturates at 868 vertices however fine the tolerance, its vertices all sit on the
|
|
408
408
|
silhouette so it samples **2 %** of the depth range, and its ear-clipped interior
|
|
@@ -424,7 +424,7 @@ step. ⇒ **Author the sheet so it changes by at least ~8 levels across one mesh
|
|
|
424
424
|
cell**, and spend its whole 0–255 range on the part — a map using an eighth of
|
|
425
425
|
the range describes the same surface and reports 5.8° less of it. Method and
|
|
426
426
|
ladders:
|
|
427
|
-
[`bench/studies/2026-09-05-noise`](https://github.com/
|
|
427
|
+
[`bench/studies/2026-09-05-noise`](https://github.com/rig-c/core/tree/main/bench/studies/2026-09-05-noise).
|
|
428
428
|
|
|
429
429
|
⭐ **And you do not have to guess which of the three you are looking at.** The
|
|
430
430
|
lines under the ceiling say it: the **1st percentile over
|
|
@@ -736,7 +736,7 @@ practical shape is checkable: **key the fade to 0 at or before
|
|
|
736
736
|
the last angle that gates green, and let the fold happen after it.**
|
|
737
737
|
|
|
738
738
|
📘 **The identity above, used forwards on a `pitch`.**
|
|
739
|
-
[`gallery/nod`](https://github.com/
|
|
739
|
+
[`gallery/nod`](https://github.com/rig-c/core/tree/main/gallery/nod)
|
|
740
740
|
(repository material) picks its ceiling first and solves the *rows* out of it —
|
|
741
741
|
`|y|outer = R·cos θmax` with θmax chosen at 21° giving 140.037 — and then
|
|
742
742
|
brackets the fold this section predicts against `A39` itself: **33° gates green
|
|
@@ -793,7 +793,7 @@ The far eye narrows to 89%, the near eye widens to 106% (**derived**: 0.8922 and
|
|
|
793
793
|
|
|
794
794
|
📘 **How much this is worth depends on the axis, and there is a worked case for
|
|
795
795
|
the other one.** The same closed form on the `pitch` of
|
|
796
|
-
[`gallery/nod`](https://github.com/
|
|
796
|
+
[`gallery/nod`](https://github.com/rig-c/core/tree/main/gallery/nod)
|
|
797
797
|
(repository material) spans **0.863 … 1.176** across its five features, against
|
|
798
798
|
the **0.892 … 1.064** above — a wider span at the *identical* angle, because
|
|
799
799
|
`α = atan2(coordinate, depth)` grows with the coordinate and a face is taller
|
|
@@ -883,7 +883,7 @@ are all timing:
|
|
|
883
883
|
is a third drawing.
|
|
884
884
|
- **A swap has to dodge the frame grid.** A stepped key exactly on a sample time
|
|
885
885
|
can be missed by a player accumulating `1/fps`, which is why
|
|
886
|
-
[`gallery/squash`](https://github.com/
|
|
886
|
+
[`gallery/squash`](https://github.com/rig-c/core/tree/main/gallery/squash)'s
|
|
887
887
|
blink key sits at `0.399999` (AUTHORING §4.5). **A continuous channel does not
|
|
888
888
|
care where the samples land.**
|
|
889
889
|
|
|
@@ -1112,7 +1112,7 @@ duration 2 x range x scale
|
|
|
1112
1112
|
time to + (degrees - from) x scale the slider's own mapping
|
|
1113
1113
|
```
|
|
1114
1114
|
|
|
1115
|
-
📐 **Worked, on [`gallery/look`](https://github.com/
|
|
1115
|
+
📐 **Worked, on [`gallery/look`](https://github.com/rig-c/core/tree/main/gallery/look)**,
|
|
1116
1116
|
whose face is a 21 × 9 `grid` over one depth sheet:
|
|
1117
1117
|
|
|
1118
1118
|
```bash
|
|
@@ -1323,7 +1323,7 @@ exactly as they do above. Write `"additive": true` on all of them.
|
|
|
1323
1323
|
|
|
1324
1324
|
✅ **The editor half, measured.** The round trip was taken with
|
|
1325
1325
|
`tools/editor_roundtrip.ts` on a licensed editor (data version 4.3.26) against a 4.3.13 build of
|
|
1326
|
-
[`gallery/look`](https://github.com/
|
|
1326
|
+
[`gallery/look`](https://github.com/rig-c/core/tree/main/gallery/look) — this
|
|
1327
1327
|
subsection's worked case, not the `gallery/portrait` this page names at the top,
|
|
1328
1328
|
which declares no constraints at all and so can carry no slider. What it found:
|
|
1329
1329
|
|
|
@@ -1784,16 +1784,16 @@ substitute for looking at three scales.
|
|
|
1784
1784
|
|
|
1785
1785
|
## 10. The worked example
|
|
1786
1786
|
|
|
1787
|
-
[`gallery/portrait`](https://github.com/
|
|
1787
|
+
[`gallery/portrait`](https://github.com/rig-c/core/tree/main/gallery/portrait)
|
|
1788
1788
|
is this page on real art — **22 parts, 27 bones, 22 slots, 2 meshes, 40
|
|
1789
1789
|
vertices**, three animations, and a README that derives every number rather than
|
|
1790
1790
|
listing it. Its
|
|
1791
|
-
[`FINDINGS.md`](https://github.com/
|
|
1791
|
+
[`FINDINGS.md`](https://github.com/rig-c/core/tree/main/gallery/portrait/FINDINGS.md)
|
|
1792
1792
|
is the measurement half: what it cost, the seven-angle sweep, the five tool gaps
|
|
1793
1793
|
it filed.
|
|
1794
1794
|
|
|
1795
1795
|
📘 **The `pitch` has its own worked case**, and this page deliberately stays a
|
|
1796
|
-
yaw: [`gallery/nod`](https://github.com/
|
|
1796
|
+
yaw: [`gallery/nod`](https://github.com/rig-c/core/tree/main/gallery/nod) is
|
|
1797
1797
|
the same two closed forms on the other axis, plus a travelling `wave` (AUTHORING
|
|
1798
1798
|
§4.11.1). §4.2 and §5 above point at the two places its figures are worth
|
|
1799
1799
|
reading beside these — the fold angle bracketed against `A39`, and a
|
package/docs/INGEST.md
CHANGED
|
@@ -644,7 +644,7 @@ it hands you, and every rule in them applies to a spec `ingest` wrote.
|
|
|
644
644
|
|
|
645
645
|
A file from another Spine generation is the one case where transcription is not the
|
|
646
646
|
first fallback: migrate it through the editor of its own generation first, as
|
|
647
|
-
[GENERATIONS.md](https://github.com/
|
|
647
|
+
[GENERATIONS.md](https://github.com/rig-c/core/blob/main/docs/GENERATIONS.md) §4
|
|
648
648
|
states.
|
|
649
649
|
|
|
650
650
|
### 2.1 The workflow
|
|
@@ -707,7 +707,7 @@ the second is the one that costs a day:
|
|
|
707
707
|
all, and then you are debugging your own incomplete work rather than the format.
|
|
708
708
|
|
|
709
709
|
⚠️ **When a kind turns out not to be expressible, stop and say so — that is a finding,
|
|
710
|
-
not a blocker to route around.** [SURVEY_2026-08-22.md](https://github.com/
|
|
710
|
+
not a blocker to route around.** [SURVEY_2026-08-22.md](https://github.com/rig-c/core/blob/main/docs/SURVEY_2026-08-22.md) is the
|
|
711
711
|
per-skeleton survey of exactly this. ⇒ Check the survey for your feature before
|
|
712
712
|
concluding either way, and if it is genuinely absent, the shape of the answer is *"this export
|
|
713
713
|
uses X, which the motion spec cannot say"* with a pointer — not a silent
|
|
@@ -869,7 +869,7 @@ catches a whole-figure scale error, and it is the only one that does.
|
|
|
869
869
|
### 2.4 The worked precedent, and what to take from it
|
|
870
870
|
|
|
871
871
|
Three transcriptions of official Spine exports live in this repository under
|
|
872
|
-
[`bench/transcriptions/`](https://github.com/
|
|
872
|
+
[`bench/transcriptions/`](https://github.com/rig-c/core/tree/main/bench/transcriptions/)
|
|
873
873
|
— `3-timing-and-spacing` (3 bones, 2 slots, 2 animations, 69 keys, every curve raw),
|
|
874
874
|
`6-arcs` (weighted meshes, mesh `edges`, four 4.3 transform constraints) and
|
|
875
875
|
`spineboy` in both `ess` and `pro`. They are **worked examples you are meant to read**,
|
|
@@ -1482,7 +1482,7 @@ every directory the fetch produced.
|
|
|
1482
1482
|
the per-directory terms.
|
|
1483
1483
|
|
|
1484
1484
|
The transcription these recipes start from is
|
|
1485
|
-
[`bench/transcriptions/3-timing-and-spacing/`](https://github.com/
|
|
1485
|
+
[`bench/transcriptions/3-timing-and-spacing/`](https://github.com/rig-c/core/tree/main/bench/transcriptions/3-timing-and-spacing/),
|
|
1486
1486
|
unmodified. The re-pivoted, renamed and extended variants in §4 were built from copies
|
|
1487
1487
|
of it; none is committed, because each is an illustration of an edit rather than a
|
|
1488
1488
|
transcription of anything.
|
package/docs/MOTION.md
CHANGED
|
@@ -105,7 +105,7 @@ and each fails in its own way rather than merely reading oddly:**
|
|
|
105
105
|
⭐ **What is still this page's job is whatever moves the dial**, and that is an
|
|
106
106
|
ordinary animation with §3 applying to it unchanged. The split is visible in the
|
|
107
107
|
worked example: in
|
|
108
|
-
[`gallery/look`](https://github.com/
|
|
108
|
+
[`gallery/look`](https://github.com/rig-c/core/tree/main/gallery/look) the two
|
|
109
109
|
lookup tables `turn` and `tilt` carry **no easing at all**, and `sweep` — the one
|
|
110
110
|
animation there meant to be played — carries every `ease` in the file.
|
|
111
111
|
|
|
@@ -751,7 +751,7 @@ What *is* real: every command line below was run, and every figure printed in an
|
|
|
751
751
|
output block is what the command actually printed.
|
|
752
752
|
|
|
753
753
|
🖼️ **For the same recipe on art that ships, the
|
|
754
|
-
[`gallery/`](https://github.com/
|
|
754
|
+
[`gallery/`](https://github.com/rig-c/core/tree/main/gallery) examples are worked
|
|
755
755
|
in-betweening material** — `walk` is §3.5's arcs and §3.7's phase offsets on two leg
|
|
756
756
|
chains, `ride` puts the same offsets in `groups` + `stagger`, and `squash` is §3.9's
|
|
757
757
|
pivot written as a `deform` about a contact point. Each README says what every key is
|
package/docs/PROMPTING.md
CHANGED
|
@@ -8,9 +8,9 @@ measured case: in August 2026 a deliberately small model — Gemini 3.7 Flash on
|
|
|
8
8
|
the Antigravity harness — authored a benchmark rung over a **3 h 01 m** session,
|
|
9
9
|
observed by the operator; the harness kept no tool transcript, so the run is
|
|
10
10
|
recorded **Unverified** on honesty, with two of its four tiers *unevidenced*
|
|
11
|
-
([the verdict](https://github.com/
|
|
11
|
+
([the verdict](https://github.com/rig-c/core/blob/main/docs/pilot/verdicts/2026-08-24-rung3-1.md)
|
|
12
12
|
states all of that). Every stumble below is one it actually made, priced by the instruments in
|
|
13
|
-
[PILOT.md](https://github.com/
|
|
13
|
+
[PILOT.md](https://github.com/rig-c/core/blob/main/docs/PILOT.md)'s protocol. A large model makes fewer of these mistakes
|
|
14
14
|
unprompted; the clauses cost you three lines and make the small model's run
|
|
15
15
|
land and the large model's run land cleaner.
|
|
16
16
|
|
|
@@ -27,7 +27,7 @@ For ordinary use (not a benchmark), the whole prompt is short:
|
|
|
27
27
|
|
|
28
28
|
Then add the clauses below. If you are running the **benchmark**, do not
|
|
29
29
|
improvise a prompt at all — hand the agent
|
|
30
|
-
[pilot/rung3-runner-prompt.md](https://github.com/
|
|
30
|
+
[pilot/rung3-runner-prompt.md](https://github.com/rig-c/core/blob/main/docs/pilot/rung3-runner-prompt.md) verbatim; it
|
|
31
31
|
carries the honesty rule, and an improvised summary of that rule is how a run
|
|
32
32
|
stops being scorable.
|
|
33
33
|
|
|
@@ -101,7 +101,7 @@ prompt for the six clauses above and then let the agent work.
|
|
|
101
101
|
|
|
102
102
|
## If you are scoring the run
|
|
103
103
|
|
|
104
|
-
That is a different document: [PILOT.md](https://github.com/
|
|
104
|
+
That is a different document: [PILOT.md](https://github.com/rig-c/core/blob/main/docs/PILOT.md) is the protocol,
|
|
105
105
|
`pilot/rung3-runner-prompt.md` is the exact prompt, and the evaluator sheet it
|
|
106
106
|
names is for the judge only. The one rule that reaches this page: **never put
|
|
107
107
|
baseline figures, reference structure, or previous runs' measures into the
|
package/docs/RIGGING.md
CHANGED
|
@@ -105,7 +105,7 @@ beside the offsets it exists to make visible:
|
|
|
105
105
|
> *"Every limb attachment is OFFSET from its bone, and that is what makes the hinge
|
|
106
106
|
> visible: art centred on its own pivot turns in place, so a search over one angle
|
|
107
107
|
> would move nothing and a wrong hinge would cost nothing either."*
|
|
108
|
-
> — [`selftest.ts`](https://github.com/
|
|
108
|
+
> — [`selftest.ts`](https://github.com/rig-c/core/blob/main/selftest.ts), the chain-fit fixture
|
|
109
109
|
|
|
110
110
|
⇒ **A correctly placed pivot also collapses the spec.** A pendulum whose bone sits
|
|
111
111
|
on its hinge needs one `rotate` track and no translate at all; the same part with
|
|
@@ -144,7 +144,7 @@ never:
|
|
|
144
144
|
it**, so the bone points at its own mass — at the cost of two emitted fields.
|
|
145
145
|
|
|
146
146
|
> *"Neither is checkable from the frames."* — rung 3's first attempt
|
|
147
|
-
> ([`2026-08-23-rung3-1`](https://github.com/
|
|
147
|
+
> ([`2026-08-23-rung3-1`](https://github.com/rig-c/core/blob/main/bench/runs/2026-08-23-rung3-1/LOOP.md) §11)
|
|
148
148
|
|
|
149
149
|
⇒ Pick one, and say in your log that you picked it. AUTHORING §10.1's naming
|
|
150
150
|
convention is the same shape of decision and is worth far more (it decides five of
|
|
@@ -162,7 +162,7 @@ rigid.
|
|
|
162
162
|
> bone you scale-key must sit at that bone's origin, or the offset rides the
|
|
163
163
|
> scale."*
|
|
164
164
|
> — spineboy attempt 4
|
|
165
|
-
> ([`2026-08-28-spineboy-1`](https://github.com/
|
|
165
|
+
> ([`2026-08-28-spineboy-1`](https://github.com/rig-c/core/blob/main/bench/runs/2026-08-28-spineboy-1/LOOP.md) §8)
|
|
166
166
|
|
|
167
167
|
⇒ This is the one exception to §1's rule, and it is not a contradiction: a bone
|
|
168
168
|
whose **scale** is the animated property is not a hinge, so there is no hinge to
|
|
@@ -184,10 +184,10 @@ None of them is an error message. Each one is a number that reads as ordinary.
|
|
|
184
184
|
|
|
185
185
|
| Signature | What it actually is | Record |
|
|
186
186
|
| --- | --- | --- |
|
|
187
|
-
| **A gap that letting the parts off the hierarchy closes.** `idle` fitted to 10.3 union MAE on the frame the setup pose came from and **23.9** eight frames later; a short relax off the hierarchy recovered it to **14.6** | *"A gap that a relax closes is not a pose the rig cannot reach; it is a pivot in the wrong place."* | spineboy attempt 1 ([`2026-08-23-spineboy-1`](https://github.com/
|
|
188
|
-
| **A fitted centre that drifts monotonically with the fitted scale.** The per-frame fits wanted each shadow's centre 8–12 units lower whenever the shadow was small | a part scaling about a pivot below its own centre — *"a pivot you have not modelled, not motion you have measured"* | rung 1 second attempt ([`2026-08-26-rung1-1`](https://github.com/
|
|
189
|
-
| **A knob resting exactly on its bound, on one orientation only.** `torso.x` pinned at −35.0 against a ±35 box on the lying frames and nowhere else | the optimum is outside the box, because a pivot error `e` needs a compensation `−R(θ)·e` that grows with the local angle — *"invisible upright, saturating in the lying poses"* | spineboy attempt 5 ([`2026-08-28-spineboy-2`](https://github.com/
|
|
190
|
-
| **An exact fit with no angular spread.** Two ankle joints solved at **rms 0.00 px** with a relative-angle spread of **0° and 2°** | a perfect fit to a system with no unique answer | spineboy, 2026-09-03 first attempt ([`2026-09-03-spineboy-1`](https://github.com/
|
|
187
|
+
| **A gap that letting the parts off the hierarchy closes.** `idle` fitted to 10.3 union MAE on the frame the setup pose came from and **23.9** eight frames later; a short relax off the hierarchy recovered it to **14.6** | *"A gap that a relax closes is not a pose the rig cannot reach; it is a pivot in the wrong place."* | spineboy attempt 1 ([`2026-08-23-spineboy-1`](https://github.com/rig-c/core/blob/main/bench/runs/2026-08-23-spineboy-1/LOOP.md) §8.2) |
|
|
188
|
+
| **A fitted centre that drifts monotonically with the fitted scale.** The per-frame fits wanted each shadow's centre 8–12 units lower whenever the shadow was small | a part scaling about a pivot below its own centre — *"a pivot you have not modelled, not motion you have measured"* | rung 1 second attempt ([`2026-08-26-rung1-1`](https://github.com/rig-c/core/blob/main/bench/runs/2026-08-26-rung1-1/LOOP.md) §2.3) |
|
|
189
|
+
| **A knob resting exactly on its bound, on one orientation only.** `torso.x` pinned at −35.0 against a ±35 box on the lying frames and nowhere else | the optimum is outside the box, because a pivot error `e` needs a compensation `−R(θ)·e` that grows with the local angle — *"invisible upright, saturating in the lying poses"* | spineboy attempt 5 ([`2026-08-28-spineboy-2`](https://github.com/rig-c/core/blob/main/bench/runs/2026-08-28-spineboy-2/LOOP.md) §3) |
|
|
190
|
+
| **An exact fit with no angular spread.** Two ankle joints solved at **rms 0.00 px** with a relative-angle spread of **0° and 2°** | a perfect fit to a system with no unique answer | spineboy, 2026-09-03 first attempt ([`2026-09-03-spineboy-1`](https://github.com/rig-c/core/blob/main/bench/runs/2026-09-03-spineboy-1/LOOP.md) §3.3) |
|
|
191
191
|
|
|
192
192
|
🚨 **The last one is the trap in its purest form: a zero residual reads as success
|
|
193
193
|
in every other context on this toolchain.** Here it means the estimator was handed
|
|
@@ -219,7 +219,7 @@ across all eight shots:
|
|
|
219
219
|
> 21-unit-different answer that fits the upright frames just as well. The joint is
|
|
220
220
|
> ill-conditioned without the lying poses, which is how the inherited triangulation
|
|
221
221
|
> (idle zoom-read) went wrong without any frame saying so."*
|
|
222
|
-
> — [`2026-08-28-spineboy-2`](https://github.com/
|
|
222
|
+
> — [`2026-08-28-spineboy-2`](https://github.com/rig-c/core/blob/main/bench/runs/2026-08-28-spineboy-2/LOOP.md) §5
|
|
223
223
|
|
|
224
224
|
Two answers 21 art units apart, at residuals that do not separate them. That is
|
|
225
225
|
what *ill-conditioned* means with a picture attached.
|
|
@@ -296,7 +296,7 @@ found that **every one of them measured a basin at the sweep's own cap** — ±4
|
|
|
296
296
|
> *"On this figure the joint offsets are **weakly identified at the scale a frame
|
|
297
297
|
> can see**, and the honest reading is that they are a prior with a measured width
|
|
298
298
|
> rather than a measurement."*
|
|
299
|
-
> — [`2026-09-03-spineboy-2`](https://github.com/
|
|
299
|
+
> — [`2026-09-03-spineboy-2`](https://github.com/rig-c/core/blob/main/bench/runs/2026-09-03-spineboy-2/LOOP.md) §3.5
|
|
300
300
|
|
|
301
301
|
⇒ That sentence is the deliverable when the pixels are silent. It is not a hedge:
|
|
302
302
|
a width is a number, and the next attempt can tell whether its own change is inside
|
|
@@ -463,7 +463,7 @@ The failure, watched happening:
|
|
|
463
463
|
> rear-thigh −199.8°`, whose net world rotations are −3°, +31° and −19°: the picture
|
|
464
464
|
> was right and the numbers were unusable. A rotate series that swings 180° between
|
|
465
465
|
> two keys does not interpolate, it spins the figure through a whole turn."*
|
|
466
|
-
> — spineboy attempt 1 ([`2026-08-23-spineboy-1`](https://github.com/
|
|
466
|
+
> — spineboy attempt 1 ([`2026-08-23-spineboy-1`](https://github.com/rig-c/core/blob/main/bench/runs/2026-08-23-spineboy-1/LOOP.md) §8.4)
|
|
467
467
|
|
|
468
468
|
### 4.1 ⚠️ The exact fold has a precondition, and it is easy to miss
|
|
469
469
|
|
|
@@ -474,7 +474,7 @@ AUTHORING §10.3 prescribes is not a null operation — it costs pixels:
|
|
|
474
474
|
> *"the hip's three children sit 9–13 units off it, so turning the hip moves their
|
|
475
475
|
> origins and the render. Folding cost MAE on every frame it touched (`idle` mean
|
|
476
476
|
> 23.0 with the fold against 19.9 without, same search)."*
|
|
477
|
-
> — spineboy attempt 2 ([`2026-08-23-spineboy-2`](https://github.com/
|
|
477
|
+
> — spineboy attempt 2 ([`2026-08-23-spineboy-2`](https://github.com/rig-c/core/blob/main/bench/runs/2026-08-23-spineboy-2/LOOP.md) §5)
|
|
478
478
|
|
|
479
479
|
⇒ **Test the precondition before folding.** Children at the origin ⇒ exact gauge,
|
|
480
480
|
fold it (the L1 optimum is the *median* of the children's deltas, which is one line).
|
|
@@ -521,10 +521,10 @@ that it is *keyed for a reason the arithmetic states*, not left free for a solve
|
|
|
521
521
|
|
|
522
522
|
| Bone | Carries | Its children then key |
|
|
523
523
|
| --- | --- | --- |
|
|
524
|
-
| `faceshift` ([`gallery/portrait`](https://github.com/
|
|
524
|
+
| `faceshift` ([`gallery/portrait`](https://github.com/rig-c/core/tree/main/gallery/portrait/)) | `−R·sin t`, the shift every feature shares in a yaw | only their residual — FACE §3 |
|
|
525
525
|
| `comet` (rung 6, rung 8) | the whole travel of a ball and its trail | the squash, and the trail's bend |
|
|
526
526
|
| `body` (rung 7, second attempt) | **translation only** — *"it holds no attachment, so keying its rotation as well would be a gauge"* | their own rotations |
|
|
527
|
-
| `ground` ([`gallery/walk`](https://github.com/
|
|
527
|
+
| `ground` ([`gallery/walk`](https://github.com/rig-c/core/tree/main/gallery/walk/)) | the contact line | the foot targets — §9.1 |
|
|
528
528
|
|
|
529
529
|
⭐ **FACE §3's argument for it is an auditing one before it is a rigging one**: a
|
|
530
530
|
residual is 1–6 units where a total is 30–40, *"nobody can eyeball an error in the
|
|
@@ -548,13 +548,13 @@ invisible in the numbers.
|
|
|
548
548
|
> and takes a `translatey` (0 → 3.4). Parent the head chain to the bone that scales
|
|
549
549
|
> and the whole face inflates 1.4% every breath — visible, and invisible in the
|
|
550
550
|
> spec."*
|
|
551
|
-
> — [`gallery/portrait/README.md`](https://github.com/
|
|
551
|
+
> — [`gallery/portrait/README.md`](https://github.com/rig-c/core/blob/main/gallery/portrait/README.md)
|
|
552
552
|
|
|
553
553
|
The same decision, on a ball and its trail:
|
|
554
554
|
|
|
555
555
|
> *"`ball` is a **sibling** of `tail0` under `comet`, not its parent, so squashing
|
|
556
556
|
> the ball does not squash the trail."*
|
|
557
|
-
> — rung 6 ([`2026-08-23-rung6-1`](https://github.com/
|
|
557
|
+
> — rung 6 ([`2026-08-23-rung6-1`](https://github.com/rig-c/core/blob/main/bench/runs/2026-08-23-rung6-1/README.md))
|
|
558
558
|
|
|
559
559
|
⇒ **The construction is always the same three bones**: an artless parent that
|
|
560
560
|
carries what both share (§4.4), and two children — one that takes the scale and one
|
|
@@ -565,7 +565,7 @@ that takes the chain.
|
|
|
565
565
|
> *"the neck plate has to take a *fraction* of the head's shift, so it cannot be an
|
|
566
566
|
> ancestor of the head. `neckbase` is the shared parent; `neck` carries the plate and
|
|
567
567
|
> `headroll` carries the head"*
|
|
568
|
-
> — [`gallery/portrait/README.md`](https://github.com/
|
|
568
|
+
> — [`gallery/portrait/README.md`](https://github.com/rig-c/core/blob/main/gallery/portrait/README.md), the part table
|
|
569
569
|
|
|
570
570
|
⭐ **And the pivot goes one link up, which is the same edit for a second reason.**
|
|
571
571
|
The same rig keys `headroll` and never `head`: *"a head rotates about the top of the
|
|
@@ -638,7 +638,7 @@ The record that named it:
|
|
|
638
638
|
> setup render is unchanged. walk 0.176 → 0.150, run 0.232 → 0.201, aim 0.212 →
|
|
639
639
|
> 0.186 after refit."*
|
|
640
640
|
> — spineboy attempt 4
|
|
641
|
-
> ([`2026-08-28-spineboy-1`](https://github.com/
|
|
641
|
+
> ([`2026-08-28-spineboy-1`](https://github.com/rig-c/core/blob/main/bench/runs/2026-08-28-spineboy-1/LOOP.md) §6)
|
|
642
642
|
|
|
643
643
|
⭐ **The tie-break is on the frames' side.** *"the shot's own extremes are a
|
|
644
644
|
measurement, while segment lengths taken off a folded pose are an estimate — so when
|
|
@@ -659,7 +659,7 @@ fits converge, every residual is ordinary, and the figure splays.**
|
|
|
659
659
|
> leg overshoots the floor by about 90 units and the fitter has to bend it sideways
|
|
660
660
|
> to land … Re-seeding the leg joints inset from the art's ends — thigh 86 units,
|
|
661
661
|
> shin 94 — put the ankle at world y **53.5** against the boot's own 54."*
|
|
662
|
-
> — [`2026-09-03-spineboy-1`](https://github.com/
|
|
662
|
+
> — [`2026-09-03-spineboy-1`](https://github.com/rig-c/core/blob/main/bench/runs/2026-09-03-spineboy-1/LOOP.md) §4.4
|
|
663
663
|
|
|
664
664
|
⭐ **Why the art misled it, and this generalises:** the art's outer ends are not the
|
|
665
665
|
joints. A rounded cap's centroid sits at the plate's *tip*, while the joint two
|
|
@@ -686,7 +686,7 @@ frames put the standing leg at about 233 — a 79-unit excess with a plausible c
|
|
|
686
686
|
> better rig, and the 79 units are a real knee bend in the reference's own stance
|
|
687
687
|
> rather than an error in this rig. The surgery §8.1 warns about … was therefore not
|
|
688
688
|
> performed, and the per-frame fitting budget was not spent twice."*
|
|
689
|
-
> — [`2026-09-03-spineboy-2/evidence/limb-reach.txt`](https://github.com/
|
|
689
|
+
> — [`2026-09-03-spineboy-2/evidence/limb-reach.txt`](https://github.com/rig-c/core/blob/main/bench/runs/2026-09-03-spineboy-2/evidence/limb-reach.txt)
|
|
690
690
|
|
|
691
691
|
⇒ **The reach check tells you a chain and a shot disagree. It does not tell you
|
|
692
692
|
which one is wrong.** A bent limb and a long limb produce the same excess. One
|
|
@@ -736,7 +736,7 @@ form: **is each frame's silhouette an affine image of the part's own drawing?**
|
|
|
736
736
|
> freedom the mesh was built with — a four-bone chain, weights blended by height
|
|
737
737
|
> only."*
|
|
738
738
|
> — rung 7, first attempt
|
|
739
|
-
> ([`2026-08-28-rung7-1`](https://github.com/
|
|
739
|
+
> ([`2026-08-28-rung7-1`](https://github.com/rig-c/core/blob/main/bench/runs/2026-08-28-rung7-1/LOOP.md) §5)
|
|
740
740
|
|
|
741
741
|
⇒ Two controls are what make that quotable and they are worth copying: the art
|
|
742
742
|
through a **known affine** read 0.0044 → 0.0007 (the floor), and the art plus a
|
|
@@ -772,10 +772,10 @@ not fail — it degenerates:
|
|
|
772
772
|
> *"The first candidate lifted the foot 56 units on a 130-unit leg: the chain has to
|
|
773
773
|
> fold to a 70-unit span, and a two-bone solve does that by throwing the knee
|
|
774
774
|
> sideways. 28 units — a fifth of the leg — is the version that reads as a step."*
|
|
775
|
-
> — [`gallery/walk/README.md`](https://github.com/
|
|
775
|
+
> — [`gallery/walk/README.md`](https://github.com/rig-c/core/blob/main/gallery/walk/README.md)
|
|
776
776
|
|
|
777
777
|
The same arithmetic on the other side of the chain, from
|
|
778
|
-
[`gallery/flex`](https://github.com/
|
|
778
|
+
[`gallery/flex`](https://github.com/rig-c/core/tree/main/gallery/flex/): rotating a rigid panel about a seam opens a wedge
|
|
779
779
|
of `halfHeight × tan(angle)` — about 22 px at 20° on that cloth — so *"the bend
|
|
780
780
|
angles in `motion.json` are chosen against that overlap, not the other way round."*
|
|
781
781
|
|
|
@@ -801,7 +801,7 @@ differ by exactly the bone's own setup `x`/`y`:
|
|
|
801
801
|
> *"the first spec moved the figure by the setup offset a second time. Rotation and
|
|
802
802
|
> scale needed no correction: their setups are 0 and 1."*
|
|
803
803
|
> — rung 7, second attempt
|
|
804
|
-
> ([`2026-08-28-rung7-2`](https://github.com/
|
|
804
|
+
> ([`2026-08-28-rung7-2`](https://github.com/rig-c/core/blob/main/bench/runs/2026-08-28-rung7-2/LOOP.md) §5)
|
|
805
805
|
|
|
806
806
|
The same confusion one attempt earlier, from the other end: *"The first fitter used
|
|
807
807
|
0 as every knob's neutral value. `bone.pose.x` is the bone's whole local
|
|
@@ -817,7 +817,7 @@ the diff names it in one line."*
|
|
|
817
817
|
|
|
818
818
|
⚠️ **A bone under a rotated parent is not at the parent's position plus its own
|
|
819
819
|
numbers, and a leg chain is exactly that case.** That sentence is a comment in
|
|
820
|
-
[`gallery/stage.ts`](https://github.com/
|
|
820
|
+
[`gallery/stage.ts`](https://github.com/rig-c/core/blob/main/gallery/stage.ts), which exists because a drawing script
|
|
821
821
|
needed setup-pose world positions and *"writing them a second time in the drawing
|
|
822
822
|
script is the defect that produces a shadow under nobody's feet, and it is
|
|
823
823
|
invisible in both files — each is internally consistent."*
|
|
@@ -993,7 +993,7 @@ designed around it:
|
|
|
993
993
|
> the chest and the legs as siblings. Chosen for identifiability, not anatomy …
|
|
994
994
|
> Under a pelvis the legs sit above the only reliable anchor and every leg comes back
|
|
995
995
|
> `no-anchor` on every frame — measured, not predicted."*
|
|
996
|
-
> — [`2026-09-03-spineboy-2`](https://github.com/
|
|
996
|
+
> — [`2026-09-03-spineboy-2`](https://github.com/rig-c/core/blob/main/bench/runs/2026-09-03-spineboy-2/README.md)
|
|
997
997
|
|
|
998
998
|
That is the only place in the corpus where a tree was chosen for what could be
|
|
999
999
|
measured through it rather than for anatomy or for the art, and it is worth knowing
|
|
@@ -1014,7 +1014,7 @@ backwards:
|
|
|
1014
1014
|
`bendPositive` combinations were indistinguishable at 4× zoom on the frame where the
|
|
1015
1015
|
difference is largest. `shin_f.worldX` separated them immediately. Look at frames
|
|
1016
1016
|
for whether it reads; read bone positions for what it is doing."*
|
|
1017
|
-
([`gallery/walk/README.md`](https://github.com/
|
|
1017
|
+
([`gallery/walk/README.md`](https://github.com/rig-c/core/blob/main/gallery/walk/README.md))
|
|
1018
1018
|
|
|
1019
1019
|
### 8.4 ⚠️ And `pose` can be confident about the wrong twin
|
|
1020
1020
|
|
|
@@ -1041,7 +1041,7 @@ list of structural rules and a list of refusals.
|
|
|
1041
1041
|
> at the contact line; `foot_f` and `foot_b` are children of `ground`. Parent a foot
|
|
1042
1042
|
> target to `hip` and the hip carries its own feet up with it, **the solver reports
|
|
1043
1043
|
> success, and the figure hovers.**"*
|
|
1044
|
-
> — [`gallery/walk/README.md`](https://github.com/
|
|
1044
|
+
> — [`gallery/walk/README.md`](https://github.com/rig-c/core/blob/main/gallery/walk/README.md)
|
|
1045
1045
|
|
|
1046
1046
|
Measured on that build, over the stance where `foot_f` is planted: the hip travels
|
|
1047
1047
|
**7.9 units up and 2.9 sideways** while the foot reads `382.0, 68.0` on every
|
|
@@ -1067,15 +1067,15 @@ reaches the target. So:
|
|
|
1067
1067
|
⭐ **This is where the art and the hierarchy stop being two decisions.** Both plates
|
|
1068
1068
|
have to be **drawn from their own joint**, and the joint's coordinates *inside each
|
|
1069
1069
|
drawing* are what every `length` and every attachment offset is measured from —
|
|
1070
|
-
[`gallery/rigby.ts`](https://github.com/
|
|
1071
|
-
[`gallery/walk/rig.json`](https://github.com/
|
|
1070
|
+
[`gallery/rigby.ts`](https://github.com/rig-c/core/blob/main/gallery/rigby.ts) names all four points for one leg, and
|
|
1071
|
+
[`gallery/walk/rig.json`](https://github.com/rig-c/core/blob/main/gallery/walk/rig.json) states them.
|
|
1072
1072
|
|
|
1073
1073
|
### 9.3 A constraint carries the whole subtree, and that is the point
|
|
1074
1074
|
|
|
1075
1075
|
> *"`cart` is the constrained bone; `wheel_b`/`wheel_f` and `hip` are its children,
|
|
1076
1076
|
> so the constraint carries the wheels and the whole figure with it and the tangent
|
|
1077
1077
|
> rotation tilts all three."*
|
|
1078
|
-
> — [`gallery/ride/README.md`](https://github.com/
|
|
1078
|
+
> — [`gallery/ride/README.md`](https://github.com/rig-c/core/blob/main/gallery/ride/README.md)
|
|
1079
1079
|
|
|
1080
1080
|
📌 Two placement conveniences from the same paragraph, both of the form *put the
|
|
1081
1081
|
bone where the numbers become trivial*: `root` is at the world origin, *"which is why
|
|
@@ -1104,7 +1104,7 @@ default failure mode**, because it drives bones rather than drawing anything.
|
|
|
1104
1104
|
> `true`, so any IK timeline that did not restate it overwrote the constraint's value
|
|
1105
1105
|
> for the whole animation, with the field still in the file and the gate green either
|
|
1106
1106
|
> way."*
|
|
1107
|
-
> — [`gallery/walk/README.md`](https://github.com/
|
|
1107
|
+
> — [`gallery/walk/README.md`](https://github.com/rig-c/core/blob/main/gallery/walk/README.md)
|
|
1108
1108
|
> (rigc stamps the rig's value onto every emitted ik key)
|
|
1109
1109
|
|
|
1110
1110
|
⇒ **A structural fact stated in the rig can be overwritten by a per-key default in
|
|
@@ -1121,7 +1121,7 @@ all**, unanimously, and paid for it in a measure:
|
|
|
1121
1121
|
> point at if asked why there are four rather than one … that measure is the price of
|
|
1122
1122
|
> the rule, and it is worth paying rather than winning by guessing."*
|
|
1123
1123
|
> — rung 8, first attempt
|
|
1124
|
-
> ([`2026-08-23-rung8-1`](https://github.com/
|
|
1124
|
+
> ([`2026-08-23-rung8-1`](https://github.com/rig-c/core/blob/main/bench/runs/2026-08-23-rung8-1/LOOP.md) §13)
|
|
1125
1125
|
|
|
1126
1126
|
⭐ **The cleanest demonstration that the rule costs something real and is still the
|
|
1127
1127
|
right rule** is in that same run, which authored two rigs against two references:
|
|
@@ -1171,7 +1171,7 @@ the draw order"* — which is what lets one part sit in front of its own parent:
|
|
|
1171
1171
|
> arrangement that satisfies both things the frames measure: the gun reads unoccluded
|
|
1172
1172
|
> in `idle`, and the near leg covers it in `walk`."*
|
|
1173
1173
|
> — spineboy attempt 2
|
|
1174
|
-
> ([`2026-08-23-spineboy-2`](https://github.com/
|
|
1174
|
+
> ([`2026-08-23-spineboy-2`](https://github.com/rig-c/core/blob/main/bench/runs/2026-08-23-spineboy-2/README.md))
|
|
1175
1175
|
|
|
1176
1176
|
⚖️ **But parentage is a real question with a real answer, and the evidence for it is
|
|
1177
1177
|
smoothness.** Rung 4 modelled a chain's top as a *sibling* of the disc it hangs
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@rig-c/core",
|
|
3
|
-
"version": "2.39.
|
|
3
|
+
"version": "2.39.1",
|
|
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": {
|
|
@@ -37,10 +37,10 @@
|
|
|
37
37
|
"author": "firejune",
|
|
38
38
|
"repository": {
|
|
39
39
|
"type": "git",
|
|
40
|
-
"url": "https://github.com/
|
|
40
|
+
"url": "https://github.com/rig-c/core.git"
|
|
41
41
|
},
|
|
42
|
-
"homepage": "https://github.com/
|
|
43
|
-
"bugs": "https://github.com/
|
|
42
|
+
"homepage": "https://github.com/rig-c/core#readme",
|
|
43
|
+
"bugs": "https://github.com/rig-c/core/issues",
|
|
44
44
|
"keywords": [
|
|
45
45
|
"spine",
|
|
46
46
|
"spine2d",
|
package/skills/rigc/SKILL.md
CHANGED
|
@@ -109,25 +109,25 @@ model space, its UVs, its triangles — which is a mesh attachment with those th
|
|
|
109
109
|
(AUTHORING §3.4, *Mesh attachment*); a region at the drawable's bounding-box centre
|
|
110
110
|
keeps only the box. rigc reads none of those formats — FACE §11, the paragraph
|
|
111
111
|
that opens *No Live2D file is read or written*
|
|
112
|
-
([FACE.md](https://github.com/
|
|
112
|
+
([FACE.md](https://github.com/rig-c/core/blob/main/docs/FACE.md#11-non-goals--stated-so-nobody-proposes-them-as-gaps)) —
|
|
113
113
|
only the pictures they produce. The rule, the background those frames need and
|
|
114
114
|
what a wrong one costs: AUTHORING §0, *When the source is a foreign player*.
|
|
115
115
|
|
|
116
116
|
## Which guide, for which need
|
|
117
117
|
|
|
118
|
-
Read [AUTHORING.md](https://github.com/
|
|
118
|
+
Read [AUTHORING.md](https://github.com/rig-c/core/blob/main/docs/AUTHORING.md) first, whatever the need: the two
|
|
119
119
|
spec files field by field, the emission rules, the loop, and the failure map. Then:
|
|
120
120
|
|
|
121
121
|
| The request is… | Open | Skill |
|
|
122
122
|
| --- | --- | --- |
|
|
123
|
-
| a **skeleton** — how many bones, where each pivot sits, what hangs off what | [RIGGING.md](https://github.com/
|
|
124
|
-
| a **movement** — an idle, a loop, from this pose to that one | [MOTION.md](https://github.com/
|
|
125
|
-
| a **face** — a blink, a gaze, a head turn a few degrees off axis | [FACE.md](https://github.com/
|
|
126
|
-
| a **skeleton.json somebody else authored** — read it, repair it, extend it | [INGEST.md](https://github.com/
|
|
127
|
-
| you are the **person operating** the agent rather than the agent | [PROMPTING.md](https://github.com/
|
|
123
|
+
| a **skeleton** — how many bones, where each pivot sits, what hangs off what | [RIGGING.md](https://github.com/rig-c/core/blob/main/docs/RIGGING.md) | `rigc-rigging` |
|
|
124
|
+
| a **movement** — an idle, a loop, from this pose to that one | [MOTION.md](https://github.com/rig-c/core/blob/main/docs/MOTION.md) | `rigc-motion` |
|
|
125
|
+
| a **face** — a blink, a gaze, a head turn a few degrees off axis | [FACE.md](https://github.com/rig-c/core/blob/main/docs/FACE.md) | `rigc-face` |
|
|
126
|
+
| a **skeleton.json somebody else authored** — read it, repair it, extend it | [INGEST.md](https://github.com/rig-c/core/blob/main/docs/INGEST.md) | `rigc-ingest` |
|
|
127
|
+
| you are the **person operating** the agent rather than the agent | [PROMPTING.md](https://github.com/rig-c/core/blob/main/docs/PROMPTING.md) | — |
|
|
128
128
|
|
|
129
129
|
Every guide linked here is in the installed package at `node_modules/rig-c/docs/`,
|
|
130
130
|
which is the copy that matches the rigc you run; the links go to the repository's
|
|
131
131
|
`main`. Inside the Claude Code plugin the same files are at `${CLAUDE_PLUGIN_ROOT}/docs/`.
|
|
132
132
|
Formats, the CLI reference and the licence chain:
|
|
133
|
-
[README.md](https://github.com/
|
|
133
|
+
[README.md](https://github.com/rig-c/core/blob/main/README.md), installed at `node_modules/rig-c/README.md`.
|
|
@@ -9,7 +9,7 @@ compatibility: Requires Bun 1.2 or later and the npm package rig-c.
|
|
|
9
9
|
|
|
10
10
|
Load this when the request is a **head rather than a body**: a drawn face that
|
|
11
11
|
breathes, blinks, moves its eyes and turns a few degrees off axis. Every rule below
|
|
12
|
-
is owned by [FACE.md](https://github.com/
|
|
12
|
+
is owned by [FACE.md](https://github.com/rig-c/core/blob/main/docs/FACE.md); this file says when to open it and what
|
|
13
13
|
it will not do for you.
|
|
14
14
|
|
|
15
15
|
## Non-negotiables
|
|
@@ -40,16 +40,16 @@ differential audit and the three limits it does not lift.
|
|
|
40
40
|
|
|
41
41
|
## Read, in this order
|
|
42
42
|
|
|
43
|
-
1. [AUTHORING.md](https://github.com/
|
|
43
|
+
1. [AUTHORING.md](https://github.com/rig-c/core/blob/main/docs/AUTHORING.md) — the `deform` timeline field by field
|
|
44
44
|
and what rigc refuses in it (§4), the failure map (§5–§6), the editor's
|
|
45
45
|
conventions (§10).
|
|
46
|
-
2. [MOTION.md](https://github.com/
|
|
46
|
+
2. [MOTION.md](https://github.com/rig-c/core/blob/main/docs/MOTION.md) — timing, easing and the offset table (§3),
|
|
47
47
|
candidates and the ballot (§4–§5). A blink and a gaze are ordinary motion work.
|
|
48
|
-
3. [FACE.md](https://github.com/
|
|
48
|
+
3. [FACE.md](https://github.com/rig-c/core/blob/main/docs/FACE.md) — the face's own geometry: the closed form every
|
|
49
49
|
number in a turn comes from (§1), the hierarchy underneath (§3), what
|
|
50
50
|
foreshortens (§5), and the deform audit gap (§9).
|
|
51
|
-
4. Then [RIGGING.md](https://github.com/
|
|
52
|
-
rather than this closed form, and [INGEST.md](https://github.com/
|
|
51
|
+
4. Then [RIGGING.md](https://github.com/rig-c/core/blob/main/docs/RIGGING.md) for the hierarchy as a general rule
|
|
52
|
+
rather than this closed form, and [INGEST.md](https://github.com/rig-c/core/blob/main/docs/INGEST.md) if the head
|
|
53
53
|
arrived as a compiled skeleton.
|
|
54
54
|
|
|
55
55
|
Every guide linked here is in the installed package at `node_modules/rig-c/docs/`,
|
|
@@ -10,7 +10,7 @@ compatibility: Requires Bun 1.2 or later and the npm package rig-c.
|
|
|
10
10
|
Load this when what you were handed is **already a skeleton**: a `skeleton.json`
|
|
11
11
|
with its `.atlas` and page images, and a request to understand it, answer a
|
|
12
12
|
complaint about it, re-express it, or extend it. Every rule below is owned by
|
|
13
|
-
[INGEST.md](https://github.com/
|
|
13
|
+
[INGEST.md](https://github.com/rig-c/core/blob/main/docs/INGEST.md); this file says when to open it and what it will
|
|
14
14
|
not do for you.
|
|
15
15
|
|
|
16
16
|
## Non-negotiables
|
|
@@ -61,14 +61,14 @@ thing to reach for; transcription by hand is what you fall back on for a constru
|
|
|
61
61
|
|
|
62
62
|
## Read, in this order
|
|
63
63
|
|
|
64
|
-
1. [INGEST.md](https://github.com/
|
|
64
|
+
1. [INGEST.md](https://github.com/rig-c/core/blob/main/docs/INGEST.md) — what every command will and will not do with
|
|
65
65
|
a foreign file (§0), `ingest` and transcription (§2), what each validator
|
|
66
66
|
complaint means on an export (§3), and the re-pivot, rename and extend
|
|
67
67
|
recipes (§4).
|
|
68
|
-
2. [AUTHORING.md](https://github.com/
|
|
68
|
+
2. [AUTHORING.md](https://github.com/rig-c/core/blob/main/docs/AUTHORING.md) — the two spec files the transcription
|
|
69
69
|
targets (§3–§4), the failure map (§5–§6), and the coordinate contract (§11.2).
|
|
70
|
-
3. Then [RIGGING.md](https://github.com/
|
|
71
|
-
it has, and [MOTION.md](https://github.com/
|
|
70
|
+
3. Then [RIGGING.md](https://github.com/rig-c/core/blob/main/docs/RIGGING.md) for why the re-pivot edit has the shape
|
|
71
|
+
it has, and [MOTION.md](https://github.com/rig-c/core/blob/main/docs/MOTION.md) for the animation you are adding.
|
|
72
72
|
|
|
73
73
|
Every guide linked here is in the installed package at `node_modules/rig-c/docs/`,
|
|
74
74
|
which is the copy that matches the rigc you run; the links go to the repository's
|
|
@@ -10,7 +10,7 @@ compatibility: Requires Bun 1.2 or later and the npm package rig-c.
|
|
|
10
10
|
Load this when the request is a **movement rather than a skeleton**: a sentence of
|
|
11
11
|
intent, between zero and N pictures of what the movement passes through, and a
|
|
12
12
|
Spine animation somebody would choose coming back. Every rule below is owned by
|
|
13
|
-
[MOTION.md](https://github.com/
|
|
13
|
+
[MOTION.md](https://github.com/rig-c/core/blob/main/docs/MOTION.md); this file says when to open it and what it will
|
|
14
14
|
not do for you.
|
|
15
15
|
|
|
16
16
|
## Non-negotiables
|
|
@@ -31,16 +31,16 @@ thing that judges a movement is a person's eye through `rigc vote` — MOTION §
|
|
|
31
31
|
|
|
32
32
|
## Read, in this order
|
|
33
33
|
|
|
34
|
-
1. [AUTHORING.md](https://github.com/
|
|
34
|
+
1. [AUTHORING.md](https://github.com/rig-c/core/blob/main/docs/AUTHORING.md) — the motion spec field by field (§4),
|
|
35
35
|
the failure map (§5–§6), reading reference frames (§8) and checking against
|
|
36
36
|
them (§9), what the editor does when nobody tells it otherwise (§10), and
|
|
37
37
|
reading a pose out of a picture (§11–§12).
|
|
38
|
-
2. [MOTION.md](https://github.com/
|
|
38
|
+
2. [MOTION.md](https://github.com/rig-c/core/blob/main/docs/MOTION.md) — the normal form every motion request
|
|
39
39
|
reduces to (§0), timing, easing and the per-bone offset table (§3), and how to
|
|
40
40
|
spread candidates so a ballot informs (§4–§5).
|
|
41
|
-
3. Then [RIGGING.md](https://github.com/
|
|
42
|
-
to decide; [FACE.md](https://github.com/
|
|
43
|
-
head turn; [INGEST.md](https://github.com/
|
|
41
|
+
3. Then [RIGGING.md](https://github.com/rig-c/core/blob/main/docs/RIGGING.md) if the skeleton itself is what you have
|
|
42
|
+
to decide; [FACE.md](https://github.com/rig-c/core/blob/main/docs/FACE.md) if the movement is a blink, a gaze or a
|
|
43
|
+
head turn; [INGEST.md](https://github.com/rig-c/core/blob/main/docs/INGEST.md) if the rig arrived as a compiled
|
|
44
44
|
skeleton rather than loose parts.
|
|
45
45
|
|
|
46
46
|
Every guide linked here is in the installed package at `node_modules/rig-c/docs/`,
|