distark-render 1.1.5 → 1.1.6

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.
@@ -0,0 +1,265 @@
1
+ /**
2
+ * Torso Pivot Test
3
+ * Verifies that the torso pivot point works correctly:
4
+ * - rotationValues.torso rotates the entire upper body around root_torso
5
+ * - All torso children (head, arms, thighs) follow the rotation
6
+ * - Changing root_torso.y moves the pivot height, changing the rotation arc
7
+ *
8
+ * Saves visual outputs to test-outputs/ for manual inspection.
9
+ */
10
+ import { SkiaRenderer } from '../modules/adapters/skiaRenderer.js';
11
+ import { readFile, writeFile, mkdir } from 'fs/promises';
12
+ // ─── canvas helpers ───────────────────────────────────────────────────────────
13
+ async function saveCanvas(canvas, path) {
14
+ const buffer = await canvas.toBuffer('image/png');
15
+ await writeFile(path, buffer);
16
+ console.log(` 💾 Saved: ${path}`);
17
+ }
18
+ /**
19
+ * Annotate the rendered frame with text labels and a crosshair at the
20
+ * torso pivot world position (pulled from computedPivotPoints).
21
+ */
22
+ function annotate(ctx, label, pivotX, pivotY) {
23
+ // Label
24
+ ctx.save();
25
+ ctx.fillStyle = 'rgba(0,0,0,0.65)';
26
+ ctx.fillRect(8, 8, 420, 40);
27
+ ctx.fillStyle = '#fff';
28
+ ctx.font = 'bold 22px monospace';
29
+ ctx.fillText(label, 16, 36);
30
+ ctx.restore();
31
+ // Crosshair at torso pivot
32
+ ctx.save();
33
+ ctx.strokeStyle = '#ff4400';
34
+ ctx.lineWidth = 2;
35
+ const r = 12;
36
+ ctx.beginPath();
37
+ ctx.moveTo(pivotX - r, pivotY);
38
+ ctx.lineTo(pivotX + r, pivotY);
39
+ ctx.moveTo(pivotX, pivotY - r);
40
+ ctx.lineTo(pivotX, pivotY + r);
41
+ ctx.stroke();
42
+ ctx.beginPath();
43
+ ctx.arc(pivotX, pivotY, r, 0, Math.PI * 2);
44
+ ctx.strokeStyle = '#ff4400';
45
+ ctx.stroke();
46
+ ctx.restore();
47
+ }
48
+ async function renderPose(renderer, baseRig, overrides, width, height, label, outPath) {
49
+ // Build a modified rig with requested overrides
50
+ const rig = {
51
+ ...baseRig,
52
+ rotationValues: {
53
+ ...(baseRig.rotationValues || {}),
54
+ torso: overrides.torsoRotation ?? 0
55
+ },
56
+ pivotPoints: {
57
+ ...(baseRig.pivotPoints || {}),
58
+ ...(overrides.root_torso ? { root_torso: overrides.root_torso } : {})
59
+ }
60
+ };
61
+ const canvas = await renderer.createCanvas(width, height);
62
+ const ctx = canvas.getContext('2d');
63
+ // Draw background
64
+ ctx.fillStyle = '#f0f0f0';
65
+ ctx.fillRect(0, 0, width, height);
66
+ // Render character (with pivot points visible)
67
+ renderer.renderToCanvas(canvas, rig, { canvasWidth: width, canvasHeight: height }, true);
68
+ // Find the root_torso pivot in computed pivot points
69
+ const renderData = renderer.compute(rig, { canvasWidth: width, canvasHeight: height });
70
+ const torsoPivot = renderData.pivotPoints.find(p => p.name === 'root_torso');
71
+ const pivotX = torsoPivot?.x ?? width / 2;
72
+ const pivotY = torsoPivot?.y ?? height / 2;
73
+ // Annotate
74
+ annotate(ctx, label, pivotX, pivotY);
75
+ await saveCanvas(canvas, outPath);
76
+ return { pivotX, pivotY };
77
+ }
78
+ // ─── test cases ───────────────────────────────────────────────────────────────
79
+ async function testBaseline(renderer, rig, w, h) {
80
+ console.log('\n Test 1: Baseline (torso = 0)');
81
+ console.log(' ' + '-'.repeat(40));
82
+ await renderPose(renderer, rig, { torsoRotation: 0 }, w, h, 'torso = 0 (baseline)', 'test-outputs/torso-pivot-1-baseline.png');
83
+ console.log(' Visual saved. Baseline always passes.');
84
+ return true;
85
+ }
86
+ /**
87
+ * Get world position of a named pivot from computed data.
88
+ */
89
+ function getPivot(renderer, rig, pivotName, w, h) {
90
+ const data = renderer.compute(rig, { canvasWidth: w, canvasHeight: h });
91
+ return data.pivotPoints.find(p => p.name === pivotName) ?? { x: 0, y: 0 };
92
+ }
93
+ async function testLeanRight(renderer, rig, w, h) {
94
+ console.log('\n Test 2: Lean Right (torso = +0.35 rad ≈ 20°)');
95
+ console.log(' ' + '-'.repeat(40));
96
+ // Save visuals
97
+ await renderPose(renderer, rig, { torsoRotation: 0 }, w, h, 'torso = 0 (ref)', 'test-outputs/torso-pivot-2-before.png');
98
+ await renderPose(renderer, rig, { torsoRotation: 0.35 }, w, h, 'torso = +0.35 rad (lean right)', 'test-outputs/torso-pivot-2-after.png');
99
+ // Use computed pivot positions — no images needed
100
+ const baseRig = { ...rig, rotationValues: { ...(rig.rotationValues || {}), torso: 0 } };
101
+ const leanRig = { ...rig, rotationValues: { ...(rig.rotationValues || {}), torso: 0.35 } };
102
+ const headBefore = getPivot(renderer, baseRig, 'torso_head', w, h);
103
+ const headAfter = getPivot(renderer, leanRig, 'torso_head', w, h);
104
+ const shift = headAfter.x - headBefore.x;
105
+ console.log(` torso_head pivot X: ${headBefore.x.toFixed(1)} → ${headAfter.x.toFixed(1)} (shift = ${shift.toFixed(1)} px)`);
106
+ const passed = shift > 5;
107
+ console.log(` Result: ${passed ? '✅ PASS' : '❌ FAIL'} - Head pivot shifted right by ${shift.toFixed(1)} px`);
108
+ return passed;
109
+ }
110
+ async function testLeanLeft(renderer, rig, w, h) {
111
+ console.log('\n Test 3: Lean Left (torso = -0.35 rad ≈ -20°)');
112
+ console.log(' ' + '-'.repeat(40));
113
+ // Save visuals
114
+ await renderPose(renderer, rig, { torsoRotation: 0 }, w, h, 'torso = 0 (ref)', 'test-outputs/torso-pivot-3-before.png');
115
+ await renderPose(renderer, rig, { torsoRotation: -0.35 }, w, h, 'torso = -0.35 rad (lean left)', 'test-outputs/torso-pivot-3-after.png');
116
+ // Use computed pivot positions
117
+ const baseRig = { ...rig, rotationValues: { ...(rig.rotationValues || {}), torso: 0 } };
118
+ const leanRig = { ...rig, rotationValues: { ...(rig.rotationValues || {}), torso: -0.35 } };
119
+ const headBefore = getPivot(renderer, baseRig, 'torso_head', w, h);
120
+ const headAfter = getPivot(renderer, leanRig, 'torso_head', w, h);
121
+ const shift = headBefore.x - headAfter.x; // leftward = positive
122
+ console.log(` torso_head pivot X: ${headBefore.x.toFixed(1)} → ${headAfter.x.toFixed(1)} (leftward shift = ${shift.toFixed(1)} px)`);
123
+ const passed = shift > 5;
124
+ console.log(` Result: ${passed ? '✅ PASS' : '❌ FAIL'} - Head pivot shifted left by ${shift.toFixed(1)} px`);
125
+ return passed;
126
+ }
127
+ async function testTorsoMovesWithPivot(renderer, rig, w, h) {
128
+ console.log('\n Test 4a: Torso Image Moves When root_torso Moves');
129
+ console.log(' ' + '-'.repeat(40));
130
+ await renderPose(renderer, rig, { torsoRotation: 0, root_torso: { x: 0, y: 0 } }, w, h, 'root_torso = (0, 0) — torso at feet', 'test-outputs/torso-pivot-4a-at-feet.png');
131
+ await renderPose(renderer, rig, { torsoRotation: 0, root_torso: { x: 0, y: -200 } }, w, h, 'root_torso = (0, -200) — torso lifted', 'test-outputs/torso-pivot-4a-lifted.png');
132
+ // The root_torso pivot world Y should differ by 200 px between the two rigs
133
+ const rigAtFeet = { ...rig, rotationValues: { ...(rig.rotationValues || {}), torso: 0 },
134
+ pivotPoints: { ...(rig.pivotPoints || {}), root_torso: { x: 0, y: 0 } } };
135
+ const rigLifted = { ...rig, rotationValues: { ...(rig.rotationValues || {}), torso: 0 },
136
+ pivotPoints: { ...(rig.pivotPoints || {}), root_torso: { x: 0, y: -200 } } };
137
+ const pivotAtFeet = getPivot(renderer, rigAtFeet, 'root_torso', w, h);
138
+ const pivotLifted = getPivot(renderer, rigLifted, 'root_torso', w, h);
139
+ const yShift = pivotAtFeet.y - pivotLifted.y; // should be ≈ 200
140
+ console.log(` root_torso Y (at feet): ${pivotAtFeet.y.toFixed(1)}`);
141
+ console.log(` root_torso Y (lifted): ${pivotLifted.y.toFixed(1)}`);
142
+ console.log(` Vertical shift: ${yShift.toFixed(1)} px (expected ≈ 200)`);
143
+ const passed = Math.abs(yShift - 200) < 1;
144
+ console.log(` Result: ${passed ? '✅ PASS' : '❌ FAIL'} — pivot (and torso bottom) moved by ${yShift.toFixed(1)} px`);
145
+ return passed;
146
+ }
147
+ async function testPivotHeightEffect(renderer, rig, w, h) {
148
+ console.log('\n Test 4b: Pivot Height Changes Head Arc');
149
+ console.log(' ' + '-'.repeat(40));
150
+ const angle = 0.3;
151
+ // Save visuals
152
+ await renderPose(renderer, rig, { torsoRotation: angle, root_torso: { x: 19, y: -62 } }, w, h, `torso = +0.3 rad, root_torso.y = -62 (hip)`, 'test-outputs/torso-pivot-4-hip.png');
153
+ await renderPose(renderer, rig, { torsoRotation: angle, root_torso: { x: 19, y: -200 } }, w, h, `torso = +0.3 rad, root_torso.y = -200 (high)`, 'test-outputs/torso-pivot-4-high.png');
154
+ // Compare torso_head pivot positions using computed data
155
+ const rigHip = {
156
+ ...rig,
157
+ rotationValues: { ...(rig.rotationValues || {}), torso: angle },
158
+ pivotPoints: { ...(rig.pivotPoints || {}), root_torso: { x: 19, y: -62 } }
159
+ };
160
+ const rigHigh = {
161
+ ...rig,
162
+ rotationValues: { ...(rig.rotationValues || {}), torso: angle },
163
+ pivotPoints: { ...(rig.pivotPoints || {}), root_torso: { x: 19, y: -200 } }
164
+ };
165
+ const headHip = getPivot(renderer, rigHip, 'torso_head', w, h);
166
+ const headHigh = getPivot(renderer, rigHigh, 'torso_head', w, h);
167
+ const diff = Math.abs(headHigh.x - headHip.x) + Math.abs(headHigh.y - headHip.y);
168
+ console.log(` torso_head (hip pivot): (${headHip.x.toFixed(1)}, ${headHip.y.toFixed(1)})`);
169
+ console.log(` torso_head (high pivot): (${headHigh.x.toFixed(1)}, ${headHigh.y.toFixed(1)})`);
170
+ console.log(` Total distance: ${diff.toFixed(1)} px`);
171
+ // A higher pivot point at the same rotation angle should place the head pivot
172
+ // at a different world position.
173
+ const passed = diff > 1;
174
+ console.log(` Result: ${passed ? '✅ PASS' : '❌ FAIL'} - Different pivot heights yield different head positions`);
175
+ return passed;
176
+ }
177
+ async function testLegsStayStill(renderer, rig, w, h) {
178
+ console.log('\n Test 5: Legs Stay Still When Torso Rotates');
179
+ console.log(' ' + '-'.repeat(40));
180
+ await renderPose(renderer, rig, { torsoRotation: 0 }, w, h, 'torso = 0 — legs reference', 'test-outputs/torso-pivot-5-legs-baseline.png');
181
+ await renderPose(renderer, rig, { torsoRotation: 0.45 }, w, h, 'torso = +0.45 rad — legs should not move', 'test-outputs/torso-pivot-5-legs-rotated.png');
182
+ const baseRig = { ...rig, rotationValues: { ...(rig.rotationValues || {}), torso: 0 } };
183
+ const leanRig = { ...rig, rotationValues: { ...(rig.rotationValues || {}), torso: 0.45 } };
184
+ // Head SHOULD move
185
+ const headBase = getPivot(renderer, baseRig, 'torso_head', w, h);
186
+ const headLean = getPivot(renderer, leanRig, 'torso_head', w, h);
187
+ const headShift = Math.abs(headLean.x - headBase.x);
188
+ // Hips should NOT move
189
+ const lHipBase = getPivot(renderer, baseRig, 'torso_leftThigh', w, h);
190
+ const lHipLean = getPivot(renderer, leanRig, 'torso_leftThigh', w, h);
191
+ const rHipBase = getPivot(renderer, baseRig, 'torso_rightThigh', w, h);
192
+ const rHipLean = getPivot(renderer, leanRig, 'torso_rightThigh', w, h);
193
+ const lHipShift = Math.hypot(lHipLean.x - lHipBase.x, lHipLean.y - lHipBase.y);
194
+ const rHipShift = Math.hypot(rHipLean.x - rHipBase.x, rHipLean.y - rHipBase.y);
195
+ console.log(` torso_head shift: ${headShift.toFixed(1)} px (expected > 5)`);
196
+ console.log(` torso_leftThigh shift: ${lHipShift.toFixed(2)} px (expected = 0)`);
197
+ console.log(` torso_rightThigh shift: ${rHipShift.toFixed(2)} px (expected = 0)`);
198
+ const headMoved = headShift > 5;
199
+ const legsStill = lHipShift < 0.01 && rHipShift < 0.01;
200
+ console.log(` Head moved: ${headMoved ? '✅' : '❌'}`);
201
+ console.log(` Legs still: ${legsStill ? '✅' : '❌'}`);
202
+ const passed = headMoved && legsStill;
203
+ console.log(` Result: ${passed ? '✅ PASS' : '❌ FAIL'}`);
204
+ return passed;
205
+ }
206
+ async function testSweep(renderer, rig, w, h) {
207
+ console.log('\n Test 6: Rotation Sweep (-0.5 to +0.5 rad, 5 frames)');
208
+ console.log(' ' + '-'.repeat(40));
209
+ const angles = [-0.5, -0.25, 0, 0.25, 0.5];
210
+ for (let i = 0; i < angles.length; i++) {
211
+ const deg = (angles[i] * 180 / Math.PI).toFixed(1);
212
+ await renderPose(renderer, rig, { torsoRotation: angles[i] }, w, h, `torso = ${angles[i].toFixed(2)} rad (${deg}°)`, `test-outputs/torso-pivot-6-sweep-${i}.png`);
213
+ }
214
+ console.log(` Saved ${angles.length} sweep frames.`);
215
+ console.log(' Result: ✅ PASS');
216
+ return true;
217
+ }
218
+ // ─── main ─────────────────────────────────────────────────────────────────────
219
+ async function runTorsoPivotTests(inputFile) {
220
+ console.log('\n🔄 Torso Pivot Test');
221
+ console.log('='.repeat(50));
222
+ console.log(`📦 Loading ${inputFile}...`);
223
+ const rig = JSON.parse(await readFile(inputFile, 'utf-8'));
224
+ const width = 900;
225
+ const height = 1100;
226
+ console.log('🎨 Setting up renderer and loading images...');
227
+ const renderer = new SkiaRenderer();
228
+ await renderer.loadImages(rig);
229
+ // Ensure output directory exists
230
+ await mkdir('test-outputs', { recursive: true });
231
+ console.log('\n🧪 Running torso pivot tests...\n');
232
+ const results = {
233
+ 'Baseline render': await testBaseline(renderer, rig, width, height),
234
+ 'Lean right': await testLeanRight(renderer, rig, width, height),
235
+ 'Lean left': await testLeanLeft(renderer, rig, width, height),
236
+ 'Torso moves with pivot': await testTorsoMovesWithPivot(renderer, rig, width, height),
237
+ 'Pivot height effect': await testPivotHeightEffect(renderer, rig, width, height),
238
+ 'Legs stay still': await testLegsStayStill(renderer, rig, width, height),
239
+ 'Rotation sweep': await testSweep(renderer, rig, width, height),
240
+ };
241
+ console.log('\n' + '='.repeat(50));
242
+ console.log('📊 Test Summary:');
243
+ const passCount = Object.values(results).filter(Boolean).length;
244
+ const total = Object.keys(results).length;
245
+ console.log(` ${passCount}/${total} tests passed`);
246
+ Object.entries(results).forEach(([name, ok]) => console.log(` ${ok ? '✅' : '❌'} ${name}`));
247
+ const allPassed = passCount === total;
248
+ console.log(allPassed
249
+ ? '\n✅ All torso pivot tests PASSED\n'
250
+ : '\n❌ Some torso pivot tests FAILED\n');
251
+ return allPassed;
252
+ }
253
+ async function main() {
254
+ const inputFile = process.argv[2] || 'tank_truncated.json';
255
+ try {
256
+ const ok = await runTorsoPivotTests(inputFile);
257
+ process.exit(ok ? 0 : 1);
258
+ }
259
+ catch (err) {
260
+ console.error('❌ Test failed with error:', err);
261
+ process.exit(1);
262
+ }
263
+ }
264
+ main();
265
+ //# sourceMappingURL=test-torso-pivot.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"test-torso-pivot.js","sourceRoot":"","sources":["../../tests/test-torso-pivot.ts"],"names":[],"mappings":"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"}
package/dist/types.d.ts CHANGED
@@ -124,12 +124,12 @@ export interface RigData {
124
124
  pivotPoints?: Record<string, Position>;
125
125
  jointOffset?: Record<string, Position>;
126
126
  zIndexValues?: Record<string, number>;
127
- hiddenValues?: Record<string, boolean>;
128
127
  eyes?: EyeData;
129
128
  eyeSockets?: EyeSockets;
130
129
  mouth?: MouthData;
131
130
  imagePaths?: Record<string, string>;
132
131
  imageScale?: number;
132
+ visibility?: Record<string, boolean>;
133
133
  flipX?: boolean;
134
134
  flipHead?: boolean;
135
135
  }
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../types.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,91 +1,92 @@
1
- {
2
- "name": "distark-render",
3
- "version": "1.1.5",
4
- "description": "Rendering-agnostic character rig system with TypeScript",
5
- "type": "module",
6
- "main": "./dist/modules/renderRig.js",
7
- "types": "./dist/modules/renderRig.d.ts",
8
- "exports": {
9
- ".": {
10
- "types": "./dist/modules/renderRig.d.ts",
11
- "import": "./dist/modules/renderRig.js"
12
- },
13
- "./imageLoad": {
14
- "types": "./dist/modules/imageLoad.d.ts",
15
- "import": "./dist/modules/imageLoad.js"
16
- },
17
- "./eyeSystem": {
18
- "types": "./dist/modules/eyeSystem.d.ts",
19
- "import": "./dist/modules/eyeSystem.js"
20
- },
21
- "./mouthSystem": {
22
- "types": "./dist/modules/mouthSystem.d.ts",
23
- "import": "./dist/modules/mouthSystem.js"
24
- },
25
- "./types": {
26
- "types": "./dist/types.d.ts",
27
- "import": "./dist/types.js"
28
- },
29
- "./p5": {
30
- "types": "./dist/modules/adapters/p5Renderer.d.ts",
31
- "import": "./dist/modules/adapters/p5Renderer.js"
32
- },
33
- "./skia": {
34
- "types": "./dist/modules/adapters/skiaRenderer.d.ts",
35
- "import": "./dist/modules/adapters/skiaRenderer.js"
36
- },
37
- "./animationDiff": {
38
- "types": "./dist/modules/animationDiff.d.ts",
39
- "import": "./dist/modules/animationDiff.js"
40
- }
41
- },
42
- "files": [
43
- "dist/**/*",
44
- "assets/**/*.json",
45
- "README.md",
46
- "LICENSE"
47
- ],
48
- "bin": {
49
- "distark-check": "./dist/cli/distark-check.js"
50
- },
51
- "scripts": {
52
- "build": "tsc",
53
- "check": "node dist/cli/distark-check.js",
54
- "test-cli": "npm run build && node dist/tests/test-cli.js",
55
- "watch": "tsc --watch",
56
- "dev": "tsc --watch & http-server -p 8080",
57
- "clean": "rm -rf dist",
58
- "serve": "http-server -p 8080",
59
- "test": "npm run build && for f in dist/tests/test-*.js; do echo \"\\n>>> $f\" && node \"$f\" || exit 1; done",
60
- "prepublishOnly": "npm run clean && npm run build"
61
- },
62
- "keywords": [
63
- "character",
64
- "rig",
65
- "animation",
66
- "canvas",
67
- "rendering",
68
- "2d"
69
- ],
70
- "author": "liaokira",
71
- "license": "MIT",
72
- "devDependencies": {
73
- "@types/node": "^25.2.0",
74
- "playwright": "^1.58.2",
75
- "typescript": "^5.3.3"
76
- },
77
- "optionalDependencies": {
78
- "skia-canvas": "^3.0.8"
79
- },
80
- "repository": {
81
- "type": "git",
82
- "url": "git+https://github.com/jtoy/distark_render.git"
83
- },
84
- "bugs": {
85
- "url": "https://github.com/jtoy/distark_render/issues"
86
- },
87
- "homepage": "https://github.com/jtoy/distark_render#readme",
88
- "dependencies": {
89
- "distark-render": "^1.0.8"
90
- }
91
- }
1
+ {
2
+ "name": "distark-render",
3
+ "version": "1.1.6",
4
+ "description": "Rendering-agnostic character rig system with TypeScript",
5
+ "type": "module",
6
+ "main": "./dist/modules/renderRig.js",
7
+ "types": "./dist/modules/renderRig.d.ts",
8
+ "exports": {
9
+ ".": {
10
+ "types": "./dist/modules/renderRig.d.ts",
11
+ "import": "./dist/modules/renderRig.js"
12
+ },
13
+ "./imageLoad": {
14
+ "types": "./dist/modules/imageLoad.d.ts",
15
+ "import": "./dist/modules/imageLoad.js"
16
+ },
17
+ "./eyeSystem": {
18
+ "types": "./dist/modules/eyeSystem.d.ts",
19
+ "import": "./dist/modules/eyeSystem.js"
20
+ },
21
+ "./mouthSystem": {
22
+ "types": "./dist/modules/mouthSystem.d.ts",
23
+ "import": "./dist/modules/mouthSystem.js"
24
+ },
25
+ "./types": {
26
+ "types": "./dist/types.d.ts",
27
+ "import": "./dist/types.js"
28
+ },
29
+ "./p5": {
30
+ "types": "./dist/modules/adapters/p5Renderer.d.ts",
31
+ "import": "./dist/modules/adapters/p5Renderer.js"
32
+ },
33
+ "./skia": {
34
+ "types": "./dist/modules/adapters/skiaRenderer.d.ts",
35
+ "import": "./dist/modules/adapters/skiaRenderer.js"
36
+ },
37
+ "./animationDiff": {
38
+ "types": "./dist/modules/animationDiff.d.ts",
39
+ "import": "./dist/modules/animationDiff.js"
40
+ }
41
+ },
42
+ "files": [
43
+ "dist/**/*",
44
+ "assets/**/*.json",
45
+ "README.md",
46
+ "LICENSE"
47
+ ],
48
+ "bin": {
49
+ "distark-check": "./dist/cli/distark-check.js"
50
+ },
51
+ "scripts": {
52
+ "build": "tsc",
53
+ "check": "node dist/cli/distark-check.js",
54
+ "test-cli": "npm run build && node dist/tests/test-cli.js",
55
+ "test-torso-pivot": "npm run build && node dist/tests/test-torso-pivot.js",
56
+ "watch": "tsc --watch",
57
+ "dev": "tsc --watch & http-server -p 8080",
58
+ "clean": "rm -rf dist",
59
+ "serve": "http-server -p 8080",
60
+ "test": "npm run build && for f in dist/tests/test-*.js; do echo \"\\n>>> $f\" && node \"$f\" || exit 1; done",
61
+ "prepublishOnly": "npm run clean && npm run build"
62
+ },
63
+ "keywords": [
64
+ "character",
65
+ "rig",
66
+ "animation",
67
+ "canvas",
68
+ "rendering",
69
+ "2d"
70
+ ],
71
+ "author": "liaokira",
72
+ "license": "MIT",
73
+ "devDependencies": {
74
+ "@types/node": "^25.2.0",
75
+ "playwright": "^1.58.2",
76
+ "typescript": "^5.3.3"
77
+ },
78
+ "optionalDependencies": {
79
+ "skia-canvas": "^3.0.8"
80
+ },
81
+ "repository": {
82
+ "type": "git",
83
+ "url": "git+https://github.com/jtoy/distark_render.git"
84
+ },
85
+ "bugs": {
86
+ "url": "https://github.com/jtoy/distark_render/issues"
87
+ },
88
+ "homepage": "https://github.com/jtoy/distark_render#readme",
89
+ "dependencies": {
90
+ "distark-render": "^1.0.8"
91
+ }
92
+ }
@@ -1,33 +0,0 @@
1
- /**
2
- * Visual End-to-End Test: Part Hiding via hiddenValues
3
- *
4
- * Scenario
5
- * --------
6
- * A character rig has a rightHand limb whose image is solid RED (RGB 255,0,0).
7
- * Every other part has no image assigned, so only the rightHand can produce red pixels.
8
- *
9
- * Test 1 – Baseline (rightHand visible)
10
- * hiddenValues: {}
11
- * Expected: red pixels ARE present in the rendered canvas.
12
- * Purpose: Proves the test setup is valid (image pipeline works).
13
- *
14
- * Test 2 – Hidden (rightHand hidden)
15
- * hiddenValues: { rightHand: true }
16
- * Expected: ZERO red pixels in the rendered canvas.
17
- * This is the RED → GREEN test:
18
- * RED: renderRig.ts ignores hiddenValues → rightHand drawn → red pixels found → FAIL
19
- * GREEN: renderRig.ts respects hiddenValues → rightHand excluded → no red pixels → PASS
20
- *
21
- * Hand position trace (default rotations = 0, canvas 800×600)
22
- * ─────────────────────────────────────────────────────────────
23
- * character centre : (400, 400) [W/2, H/2+100]
24
- * shoulder pivot : (450, 400) [+50, 0]
25
- * rightUpperArm centre : (450, 360) [−40 along Y]
26
- * elbow pivot : (450, 320) [−80 upper arm height]
27
- * rightForearm centre : (450, 285) [−35 along Y]
28
- * wrist pivot : (450, 250) [−70 forearm height]
29
- * rightHand centre : (450, 210) [−40 along Y]
30
- * rightHand draw rect : x∈[410,490], y∈[170,250] ← well within canvas
31
- */
32
- export {};
33
- //# sourceMappingURL=test-hidden-parts.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"test-hidden-parts.d.ts","sourceRoot":"","sources":["../../tests/test-hidden-parts.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG"}