distark-render 1.0.0 ā 1.0.2
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 +81 -2
- package/dist/modules/adapters/p5Renderer.d.ts +71 -0
- package/dist/modules/adapters/p5Renderer.d.ts.map +1 -0
- package/dist/modules/adapters/p5Renderer.js +145 -0
- package/dist/modules/adapters/p5Renderer.js.map +1 -0
- package/dist/modules/adapters/skiaRenderer.d.ts +84 -0
- package/dist/modules/adapters/skiaRenderer.d.ts.map +1 -0
- package/dist/modules/adapters/skiaRenderer.js +262 -0
- package/dist/modules/adapters/skiaRenderer.js.map +1 -0
- package/dist/modules/eyeSystem.d.ts +34 -1
- package/dist/modules/eyeSystem.d.ts.map +1 -1
- package/dist/modules/eyeSystem.js +46 -20
- package/dist/modules/eyeSystem.js.map +1 -1
- package/dist/modules/imageLoad.d.ts +4 -1
- package/dist/modules/imageLoad.d.ts.map +1 -1
- package/dist/modules/imageLoad.js +65 -19
- package/dist/modules/imageLoad.js.map +1 -1
- package/dist/modules/mouthSystem.d.ts +15 -15
- package/dist/modules/mouthSystem.d.ts.map +1 -1
- package/dist/modules/mouthSystem.js +91 -52
- package/dist/modules/mouthSystem.js.map +1 -1
- package/dist/modules/renderRig.d.ts +1 -1
- package/dist/modules/renderRig.d.ts.map +1 -1
- package/dist/modules/renderRig.js +150 -49
- package/dist/modules/renderRig.js.map +1 -1
- package/dist/tests/test-joint-movement.d.ts +7 -0
- package/dist/tests/test-joint-movement.d.ts.map +1 -0
- package/dist/tests/test-joint-movement.js +323 -0
- package/dist/tests/test-joint-movement.js.map +1 -0
- package/dist/tests/test-skia.d.ts +12 -0
- package/dist/tests/test-skia.d.ts.map +1 -0
- package/dist/tests/test-skia.js +33 -0
- package/dist/tests/test-skia.js.map +1 -0
- package/dist/tests/test-visual-verification.d.ts +7 -0
- package/dist/tests/test-visual-verification.d.ts.map +1 -0
- package/dist/tests/test-visual-verification.js +180 -0
- package/dist/tests/test-visual-verification.js.map +1 -0
- package/dist/types.d.ts +18 -0
- package/dist/types.d.ts.map +1 -1
- package/package.json +21 -2
- package/dist/test-skia.d.ts +0 -15
- package/dist/test-skia.d.ts.map +0 -1
- package/dist/test-skia.js +0 -179
- package/dist/test-skia.js.map +0 -1
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Skia Canvas Command-Line Test
|
|
3
|
+
* Renders a character rig using Skia Canvas and saves to a file
|
|
4
|
+
*
|
|
5
|
+
* Uses the simplified SkiaRenderer adapter for easy rendering
|
|
6
|
+
*
|
|
7
|
+
* Usage:
|
|
8
|
+
* npm run build
|
|
9
|
+
* node dist/test-skia.js [input.json] [output.png] [width] [height]
|
|
10
|
+
*/
|
|
11
|
+
import { SkiaRenderer } from '../modules/adapters/skiaRenderer.js';
|
|
12
|
+
import { readFile } from 'fs/promises';
|
|
13
|
+
async function main() {
|
|
14
|
+
// Parse command line args
|
|
15
|
+
const args = process.argv.slice(2);
|
|
16
|
+
const inputFile = args[0] || 'assets/tank.json';
|
|
17
|
+
const outputFile = args[1] || 'output-tank.png';
|
|
18
|
+
const width = parseInt(args[2]) || 1000;
|
|
19
|
+
const height = parseInt(args[3]) || 1000;
|
|
20
|
+
console.log(`š¦ Loading ${inputFile}...`);
|
|
21
|
+
const rigData = JSON.parse(await readFile(inputFile, 'utf-8'));
|
|
22
|
+
console.log(`šØ Rendering ${width}x${height}...`);
|
|
23
|
+
// Render using simplified API
|
|
24
|
+
const renderer = new SkiaRenderer();
|
|
25
|
+
await renderer.renderToFile(outputFile, rigData, {
|
|
26
|
+
canvasWidth: width,
|
|
27
|
+
canvasHeight: height,
|
|
28
|
+
showPivots: true
|
|
29
|
+
});
|
|
30
|
+
console.log(`ā
Saved to ${outputFile}`);
|
|
31
|
+
}
|
|
32
|
+
main().catch(console.error);
|
|
33
|
+
//# sourceMappingURL=test-skia.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"test-skia.js","sourceRoot":"","sources":["../../tests/test-skia.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,qCAAqC,CAAC;AACnE,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAGvC,KAAK,UAAU,IAAI;IACf,0BAA0B;IAC1B,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACnC,MAAM,SAAS,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,kBAAkB,CAAC;IAChD,MAAM,UAAU,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,iBAAiB,CAAC;IAChD,MAAM,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC;IACxC,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC;IAEzC,OAAO,CAAC,GAAG,CAAC,cAAc,SAAS,KAAK,CAAC,CAAC;IAC1C,MAAM,OAAO,GAAY,IAAI,CAAC,KAAK,CAAC,MAAM,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC,CAAC;IAExE,OAAO,CAAC,GAAG,CAAC,gBAAgB,KAAK,IAAI,MAAM,KAAK,CAAC,CAAC;IAElD,8BAA8B;IAC9B,MAAM,QAAQ,GAAG,IAAI,YAAY,EAAE,CAAC;IACpC,MAAM,QAAQ,CAAC,YAAY,CAAC,UAAU,EAAE,OAAO,EAAE;QAC7C,WAAW,EAAE,KAAK;QAClB,YAAY,EAAE,MAAM;QACpB,UAAU,EAAE,IAAI;KACnB,CAAC,CAAC;IAEH,OAAO,CAAC,GAAG,CAAC,cAAc,UAAU,EAAE,CAAC,CAAC;AAC5C,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"test-visual-verification.d.ts","sourceRoot":"","sources":["../../tests/test-visual-verification.ts"],"names":[],"mappings":"AAAA;;;;GAIG"}
|
|
@@ -0,0 +1,180 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Visual Verification Test
|
|
3
|
+
* Uses Skia Canvas to render a character and verify eyes and mouth are present
|
|
4
|
+
* through color comparison in expected regions
|
|
5
|
+
*/
|
|
6
|
+
import { SkiaRenderer } from '../modules/adapters/skiaRenderer.js';
|
|
7
|
+
import { readFile } from 'fs/promises';
|
|
8
|
+
/**
|
|
9
|
+
* Sample pixel color at a specific location
|
|
10
|
+
*/
|
|
11
|
+
function getPixelColor(imageData, x, y) {
|
|
12
|
+
const index = (Math.floor(y) * imageData.width + Math.floor(x)) * 4;
|
|
13
|
+
return {
|
|
14
|
+
r: imageData.data[index],
|
|
15
|
+
g: imageData.data[index + 1],
|
|
16
|
+
b: imageData.data[index + 2],
|
|
17
|
+
a: imageData.data[index + 3]
|
|
18
|
+
};
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Check if a color is significantly different from background
|
|
22
|
+
*/
|
|
23
|
+
function isDifferentFromBackground(color, bgColor, threshold = 10) {
|
|
24
|
+
const rDiff = Math.abs(color.r - bgColor.r);
|
|
25
|
+
const gDiff = Math.abs(color.g - bgColor.g);
|
|
26
|
+
const bDiff = Math.abs(color.b - bgColor.b);
|
|
27
|
+
const aDiff = Math.abs(color.a - bgColor.a);
|
|
28
|
+
return (rDiff > threshold || gDiff > threshold || bDiff > threshold || aDiff > threshold);
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Sample multiple points in a region and check if content exists
|
|
32
|
+
*/
|
|
33
|
+
function hasContentInRegion(imageData, region, bgColor, samplePoints = 9) {
|
|
34
|
+
let pixelsWithContent = 0;
|
|
35
|
+
// Sample points in a grid within the region
|
|
36
|
+
const cols = Math.ceil(Math.sqrt(samplePoints));
|
|
37
|
+
const rows = Math.ceil(samplePoints / cols);
|
|
38
|
+
for (let row = 0; row < rows; row++) {
|
|
39
|
+
for (let col = 0; col < cols; col++) {
|
|
40
|
+
const x = region.x + (region.width * col / (cols - 1 || 1));
|
|
41
|
+
const y = region.y + (region.height * row / (rows - 1 || 1));
|
|
42
|
+
// Skip if out of bounds
|
|
43
|
+
if (x < 0 || x >= imageData.width || y < 0 || y >= imageData.height) {
|
|
44
|
+
continue;
|
|
45
|
+
}
|
|
46
|
+
const color = getPixelColor(imageData, x, y);
|
|
47
|
+
if (isDifferentFromBackground(color, bgColor)) {
|
|
48
|
+
pixelsWithContent++;
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
// At least 30% of sampled pixels should have content
|
|
53
|
+
const contentPercentage = pixelsWithContent / samplePoints;
|
|
54
|
+
return contentPercentage >= 0.3;
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Calculate test regions based on rig data
|
|
58
|
+
*/
|
|
59
|
+
function calculateTestRegions(rigData, canvasWidth, canvasHeight) {
|
|
60
|
+
const regions = [];
|
|
61
|
+
const centerX = canvasWidth / 2;
|
|
62
|
+
const centerY = canvasHeight / 2 + 100;
|
|
63
|
+
// Left Eye Region
|
|
64
|
+
if (rigData.eyes?.leftEyeXCoor !== undefined && rigData.eyes?.leftEyeYCoor !== undefined) {
|
|
65
|
+
const leftEyeWidth = (rigData.eyes.leftEyeImageWidth || 100) * (rigData.eyes.leftEyeWidthRatio || 1);
|
|
66
|
+
const leftEyeHeight = (rigData.eyes.leftEyeImageHeight || 100) * (rigData.eyes.leftEyeHeightRatio || 1);
|
|
67
|
+
regions.push({
|
|
68
|
+
name: 'Left Eye',
|
|
69
|
+
x: centerX + rigData.eyes.leftEyeXCoor - leftEyeWidth / 2,
|
|
70
|
+
y: centerY + rigData.eyes.leftEyeYCoor - leftEyeHeight / 2,
|
|
71
|
+
width: leftEyeWidth,
|
|
72
|
+
height: leftEyeHeight
|
|
73
|
+
});
|
|
74
|
+
}
|
|
75
|
+
// Right Eye Region
|
|
76
|
+
if (rigData.eyes?.rightEyeXCoor !== undefined && rigData.eyes?.rightEyeYCoor !== undefined) {
|
|
77
|
+
const rightEyeWidth = (rigData.eyes.rightEyeImageWidth || 100) * (rigData.eyes.rightEyeWidthRatio || 1);
|
|
78
|
+
const rightEyeHeight = (rigData.eyes.rightEyeImageHeight || 100) * (rigData.eyes.rightEyeHeightRatio || 1);
|
|
79
|
+
regions.push({
|
|
80
|
+
name: 'Right Eye',
|
|
81
|
+
x: centerX + rigData.eyes.rightEyeXCoor - rightEyeWidth / 2,
|
|
82
|
+
y: centerY + rigData.eyes.rightEyeYCoor - rightEyeHeight / 2,
|
|
83
|
+
width: rightEyeWidth,
|
|
84
|
+
height: rightEyeHeight
|
|
85
|
+
});
|
|
86
|
+
}
|
|
87
|
+
// Mouth Region
|
|
88
|
+
if (rigData.mouth?.xCoor !== undefined && rigData.mouth?.yCoor !== undefined) {
|
|
89
|
+
const mouthWidth = (rigData.mouth.width || 60) * (rigData.mouth.size || 1);
|
|
90
|
+
const mouthHeight = (rigData.mouth.height || 40) * (rigData.mouth.size || 1);
|
|
91
|
+
regions.push({
|
|
92
|
+
name: 'Mouth',
|
|
93
|
+
x: centerX + rigData.mouth.xCoor - mouthWidth / 2,
|
|
94
|
+
y: centerY + rigData.mouth.yCoor - mouthHeight / 2,
|
|
95
|
+
width: mouthWidth,
|
|
96
|
+
height: mouthHeight
|
|
97
|
+
});
|
|
98
|
+
}
|
|
99
|
+
return regions;
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* Main test function
|
|
103
|
+
*/
|
|
104
|
+
async function runVisualTest(inputFile) {
|
|
105
|
+
console.log('\nš§Ŗ Visual Verification Test');
|
|
106
|
+
console.log('='.repeat(50));
|
|
107
|
+
console.log(`š¦ Loading ${inputFile}...`);
|
|
108
|
+
const rigData = JSON.parse(await readFile(inputFile, 'utf-8'));
|
|
109
|
+
const width = 1000;
|
|
110
|
+
const height = 1000;
|
|
111
|
+
console.log(`šØ Rendering ${width}x${height} canvas...`);
|
|
112
|
+
// Render character
|
|
113
|
+
const renderer = new SkiaRenderer();
|
|
114
|
+
await renderer.loadImages(rigData);
|
|
115
|
+
const canvas = await renderer.createCanvas(width, height);
|
|
116
|
+
// Fill background with light gray
|
|
117
|
+
const ctx = canvas.getContext('2d');
|
|
118
|
+
ctx.fillStyle = '#f0f0f0';
|
|
119
|
+
ctx.fillRect(0, 0, width, height);
|
|
120
|
+
renderer.renderToCanvas(canvas, rigData, {
|
|
121
|
+
canvasWidth: width,
|
|
122
|
+
canvasHeight: height
|
|
123
|
+
}, false);
|
|
124
|
+
// Get image data for analysis
|
|
125
|
+
const imageData = ctx.getImageData(0, 0, width, height);
|
|
126
|
+
// Get background color (sample from top-left corner)
|
|
127
|
+
const bgColor = getPixelColor(imageData, 10, 10);
|
|
128
|
+
console.log(`š Background color: rgba(${bgColor.r}, ${bgColor.g}, ${bgColor.b}, ${bgColor.a})`);
|
|
129
|
+
// Calculate test regions
|
|
130
|
+
const regions = calculateTestRegions(rigData, width, height);
|
|
131
|
+
console.log(`\nšÆ Testing ${regions.length} regions...`);
|
|
132
|
+
let allPassed = true;
|
|
133
|
+
const results = [];
|
|
134
|
+
// Test each region
|
|
135
|
+
for (const region of regions) {
|
|
136
|
+
console.log(`\n Testing ${region.name}:`);
|
|
137
|
+
console.log(` Region: (${Math.round(region.x)}, ${Math.round(region.y)}) ${Math.round(region.width)}x${Math.round(region.height)}`);
|
|
138
|
+
const hasContent = hasContentInRegion(imageData, region, bgColor);
|
|
139
|
+
if (hasContent) {
|
|
140
|
+
console.log(` ā
PASS - ${region.name} detected`);
|
|
141
|
+
}
|
|
142
|
+
else {
|
|
143
|
+
console.log(` ā FAIL - ${region.name} NOT detected`);
|
|
144
|
+
allPassed = false;
|
|
145
|
+
}
|
|
146
|
+
results.push({ region: region.name, passed: hasContent });
|
|
147
|
+
}
|
|
148
|
+
// Summary
|
|
149
|
+
console.log('\n' + '='.repeat(50));
|
|
150
|
+
console.log('š Test Summary:');
|
|
151
|
+
const passed = results.filter(r => r.passed).length;
|
|
152
|
+
const total = results.length;
|
|
153
|
+
console.log(` ${passed}/${total} regions passed`);
|
|
154
|
+
if (allPassed) {
|
|
155
|
+
console.log('\nā
All visual tests PASSED\n');
|
|
156
|
+
}
|
|
157
|
+
else {
|
|
158
|
+
console.log('\nā Some visual tests FAILED\n');
|
|
159
|
+
console.log('Failed regions:');
|
|
160
|
+
results.filter(r => !r.passed).forEach(r => {
|
|
161
|
+
console.log(` - ${r.region}`);
|
|
162
|
+
});
|
|
163
|
+
console.log();
|
|
164
|
+
}
|
|
165
|
+
return allPassed;
|
|
166
|
+
}
|
|
167
|
+
// Run test
|
|
168
|
+
async function main() {
|
|
169
|
+
const inputFile = process.argv[2] || 'tank.json';
|
|
170
|
+
try {
|
|
171
|
+
const success = await runVisualTest(inputFile);
|
|
172
|
+
process.exit(success ? 0 : 1);
|
|
173
|
+
}
|
|
174
|
+
catch (error) {
|
|
175
|
+
console.error('ā Test failed with error:', error);
|
|
176
|
+
process.exit(1);
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
main();
|
|
180
|
+
//# sourceMappingURL=test-visual-verification.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"test-visual-verification.js","sourceRoot":"","sources":["../../tests/test-visual-verification.ts"],"names":[],"mappings":"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"}
|
package/dist/types.d.ts
CHANGED
|
@@ -82,6 +82,23 @@ export interface EyeData {
|
|
|
82
82
|
rightEyeLidHalfClosedHeight?: number;
|
|
83
83
|
[key: string]: string | number | undefined;
|
|
84
84
|
}
|
|
85
|
+
/**
|
|
86
|
+
* Mouth data configuration
|
|
87
|
+
* Contains MD5 hashes for mouth shape images and positioning/sizing information
|
|
88
|
+
*/
|
|
89
|
+
export interface MouthData {
|
|
90
|
+
width?: number;
|
|
91
|
+
height?: number;
|
|
92
|
+
size?: number;
|
|
93
|
+
xCoor?: number;
|
|
94
|
+
yCoor?: number;
|
|
95
|
+
mouthWidth?: number;
|
|
96
|
+
mouthHeight?: number;
|
|
97
|
+
mouthSize?: number;
|
|
98
|
+
mouthXCoor?: number;
|
|
99
|
+
mouthYCoor?: number;
|
|
100
|
+
[key: string]: string | number | undefined;
|
|
101
|
+
}
|
|
85
102
|
/**
|
|
86
103
|
* Character rig data structure
|
|
87
104
|
*/
|
|
@@ -97,6 +114,7 @@ export interface RigData {
|
|
|
97
114
|
jointOffset?: Record<string, Position>;
|
|
98
115
|
zIndexValues?: Record<string, number>;
|
|
99
116
|
eyes?: EyeData;
|
|
117
|
+
mouth?: MouthData;
|
|
100
118
|
imagePaths?: Record<string, string>;
|
|
101
119
|
imageScale?: number;
|
|
102
120
|
visibility?: Record<string, boolean>;
|
package/dist/types.d.ts.map
CHANGED
|
@@ -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,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "distark-render",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.2",
|
|
4
4
|
"description": "Rendering-agnostic character rig system with TypeScript",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/modules/renderRig.js",
|
|
@@ -14,9 +14,25 @@
|
|
|
14
14
|
"types": "./dist/modules/imageLoad.d.ts",
|
|
15
15
|
"import": "./dist/modules/imageLoad.js"
|
|
16
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
|
+
},
|
|
17
25
|
"./types": {
|
|
18
26
|
"types": "./dist/types.d.ts",
|
|
19
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"
|
|
20
36
|
}
|
|
21
37
|
},
|
|
22
38
|
"files": [
|
|
@@ -30,7 +46,10 @@
|
|
|
30
46
|
"dev": "tsc --watch & http-server -p 8080",
|
|
31
47
|
"clean": "rm -rf dist",
|
|
32
48
|
"serve": "http-server -p 8080",
|
|
33
|
-
"test
|
|
49
|
+
"test": "npm run build && node dist/tests/test-visual-verification.js && node dist/tests/test-joint-movement.js",
|
|
50
|
+
"test-skia": "npm run build && node dist/tests/test-skia.js",
|
|
51
|
+
"test-visual": "npm run build && node dist/tests/test-visual-verification.js",
|
|
52
|
+
"test-joints": "npm run build && node dist/tests/test-joint-movement.js",
|
|
34
53
|
"prepublishOnly": "npm run clean && npm run build"
|
|
35
54
|
},
|
|
36
55
|
"keywords": [
|
package/dist/test-skia.d.ts
DELETED
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Skia Canvas Command-Line Test
|
|
3
|
-
* Renders a character rig using Skia Canvas and saves to a file
|
|
4
|
-
*
|
|
5
|
-
* Architecture:
|
|
6
|
-
* - Uses ImageLoader from modules/imageLoad.ts (extended for Node.js compatibility)
|
|
7
|
-
* - Uses CharacterRigRenderer from modules/renderRig.ts (computes all transforms)
|
|
8
|
-
* - SkiaImageLoader adapts browser ImageLoader to work with Skia Canvas's Image type
|
|
9
|
-
* - CharacterRigRenderer.computeCharacterRigData() handles all rig calculations
|
|
10
|
-
* - Rendering logic draws the computed render objects to Skia Canvas
|
|
11
|
-
*
|
|
12
|
-
* Usage: npm run test-skia
|
|
13
|
-
*/
|
|
14
|
-
export {};
|
|
15
|
-
//# sourceMappingURL=test-skia.d.ts.map
|
package/dist/test-skia.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"test-skia.d.ts","sourceRoot":"","sources":["../test-skia.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG"}
|
package/dist/test-skia.js
DELETED
|
@@ -1,179 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Skia Canvas Command-Line Test
|
|
3
|
-
* Renders a character rig using Skia Canvas and saves to a file
|
|
4
|
-
*
|
|
5
|
-
* Architecture:
|
|
6
|
-
* - Uses ImageLoader from modules/imageLoad.ts (extended for Node.js compatibility)
|
|
7
|
-
* - Uses CharacterRigRenderer from modules/renderRig.ts (computes all transforms)
|
|
8
|
-
* - SkiaImageLoader adapts browser ImageLoader to work with Skia Canvas's Image type
|
|
9
|
-
* - CharacterRigRenderer.computeCharacterRigData() handles all rig calculations
|
|
10
|
-
* - Rendering logic draws the computed render objects to Skia Canvas
|
|
11
|
-
*
|
|
12
|
-
* Usage: npm run test-skia
|
|
13
|
-
*/
|
|
14
|
-
import { Canvas, loadImage as skiaLoadImage } from 'skia-canvas';
|
|
15
|
-
import { readFile } from 'fs/promises';
|
|
16
|
-
import { CharacterRigRenderer } from './modules/renderRig.js';
|
|
17
|
-
import { ImageLoader } from './modules/imageLoad.js';
|
|
18
|
-
/**
|
|
19
|
-
* Skia Canvas adapter for ImageLoader
|
|
20
|
-
* Extends the browser-based ImageLoader to work with Skia Canvas in Node.js
|
|
21
|
-
*
|
|
22
|
-
* Key differences from browser version:
|
|
23
|
-
* - Uses skia-canvas's loadImage() instead of browser's Image()
|
|
24
|
-
* - Returns Skia Canvas Image type instead of HTMLImageElement
|
|
25
|
-
* - Otherwise maintains the same API and caching behavior
|
|
26
|
-
*/
|
|
27
|
-
class SkiaImageLoader extends ImageLoader {
|
|
28
|
-
/**
|
|
29
|
-
* Override loadImage to use Skia Canvas's loadImage instead of browser Image
|
|
30
|
-
*/
|
|
31
|
-
async loadImageAsync(key, imageData) {
|
|
32
|
-
const imageUrl = this.resolveImageSource(imageData);
|
|
33
|
-
if (!imageUrl) {
|
|
34
|
-
console.warn(`Could not resolve image source for ${key}: ${imageData}`);
|
|
35
|
-
return null;
|
|
36
|
-
}
|
|
37
|
-
// Check cache first
|
|
38
|
-
const cached = this.getCachedImage(key);
|
|
39
|
-
if (cached) {
|
|
40
|
-
console.log(`ā Using cached image for ${key}`);
|
|
41
|
-
return cached;
|
|
42
|
-
}
|
|
43
|
-
try {
|
|
44
|
-
console.log(`š„ Loading image for ${key} from: ${imageUrl.substring(0, 80)}...`);
|
|
45
|
-
const img = await skiaLoadImage(imageUrl);
|
|
46
|
-
console.log(`ā Successfully loaded image for ${key} (${img.width}x${img.height})`);
|
|
47
|
-
// Cache it
|
|
48
|
-
this.cacheImage(key, img);
|
|
49
|
-
return img;
|
|
50
|
-
}
|
|
51
|
-
catch (error) {
|
|
52
|
-
console.error(`ā Failed to load image for ${key}`);
|
|
53
|
-
console.error(` URL: ${imageUrl}`);
|
|
54
|
-
console.error(` Error:`, error);
|
|
55
|
-
return null;
|
|
56
|
-
}
|
|
57
|
-
}
|
|
58
|
-
/**
|
|
59
|
-
* Load all images for a character rig using Skia Canvas
|
|
60
|
-
*/
|
|
61
|
-
async loadAllRigImagesSkia(rigData) {
|
|
62
|
-
const imagesToLoad = [];
|
|
63
|
-
// Collect all image paths from imagePaths
|
|
64
|
-
if (rigData.imagePaths) {
|
|
65
|
-
for (const [key, hash] of Object.entries(rigData.imagePaths)) {
|
|
66
|
-
if (hash && typeof hash === 'string' && !hash.includes('[MEDIA_REMOVED]')) {
|
|
67
|
-
imagesToLoad.push({ key: `imagePaths.${key}`, hash });
|
|
68
|
-
}
|
|
69
|
-
}
|
|
70
|
-
}
|
|
71
|
-
// Collect all eye images
|
|
72
|
-
if (rigData.eyes) {
|
|
73
|
-
for (const [key, value] of Object.entries(rigData.eyes)) {
|
|
74
|
-
if (typeof value === 'string' && !value.includes('[MEDIA_REMOVED]') &&
|
|
75
|
-
(key.includes('Image') || key.includes('Iris') || key.includes('Lid'))) {
|
|
76
|
-
imagesToLoad.push({ key: `eyes.${key}`, hash: value });
|
|
77
|
-
}
|
|
78
|
-
}
|
|
79
|
-
}
|
|
80
|
-
console.log(`š¦ Loading ${imagesToLoad.length} images for character rig...`);
|
|
81
|
-
const loadedImages = {};
|
|
82
|
-
let loaded = 0;
|
|
83
|
-
let failed = 0;
|
|
84
|
-
// Load all images in parallel
|
|
85
|
-
await Promise.all(imagesToLoad.map(async ({ key, hash }) => {
|
|
86
|
-
const img = await this.loadImageAsync(key, hash);
|
|
87
|
-
if (img) {
|
|
88
|
-
loadedImages[key] = img;
|
|
89
|
-
loaded++;
|
|
90
|
-
}
|
|
91
|
-
else {
|
|
92
|
-
failed++;
|
|
93
|
-
}
|
|
94
|
-
}));
|
|
95
|
-
console.log(`ā Loaded ${loaded}/${imagesToLoad.length} images (${failed} failed)`);
|
|
96
|
-
return loadedImages;
|
|
97
|
-
}
|
|
98
|
-
}
|
|
99
|
-
/**
|
|
100
|
-
* Main test function
|
|
101
|
-
*/
|
|
102
|
-
async function main() {
|
|
103
|
-
try {
|
|
104
|
-
console.log('š Skia Canvas Test - Character Rig Renderer\n');
|
|
105
|
-
// Parse command line arguments
|
|
106
|
-
const args = process.argv.slice(2);
|
|
107
|
-
const inputFile = args[0] || 'tank.json';
|
|
108
|
-
const outputFile = args[1] || 'output.png';
|
|
109
|
-
const width = parseInt(args[2]) || 1000;
|
|
110
|
-
const height = parseInt(args[3]) || 1000;
|
|
111
|
-
// Load rig data
|
|
112
|
-
console.log('š„ Loading rig data...');
|
|
113
|
-
const rigDataRaw = await readFile(inputFile, 'utf-8');
|
|
114
|
-
const rigData = JSON.parse(rigDataRaw);
|
|
115
|
-
console.log(`ā Loaded rig data for: ${rigData.name || rigData.id}\n`);
|
|
116
|
-
// Create image loader and load all images
|
|
117
|
-
const imageLoader = new SkiaImageLoader();
|
|
118
|
-
const loadedImages = await imageLoader.loadAllRigImagesSkia(rigData);
|
|
119
|
-
console.log('');
|
|
120
|
-
// Create Skia Canvas
|
|
121
|
-
console.log('šØ Creating canvas...');
|
|
122
|
-
const canvas = new Canvas(width, height);
|
|
123
|
-
console.log(`ā Canvas created (${width}x${height})\n`);
|
|
124
|
-
// Create renderer with the image loader
|
|
125
|
-
const renderer = new CharacterRigRenderer(imageLoader);
|
|
126
|
-
// Render the character using the renderer's render method
|
|
127
|
-
console.log('šļø Rendering character...');
|
|
128
|
-
const ctx = canvas.getContext('2d');
|
|
129
|
-
// Clear canvas
|
|
130
|
-
ctx.clearRect(0, 0, canvas.width, canvas.height);
|
|
131
|
-
ctx.fillStyle = '#f0f0f0';
|
|
132
|
-
ctx.fillRect(0, 0, canvas.width, canvas.height);
|
|
133
|
-
// Compute rig data
|
|
134
|
-
const rigRenderData = renderer.computeCharacterRigData(rigData, {
|
|
135
|
-
canvasWidth: canvas.width,
|
|
136
|
-
canvasHeight: canvas.height,
|
|
137
|
-
cameraOffset: { x: 0, y: 0 },
|
|
138
|
-
loadedImages: loadedImages
|
|
139
|
-
});
|
|
140
|
-
// Render all objects
|
|
141
|
-
rigRenderData.objects.forEach(obj => {
|
|
142
|
-
if (!obj.imageData)
|
|
143
|
-
return;
|
|
144
|
-
ctx.save();
|
|
145
|
-
ctx.translate(obj.x, obj.y);
|
|
146
|
-
ctx.rotate(obj.rotation);
|
|
147
|
-
ctx.scale(obj.scaleX, obj.scaleY);
|
|
148
|
-
const drawX = -obj.width * obj.anchorX;
|
|
149
|
-
const drawY = -obj.height * obj.anchorY;
|
|
150
|
-
ctx.drawImage(obj.imageData, drawX, drawY, obj.width, obj.height);
|
|
151
|
-
ctx.restore();
|
|
152
|
-
});
|
|
153
|
-
// Draw pivot points
|
|
154
|
-
rigRenderData.pivotPoints.forEach(pivot => {
|
|
155
|
-
ctx.save();
|
|
156
|
-
ctx.fillStyle = 'rgba(0, 150, 255, 0.9)';
|
|
157
|
-
ctx.strokeStyle = '#000';
|
|
158
|
-
ctx.lineWidth = 1;
|
|
159
|
-
ctx.beginPath();
|
|
160
|
-
ctx.arc(pivot.x, pivot.y, 4, 0, Math.PI * 2);
|
|
161
|
-
ctx.fill();
|
|
162
|
-
ctx.stroke();
|
|
163
|
-
ctx.restore();
|
|
164
|
-
});
|
|
165
|
-
console.log('ā Character rendered\n');
|
|
166
|
-
// Save to file
|
|
167
|
-
console.log(`š¾ Saving to ${outputFile}...`);
|
|
168
|
-
await canvas.saveAs(outputFile);
|
|
169
|
-
console.log(`ā Saved successfully!\n`);
|
|
170
|
-
console.log('š Done! Your character has been rendered to:', outputFile);
|
|
171
|
-
}
|
|
172
|
-
catch (error) {
|
|
173
|
-
console.error('\nā Error:', error);
|
|
174
|
-
process.exit(1);
|
|
175
|
-
}
|
|
176
|
-
}
|
|
177
|
-
// Run the test
|
|
178
|
-
main();
|
|
179
|
-
//# sourceMappingURL=test-skia.js.map
|
package/dist/test-skia.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"test-skia.js","sourceRoot":"","sources":["../test-skia.ts"],"names":[],"mappings":"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"}
|