rig-c 2.24.0 → 2.24.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/package.json +1 -1
- package/src/mesh.ts +1 -1
- package/src/meshquality.ts +2 -2
- package/src/meshreduce.ts +5 -5
- package/src/transform.ts +1 -1
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "rig-c",
|
|
3
|
-
"version": "2.24.
|
|
3
|
+
"version": "2.24.1",
|
|
4
4
|
"description": "AI-authored Spine 2D rigging and animation, verified before it is written. rigc compiles a rig spec into Spine 4.3 skeleton data, gates it with named assertions held to a spine-core round trip's verdicts, and emits nothing that fails. Output imports into the Spine editor. Ships as an agent skill.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
package/src/mesh.ts
CHANGED
|
@@ -2036,7 +2036,7 @@ export function meshEdges(vertexCount: number, triangles: readonly number[], hul
|
|
|
2036
2036
|
// that used to re-implement distance weighting outside the compiler states the
|
|
2037
2037
|
// segment list and nothing else.
|
|
2038
2038
|
//
|
|
2039
|
-
// The algorithm is a port of `
|
|
2039
|
+
// The algorithm is a port of `rig-parts`' lattice mesh and segment weights
|
|
2040
2040
|
// (MIT, same owner). What it does, in order:
|
|
2041
2041
|
//
|
|
2042
2042
|
// 1. **Cells.** A square lattice of `cell`-pixel squares over the part; the
|
package/src/meshquality.ts
CHANGED
|
@@ -934,7 +934,7 @@ function runsAlongOuterBoundary(a: Pt, b: Pt, poly: readonly Pt[], transition: n
|
|
|
934
934
|
}
|
|
935
935
|
|
|
936
936
|
/**
|
|
937
|
-
* [agreed,
|
|
937
|
+
* [agreed, rig-parts#126] Is the edge `a`–`b` held by `region` — does the
|
|
938
938
|
* region's density bound (`MQ_MAX_EDGE` or `MQ_TRANSITION`) apply to it? The
|
|
939
939
|
* one definition both `measureMeshQuality` and `reduceMesh`'s refinement read.
|
|
940
940
|
*
|
|
@@ -1674,7 +1674,7 @@ interface Edge {
|
|
|
1674
1674
|
*
|
|
1675
1675
|
* Which edges a region holds is `edgeIsHeldByRegion`'s answer and nothing
|
|
1676
1676
|
* else's: an edge that only touches the band's outer boundary at one point,
|
|
1677
|
-
* from outside, is not held (
|
|
1677
|
+
* from outside, is not held (rig-parts#126). One bound per edge, the smallest
|
|
1678
1678
|
* applicable anywhere on it (P16): `L0` of every region whose closed polygon it
|
|
1679
1679
|
* meets, and `L0 + grade·d` of every other region that holds it, `d` its
|
|
1680
1680
|
* distance from that region. A row's value is the edge whose
|
package/src/meshreduce.ts
CHANGED
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
*
|
|
18
18
|
* Each is its own function with its own entry and exit, so a control can run
|
|
19
19
|
* one with the other idle — regions empty, or every source vertex protected —
|
|
20
|
-
* which is the shape the consumer asked for (
|
|
20
|
+
* which is the shape the consumer asked for (rig-parts#126, comment
|
|
21
21
|
* 6042150608: "separate composed operations … with independently passing
|
|
22
22
|
* controls for each").
|
|
23
23
|
*
|
|
@@ -53,7 +53,7 @@
|
|
|
53
53
|
* the edge lies outside the region and its band, the split is where the edge
|
|
54
54
|
* leaves the band, so the piece to that end only touches the band's outer
|
|
55
55
|
* boundary and `edgeIsHeldByRegion` — the one definition the rows read —
|
|
56
|
-
* exempts it (
|
|
56
|
+
* exempts it (rig-parts#126). Otherwise the split is at the midpoint when
|
|
57
57
|
* the midpoint lies in the region or its band, else at the point of the edge
|
|
58
58
|
* inside them nearest the midpoint. A region no edge meets — one
|
|
59
59
|
* inside a single triangle — gets the first vertex of its polygon inserted into
|
|
@@ -883,7 +883,7 @@ function offsetExit(inner: Pt, outer: Pt, poly: readonly Pt[], level: number): n
|
|
|
883
883
|
}
|
|
884
884
|
|
|
885
885
|
/**
|
|
886
|
-
* [agreed,
|
|
886
|
+
* [agreed, rig-parts#126] A split of `inner`–`outer` where it leaves
|
|
887
887
|
* `region`'s band, so that the piece to `outer` only touches the band's outer
|
|
888
888
|
* boundary and is exempt by `edgeIsHeldByRegion` — the one definition the
|
|
889
889
|
* measurement reads. The split is put half of `BAND_CONTACT_TOLERANCE` inside
|
|
@@ -1018,7 +1018,7 @@ function refineRegions(run: Run): PhaseEnd {
|
|
|
1018
1018
|
const a = canon.order[ra];
|
|
1019
1019
|
const b = canon.order[rb];
|
|
1020
1020
|
// An end outside the region and its band: split where the edge leaves the band, so the piece to that
|
|
1021
|
-
// end only touches the band's outer boundary and is exempt (
|
|
1021
|
+
// end only touches the band's outer boundary and is exempt (rig-parts#126) — the same predicate the
|
|
1022
1022
|
// measurement reads decides it, so the next measurement agrees.
|
|
1023
1023
|
let exited = false;
|
|
1024
1024
|
for (const [inner, outer] of [[b, a], [a, b]] as const) {
|
|
@@ -1045,7 +1045,7 @@ function refineRegions(run: Run): PhaseEnd {
|
|
|
1045
1045
|
const why =
|
|
1046
1046
|
region.transition > 0
|
|
1047
1047
|
? 'no point of the edge on the band\'s outer boundary leaves the piece to it exempt, so an edge from inside the region and its band to it stays over the bound'
|
|
1048
|
-
: 'with no band, an edge from the region to it touches the authored boundary and stays held (
|
|
1048
|
+
: 'with no band, an edge from the region to it touches the authored boundary and stays held (rig-parts#126), so it stays over the bound';
|
|
1049
1049
|
return {
|
|
1050
1050
|
kind: 'stuck',
|
|
1051
1051
|
constraint: `${rowName(target)} (vertex ${end} of edge ${ra}–${rb} lies ${r6(beyond)} px beyond region "${region.name}"'s ${region.transition} px band, further than the edge's bound ${target.bound!.value}: ${why}, and the refinement inserts only inside them — P16)`,
|
package/src/transform.ts
CHANGED
|
@@ -68,7 +68,7 @@ import { modeMatrix, RUNTIME_ARITHMETIC, worldTransforms, type CoreWorld, type W
|
|
|
68
68
|
|
|
69
69
|
/**
|
|
70
70
|
* What `computeWorldTransforms` reads off a bone — a structural type, so both a
|
|
71
|
-
* Spine bone (`SpineBone`, what
|
|
71
|
+
* Spine bone (`SpineBone`, what rig-parts and every skeleton reader hold) and
|
|
72
72
|
* a compiled-model bone (`ModelBone`, what `compile` holds) satisfy it as they
|
|
73
73
|
* are, without a cast.
|
|
74
74
|
*
|