@realsee/equirect-toolbox 1.0.3 → 1.0.5
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 +2 -21
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +3 -16
- package/dist/cli.js.map +1 -1
- package/dist/cube2equirect.d.ts +16 -1
- package/dist/cube2equirect.d.ts.map +1 -1
- package/dist/cube2equirect.js +11 -3
- package/dist/cube2equirect.js.map +1 -1
- package/dist/equirect2cube.d.ts +18 -1
- package/dist/equirect2cube.d.ts.map +1 -1
- package/dist/equirect2cube.js +17 -9
- package/dist/equirect2cube.js.map +1 -1
- package/dist/lib/create-webgl-canvas.d.ts +5 -3
- package/dist/lib/create-webgl-canvas.d.ts.map +1 -1
- package/dist/lib/create-webgl-canvas.js +11 -2
- package/dist/lib/create-webgl-canvas.js.map +1 -1
- package/dist/lib/cube-manifest.d.ts +15 -5
- package/dist/lib/cube-manifest.d.ts.map +1 -1
- package/dist/lib/cube-manifest.js.map +1 -1
- package/dist/lib/cube-output.d.ts +4 -4
- package/dist/lib/cube-output.d.ts.map +1 -1
- package/dist/lib/cube-output.js +5 -3
- package/dist/lib/cube-output.js.map +1 -1
- package/dist/rectlinear.d.ts +56 -5
- package/dist/rectlinear.d.ts.map +1 -1
- package/dist/rectlinear.js +36 -10
- package/dist/rectlinear.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -73,17 +73,7 @@ equirect-toolbox rectlinear \
|
|
|
73
73
|
--config rectlinear-matrix.json
|
|
74
74
|
```
|
|
75
75
|
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
```bash
|
|
79
|
-
equirect-toolbox rectlinear \
|
|
80
|
-
-i equirect.jpg \
|
|
81
|
-
-o perspective.jpg \
|
|
82
|
-
-c rectlinear-matrix.json \
|
|
83
|
-
--quality 90
|
|
84
|
-
```
|
|
85
|
-
|
|
86
|
-
The output format is selected from the output file extension (`.jpg`, `.jpeg`, or `.png`).
|
|
76
|
+
The output format is selected from the output file extension (`.jpg`, `.jpeg`, `.png`, or `.avif`). AVIF input images are also supported by the underlying image decoder.
|
|
87
77
|
|
|
88
78
|
#### Generate a rectlinear config
|
|
89
79
|
|
|
@@ -147,15 +137,6 @@ equirect-toolbox equirect2cube \
|
|
|
147
137
|
--output cube.json
|
|
148
138
|
```
|
|
149
139
|
|
|
150
|
-
JPEG quality defaults to `95`:
|
|
151
|
-
|
|
152
|
-
```bash
|
|
153
|
-
equirect-toolbox equirect2cube \
|
|
154
|
-
-i equirect.jpg \
|
|
155
|
-
-o cube.json \
|
|
156
|
-
--quality 90
|
|
157
|
-
```
|
|
158
|
-
|
|
159
140
|
### `cube2equirect`
|
|
160
141
|
|
|
161
142
|
Convert the six cube faces referenced by a manifest into an equirectangular panorama:
|
|
@@ -247,7 +228,7 @@ The paths are resolved relative to the directory containing `cube.json`, not rel
|
|
|
247
228
|
| `pz` | positive Z |
|
|
248
229
|
| `nz` | negative Z |
|
|
249
230
|
|
|
250
|
-
The file extension in each path selects the output image format. Use `.jpg`/`.jpeg` for JPEG or `.
|
|
231
|
+
The file extension in each path selects the output image format. Use `.jpg`/`.jpeg` for JPEG, `.png` for PNG, or `.avif` for AVIF. The manifest schema is included at `configs/schema/cube.schema.json`.
|
|
251
232
|
|
|
252
233
|
## Package contents
|
|
253
234
|
|
package/dist/cli.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAuBpC,wBAAgB,aAAa,IAAI,OAAO,CAiGvC;AAED,wBAAsB,IAAI,CAAC,IAAI,GAAE,MAAM,EAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CAEvE"}
|
package/dist/cli.js
CHANGED
|
@@ -11,8 +11,7 @@ export function createProgram() {
|
|
|
11
11
|
.option("-i, --input <path>", "input equirectangular image")
|
|
12
12
|
.option("-o, --output <path>", "output image or generated config path")
|
|
13
13
|
.option("-c, --config <path>", "rectlinear JSON config path")
|
|
14
|
-
.option("--init-config <type>", "generate a config template: euler, matrix, or quaternion")
|
|
15
|
-
.option("--quality <quality>", "JPEG quality from 0 to 100", parseQuality, 95);
|
|
14
|
+
.option("--init-config <type>", "generate a config template: euler, matrix, or quaternion");
|
|
16
15
|
rectlinear.action(async (options) => {
|
|
17
16
|
if (options.initConfig !== undefined) {
|
|
18
17
|
if (!options.output) {
|
|
@@ -30,7 +29,6 @@ export function createProgram() {
|
|
|
30
29
|
input: options.input,
|
|
31
30
|
output: options.output,
|
|
32
31
|
config: options.config,
|
|
33
|
-
quality: options.quality,
|
|
34
32
|
});
|
|
35
33
|
});
|
|
36
34
|
const equirect2cube = program
|
|
@@ -38,8 +36,7 @@ export function createProgram() {
|
|
|
38
36
|
.description("Convert an equirectangular panorama to six cube face images")
|
|
39
37
|
.option("-i, --input <path>", "input equirectangular image")
|
|
40
38
|
.option("-o, --output <path>", "output cube.json manifest path")
|
|
41
|
-
.option("--init-cube-json", "generate a cube.json template")
|
|
42
|
-
.option("--quality <quality>", "JPEG quality from 0 to 100", parseQuality, 95);
|
|
39
|
+
.option("--init-cube-json", "generate a cube.json template");
|
|
43
40
|
equirect2cube.action(async (options) => {
|
|
44
41
|
if (options.initCubeJson) {
|
|
45
42
|
if (!options.output) {
|
|
@@ -56,7 +53,6 @@ export function createProgram() {
|
|
|
56
53
|
await convertEquirectToCube({
|
|
57
54
|
input: options.input,
|
|
58
55
|
output: options.output,
|
|
59
|
-
quality: options.quality,
|
|
60
56
|
});
|
|
61
57
|
});
|
|
62
58
|
const cube2equirect = program
|
|
@@ -64,8 +60,7 @@ export function createProgram() {
|
|
|
64
60
|
.description("Convert six cube face images described by cube.json to an equirectangular panorama")
|
|
65
61
|
.option("-i, --input <path>", "cube.json manifest path")
|
|
66
62
|
.option("-o, --output <path>", "output equirectangular image or generated cube.json path")
|
|
67
|
-
.option("--init-cube-json", "generate a cube.json template")
|
|
68
|
-
.option("--quality <quality>", "JPEG quality from 0 to 100", parseQuality, 95);
|
|
63
|
+
.option("--init-cube-json", "generate a cube.json template");
|
|
69
64
|
cube2equirect.action(async (options) => {
|
|
70
65
|
if (options.initCubeJson) {
|
|
71
66
|
if (!options.output) {
|
|
@@ -82,7 +77,6 @@ export function createProgram() {
|
|
|
82
77
|
await convertCubeToEquirect({
|
|
83
78
|
input: options.input,
|
|
84
79
|
output: options.output,
|
|
85
|
-
quality: options.quality,
|
|
86
80
|
});
|
|
87
81
|
});
|
|
88
82
|
return program;
|
|
@@ -99,13 +93,6 @@ function normalizeArguments(argv) {
|
|
|
99
93
|
return argument;
|
|
100
94
|
});
|
|
101
95
|
}
|
|
102
|
-
function parseQuality(value) {
|
|
103
|
-
const quality = Number(value);
|
|
104
|
-
if (!Number.isInteger(quality) || quality < 0 || quality > 100) {
|
|
105
|
-
throw new Error("JPEG quality must be an integer from 0 to 100.");
|
|
106
|
-
}
|
|
107
|
-
return quality;
|
|
108
|
-
}
|
|
109
96
|
const entryPath = process.argv[1];
|
|
110
97
|
if (entryPath && resolve(entryPath) === resolve(fileURLToPath(import.meta.url))) {
|
|
111
98
|
main().catch((error) => {
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAC/B,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
package/dist/cube2equirect.d.ts
CHANGED
|
@@ -1,8 +1,23 @@
|
|
|
1
1
|
import { type CubeManifest } from "./lib/cube-manifest.js";
|
|
2
|
+
export type { CubeManifest, CubeFaceKey } from "./lib/cube-manifest.js";
|
|
3
|
+
/**
|
|
4
|
+
* Options for converting six cube-face images into an equirectangular panorama.
|
|
5
|
+
*
|
|
6
|
+
* `input` can be a `cube.json` path or a manifest object. Relative paths in a
|
|
7
|
+
* manifest file are resolved from that file's directory; relative paths in an
|
|
8
|
+
* object are resolved from `process.cwd()`.
|
|
9
|
+
*/
|
|
2
10
|
export type CubeToEquirectOptions = {
|
|
11
|
+
/** A cube.json path or an inline cube-face manifest object. */
|
|
3
12
|
input: string | CubeManifest;
|
|
13
|
+
/** Output `.jpg`, `.jpeg`, `.png`, or `.avif` image path. */
|
|
4
14
|
output: string;
|
|
5
|
-
quality?: number;
|
|
6
15
|
};
|
|
16
|
+
/**
|
|
17
|
+
* Converts six cube-face images into an equirectangular panorama.
|
|
18
|
+
*
|
|
19
|
+
* @param options Cube manifest input or manifest object and output image path.
|
|
20
|
+
* @returns A promise that resolves after the panorama has been written.
|
|
21
|
+
*/
|
|
7
22
|
export declare function convertCubeToEquirect(options: CubeToEquirectOptions): Promise<void>;
|
|
8
23
|
//# sourceMappingURL=cube2equirect.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cube2equirect.d.ts","sourceRoot":"","sources":["../src/cube2equirect.ts"],"names":[],"mappings":"AAEA,OAAO,EAAoB,KAAK,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAS7E,MAAM,MAAM,qBAAqB,GAAG;IAClC,KAAK,EAAE,MAAM,GAAG,YAAY,CAAC;IAC7B,
|
|
1
|
+
{"version":3,"file":"cube2equirect.d.ts","sourceRoot":"","sources":["../src/cube2equirect.ts"],"names":[],"mappings":"AAEA,OAAO,EAAoB,KAAK,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAS7E,YAAY,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAExE;;;;;;GAMG;AACH,MAAM,MAAM,qBAAqB,GAAG;IAClC,+DAA+D;IAC/D,KAAK,EAAE,MAAM,GAAG,YAAY,CAAC;IAC7B,6DAA6D;IAC7D,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AA6BF;;;;;GAKG;AACH,wBAAsB,qBAAqB,CAAC,OAAO,EAAE,qBAAqB,GAAG,OAAO,CAAC,IAAI,CAAC,CAmDzF"}
|
package/dist/cube2equirect.js
CHANGED
|
@@ -28,6 +28,12 @@ void main() {
|
|
|
28
28
|
gl_FragColor = textureCube(tDiffuse, target);
|
|
29
29
|
}
|
|
30
30
|
`;
|
|
31
|
+
/**
|
|
32
|
+
* Converts six cube-face images into an equirectangular panorama.
|
|
33
|
+
*
|
|
34
|
+
* @param options Cube manifest input or manifest object and output image path.
|
|
35
|
+
* @returns A promise that resolves after the panorama has been written.
|
|
36
|
+
*/
|
|
31
37
|
export async function convertCubeToEquirect(options) {
|
|
32
38
|
const manifest = readCubeManifest(options.input);
|
|
33
39
|
const images = await Promise.all(cubeFaceKeys.map((faceKey) => loadImage(manifest[faceKey])));
|
|
@@ -43,9 +49,9 @@ export async function convertCubeToEquirect(options) {
|
|
|
43
49
|
const outputWidth = size * 4;
|
|
44
50
|
const outputHeight = size * 2;
|
|
45
51
|
const format = getOutputFormat(options.output);
|
|
46
|
-
const quality = options.quality ?? 95;
|
|
47
52
|
const { canvas, renderer } = await createHeadlessRenderer(outputWidth, outputHeight);
|
|
48
53
|
let cubeTexture;
|
|
54
|
+
let geometry;
|
|
49
55
|
let material;
|
|
50
56
|
try {
|
|
51
57
|
cubeTexture = new THREE.CubeTexture(images);
|
|
@@ -53,7 +59,7 @@ export async function convertCubeToEquirect(options) {
|
|
|
53
59
|
cubeTexture.needsUpdate = true;
|
|
54
60
|
const camera = new THREE.OrthographicCamera(-1, 1, 0.5, -0.5, 1, 10);
|
|
55
61
|
camera.position.setZ(2);
|
|
56
|
-
|
|
62
|
+
geometry = new THREE.PlaneGeometry(2, 1);
|
|
57
63
|
material = new THREE.ShaderMaterial({
|
|
58
64
|
uniforms: {
|
|
59
65
|
tDiffuse: { value: cubeTexture },
|
|
@@ -66,12 +72,14 @@ export async function convertCubeToEquirect(options) {
|
|
|
66
72
|
scene.add(mesh);
|
|
67
73
|
renderer.setSize(outputWidth, outputHeight, false);
|
|
68
74
|
renderer.render(scene, camera);
|
|
69
|
-
writeCanvasImage(canvas, options.output, format
|
|
75
|
+
writeCanvasImage(canvas, options.output, format);
|
|
70
76
|
}
|
|
71
77
|
finally {
|
|
78
|
+
geometry?.dispose();
|
|
72
79
|
cubeTexture?.dispose();
|
|
73
80
|
material?.dispose();
|
|
74
81
|
renderer.dispose();
|
|
82
|
+
canvas.destroy();
|
|
75
83
|
}
|
|
76
84
|
}
|
|
77
85
|
//# sourceMappingURL=cube2equirect.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cube2equirect.js","sourceRoot":"","sources":["../src/cube2equirect.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,gBAAgB,EAAqB,MAAM,wBAAwB,CAAC;AAC7E,OAAO,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AACjE,OAAO,EACL,eAAe,EACf,YAAY,EACZ,gBAAgB,EAChB,YAAY,GACb,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"cube2equirect.js","sourceRoot":"","sources":["../src/cube2equirect.ts"],"names":[],"mappings":"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"}
|
package/dist/equirect2cube.d.ts
CHANGED
|
@@ -1,8 +1,25 @@
|
|
|
1
1
|
import { type CubeManifest } from "./lib/cube-manifest.js";
|
|
2
|
+
export type { CubeManifest, CubeFaceKey } from "./lib/cube-manifest.js";
|
|
3
|
+
/**
|
|
4
|
+
* Options for converting an equirectangular panorama into six cube-face images.
|
|
5
|
+
*
|
|
6
|
+
* When `output` is a string, it is the path to a `cube.json` manifest. If the
|
|
7
|
+
* manifest already exists, its face paths and file extensions determine the
|
|
8
|
+
* output files. When `output` is a {@link CubeManifest} object, the six face
|
|
9
|
+
* paths are used directly, relative to `process.cwd()`, and no manifest file
|
|
10
|
+
* is written.
|
|
11
|
+
*/
|
|
2
12
|
export type EquirectToCubeOptions = {
|
|
13
|
+
/** Input equirectangular image path. */
|
|
3
14
|
input: string;
|
|
15
|
+
/** A cube.json path or an inline cube-face output path object. */
|
|
4
16
|
output: string | CubeManifest;
|
|
5
|
-
quality?: number;
|
|
6
17
|
};
|
|
18
|
+
/**
|
|
19
|
+
* Converts an equirectangular panorama into six cube-face images.
|
|
20
|
+
*
|
|
21
|
+
* @param options Input image, output manifest/path or face-path object.
|
|
22
|
+
* @returns A promise that resolves after all six face images have been written.
|
|
23
|
+
*/
|
|
7
24
|
export declare function convertEquirectToCube(options: EquirectToCubeOptions): Promise<void>;
|
|
8
25
|
//# sourceMappingURL=equirect2cube.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"equirect2cube.d.ts","sourceRoot":"","sources":["../src/equirect2cube.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"equirect2cube.d.ts","sourceRoot":"","sources":["../src/equirect2cube.ts"],"names":[],"mappings":"AASA,OAAO,EAKL,KAAK,YAAY,EAClB,MAAM,wBAAwB,CAAC;AAIhC,YAAY,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAExE;;;;;;;;GAQG;AACH,MAAM,MAAM,qBAAqB,GAAG;IAClC,wCAAwC;IACxC,KAAK,EAAE,MAAM,CAAC;IACd,kEAAkE;IAClE,MAAM,EAAE,MAAM,GAAG,YAAY,CAAC;CAC/B,CAAC;AAWF;;;;;GAKG;AACH,wBAAsB,qBAAqB,CAAC,OAAO,EAAE,qBAAqB,GAAG,OAAO,CAAC,IAAI,CAAC,CAyDzF"}
|
package/dist/equirect2cube.js
CHANGED
|
@@ -6,17 +6,22 @@ import { createCubeManifestOutput, readCubeManifest, writeCubeManifest, } from "
|
|
|
6
6
|
import * as THREE from "three";
|
|
7
7
|
import { createHeadlessRenderer } from "./lib/headless-three.js";
|
|
8
8
|
const faceRotations = {
|
|
9
|
-
px: [0,
|
|
10
|
-
nx: [0, Math.PI
|
|
11
|
-
py: [Math.PI / 2, 0,
|
|
12
|
-
ny: [-Math.PI / 2, 0,
|
|
13
|
-
pz: [0, Math.PI, 0],
|
|
14
|
-
nz: [0,
|
|
9
|
+
px: [0, 0, 0],
|
|
10
|
+
nx: [0, Math.PI, 0],
|
|
11
|
+
py: [Math.PI / 2, 0, -Math.PI / 2],
|
|
12
|
+
ny: [-Math.PI / 2, 0, Math.PI / 2],
|
|
13
|
+
pz: [0, Math.PI / 2, 0],
|
|
14
|
+
nz: [0, -Math.PI / 2, 0],
|
|
15
15
|
};
|
|
16
|
+
/**
|
|
17
|
+
* Converts an equirectangular panorama into six cube-face images.
|
|
18
|
+
*
|
|
19
|
+
* @param options Input image, output manifest/path or face-path object.
|
|
20
|
+
* @returns A promise that resolves after all six face images have been written.
|
|
21
|
+
*/
|
|
16
22
|
export async function convertEquirectToCube(options) {
|
|
17
23
|
const image = await loadImage(resolve(options.input));
|
|
18
24
|
const faceSize = ceilPowerOfTwo(Math.max(image.width / 4, image.height / 2));
|
|
19
|
-
const quality = options.quality ?? 95;
|
|
20
25
|
const imageFormat = "jpg";
|
|
21
26
|
let imagePaths;
|
|
22
27
|
let manifestToWrite;
|
|
@@ -37,13 +42,14 @@ export async function convertEquirectToCube(options) {
|
|
|
37
42
|
const format = getOutputFormat(imagePaths.px);
|
|
38
43
|
const { canvas, renderer } = await createHeadlessRenderer(faceSize, faceSize);
|
|
39
44
|
let texture;
|
|
45
|
+
let geometry;
|
|
40
46
|
let material;
|
|
41
47
|
try {
|
|
42
48
|
texture = new THREE.Texture(image);
|
|
43
49
|
texture.minFilter = THREE.LinearFilter;
|
|
44
50
|
texture.magFilter = THREE.LinearFilter;
|
|
45
51
|
texture.needsUpdate = true;
|
|
46
|
-
|
|
52
|
+
geometry = new THREE.SphereGeometry(10, 64, 40);
|
|
47
53
|
geometry.scale(-1, 1, 1);
|
|
48
54
|
material = new THREE.MeshBasicMaterial({ map: texture });
|
|
49
55
|
const mesh = new THREE.Mesh(geometry, material);
|
|
@@ -55,16 +61,18 @@ export async function convertEquirectToCube(options) {
|
|
|
55
61
|
const [x, y, z] = faceRotations[faceKey];
|
|
56
62
|
camera.rotation.set(x, y, z);
|
|
57
63
|
renderer.render(scene, camera);
|
|
58
|
-
writeCanvasImage(canvas, imagePaths[faceKey], format
|
|
64
|
+
writeCanvasImage(canvas, imagePaths[faceKey], format);
|
|
59
65
|
}
|
|
60
66
|
if (manifestToWrite && typeof options.output === "string") {
|
|
61
67
|
writeCubeManifest(options.output, manifestToWrite);
|
|
62
68
|
}
|
|
63
69
|
}
|
|
64
70
|
finally {
|
|
71
|
+
geometry?.dispose();
|
|
65
72
|
texture?.dispose();
|
|
66
73
|
material?.dispose();
|
|
67
74
|
renderer.dispose();
|
|
75
|
+
canvas.destroy();
|
|
68
76
|
}
|
|
69
77
|
}
|
|
70
78
|
//# sourceMappingURL=equirect2cube.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"equirect2cube.js","sourceRoot":"","sources":["../src/equirect2cube.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAC/B,OAAO,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AAChC,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EACL,cAAc,EACd,YAAY,EACZ,eAAe,EACf,gBAAgB,
|
|
1
|
+
{"version":3,"file":"equirect2cube.js","sourceRoot":"","sources":["../src/equirect2cube.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,8 +2,9 @@ import { EventEmitter } from "events";
|
|
|
2
2
|
import { type ContextAttributes, type SKRSContext2D, type SvgExportFlag } from "@napi-rs/canvas";
|
|
3
3
|
declare const _ctx: unique symbol;
|
|
4
4
|
type WebGLContextOptions = Record<string, unknown> | undefined;
|
|
5
|
-
type
|
|
6
|
-
resize(width: number, height: number)
|
|
5
|
+
type GLContextExtension = {
|
|
6
|
+
resize?: (width: number, height: number) => void;
|
|
7
|
+
destroy?: () => void;
|
|
7
8
|
};
|
|
8
9
|
type GLProgram = {
|
|
9
10
|
_uniforms?: Array<{
|
|
@@ -14,7 +15,7 @@ type GLContext = {
|
|
|
14
15
|
RGBA: number;
|
|
15
16
|
UNSIGNED_BYTE: number;
|
|
16
17
|
canvas?: WebGLCanvas;
|
|
17
|
-
getExtension(name: string):
|
|
18
|
+
getExtension(name: string): GLContextExtension | null;
|
|
18
19
|
getUniformLocation(program: GLProgram, name: string): unknown;
|
|
19
20
|
readPixels(x: number, y: number, width: number, height: number, format: number, type: number, pixels: Uint8Array): void;
|
|
20
21
|
texImage2D(...args: unknown[]): unknown;
|
|
@@ -40,6 +41,7 @@ export declare class WebGLCanvas {
|
|
|
40
41
|
get clientWidth(): number;
|
|
41
42
|
get clientHeight(): number;
|
|
42
43
|
get __ctx__(): SKRSContext2D | undefined;
|
|
44
|
+
destroy(): void;
|
|
43
45
|
getContext(type: string, options?: ContextAttributes | WebGLContextOptions): GLContext | SKRSContext2D | null;
|
|
44
46
|
toBuffer(...args: unknown[]): Buffer;
|
|
45
47
|
toDataURL(...args: unknown[]): string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create-webgl-canvas.d.ts","sourceRoot":"","sources":["../../src/lib/create-webgl-canvas.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AACtC,OAAO,EAGL,KAAK,iBAAiB,EACtB,KAAK,aAAa,EAClB,KAAK,aAAa,EACnB,MAAM,iBAAiB,CAAC;AAKzB,QAAA,MAAM,IAAI,eAAgB,CAAC;AAE3B,KAAK,mBAAmB,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,CAAC;AAE/D,KAAK,
|
|
1
|
+
{"version":3,"file":"create-webgl-canvas.d.ts","sourceRoot":"","sources":["../../src/lib/create-webgl-canvas.ts"],"names":[],"mappings":"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"}
|
|
@@ -50,7 +50,7 @@ export class WebGLCanvas {
|
|
|
50
50
|
set width(value) {
|
|
51
51
|
if (this.__gl__) {
|
|
52
52
|
const ext = this.__gl__.getExtension("STACKGL_resize_drawingbuffer");
|
|
53
|
-
ext?.resize(value, this.height);
|
|
53
|
+
ext?.resize?.(value, this.height);
|
|
54
54
|
}
|
|
55
55
|
this.__canvas__.width = value;
|
|
56
56
|
}
|
|
@@ -60,7 +60,7 @@ export class WebGLCanvas {
|
|
|
60
60
|
set height(value) {
|
|
61
61
|
if (this.__gl__) {
|
|
62
62
|
const ext = this.__gl__.getExtension("STACKGL_resize_drawingbuffer");
|
|
63
|
-
ext?.resize(this.width, value);
|
|
63
|
+
ext?.resize?.(this.width, value);
|
|
64
64
|
}
|
|
65
65
|
this.__canvas__.height = value;
|
|
66
66
|
}
|
|
@@ -77,6 +77,15 @@ export class WebGLCanvas {
|
|
|
77
77
|
}
|
|
78
78
|
return this[_ctx];
|
|
79
79
|
}
|
|
80
|
+
destroy() {
|
|
81
|
+
const gl = this.__gl__;
|
|
82
|
+
if (!gl)
|
|
83
|
+
return;
|
|
84
|
+
gl.getExtension("STACKGL_destroy_context")?.destroy?.();
|
|
85
|
+
this.__gl__ = undefined;
|
|
86
|
+
this[_ctx] = undefined;
|
|
87
|
+
this.__contextType__ = undefined;
|
|
88
|
+
}
|
|
80
89
|
getContext(type, options) {
|
|
81
90
|
if (this.__contextType__ && this.__contextType__ !== type)
|
|
82
91
|
return null;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create-webgl-canvas.js","sourceRoot":"","sources":["../../src/lib/create-webgl-canvas.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;AACvC,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AACtC,OAAO,EACL,MAAM,EACN,KAAK,GAIN,MAAM,iBAAiB,CAAC;AAEzB,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC/C,MAAM,eAAe,GAAG,OAAO,CAAC,IAAI,CAAqB,CAAC;AAE1D,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"create-webgl-canvas.js","sourceRoot":"","sources":["../../src/lib/create-webgl-canvas.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,10 +1,20 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
1
|
+
export type CubeManifest = {
|
|
2
|
+
/** Right (+X) face image path. */
|
|
3
|
+
px: string;
|
|
4
|
+
/** Left (-X) face image path. */
|
|
5
|
+
nx: string;
|
|
6
|
+
/** Top (+Y) face image path. */
|
|
7
|
+
py: string;
|
|
8
|
+
/** Bottom (-Y) face image path. */
|
|
9
|
+
ny: string;
|
|
10
|
+
/** Front (+Z) face image path. */
|
|
11
|
+
pz: string;
|
|
12
|
+
/** Back (-Z) face image path. */
|
|
13
|
+
nz: string;
|
|
5
14
|
};
|
|
15
|
+
export type CubeFaceKey = keyof CubeManifest;
|
|
6
16
|
export declare function initializeCubeJson(output: string): void;
|
|
7
|
-
export type CubeImageFormat = "jpg" | "png";
|
|
17
|
+
export type CubeImageFormat = "jpg" | "png" | "avif";
|
|
8
18
|
export declare function createCubeManifestOutput(output: string, imageFormat: CubeImageFormat): {
|
|
9
19
|
manifest: CubeManifest;
|
|
10
20
|
imagePaths: Record<CubeFaceKey, string>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cube-manifest.d.ts","sourceRoot":"","sources":["../../src/lib/cube-manifest.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"cube-manifest.d.ts","sourceRoot":"","sources":["../../src/lib/cube-manifest.ts"],"names":[],"mappings":"AAMA,MAAM,MAAM,YAAY,GAAG;IACzB,kCAAkC;IAClC,EAAE,EAAE,MAAM,CAAC;IACX,iCAAiC;IACjC,EAAE,EAAE,MAAM,CAAC;IACX,gCAAgC;IAChC,EAAE,EAAE,MAAM,CAAC;IACX,mCAAmC;IACnC,EAAE,EAAE,MAAM,CAAC;IACX,kCAAkC;IAClC,EAAE,EAAE,MAAM,CAAC;IACX,iCAAiC;IACjC,EAAE,EAAE,MAAM,CAAC;CACZ,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG,MAAM,YAAY,CAAC;AAE7C,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAIvD;AAED,MAAM,MAAM,eAAe,GAAG,KAAK,GAAG,KAAK,GAAG,MAAM,CAAC;AAErD,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,eAAe,GAC3B;IAAE,QAAQ,EAAE,YAAY,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC,WAAW,EAAE,MAAM,CAAC,CAAA;CAAE,CA6BrE;AAED,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,YAAY,GAAG,IAAI,CAG9E;AACD,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,YAAY,GAAG,YAAY,CAwC3E"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cube-manifest.js","sourceRoot":"","sources":["../../src/lib/cube-manifest.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAC3C,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAC3D,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,IAAI,CAAC;AACxE,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"cube-manifest.js","sourceRoot":"","sources":["../../src/lib/cube-manifest.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAC3C,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAC3D,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,IAAI,CAAC;AACxE,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AACpC,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAmB7D,MAAM,UAAU,kBAAkB,CAAC,MAAc;IAC/C,MAAM,QAAQ,GAAG,qBAAqB,CAAC,gBAAgB,EAAE,EAAE,kBAAkB,CAAC,CAAC;IAC/E,SAAS,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACzD,aAAa,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;AACnD,CAAC;AAID,MAAM,UAAU,wBAAwB,CACtC,MAAc,EACd,WAA4B;IAE5B,MAAM,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IACrC,MAAM,SAAS,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;IACxC,IAAI,SAAS,CAAC,WAAW,EAAE,KAAK,OAAO,EAAE,CAAC;QACxC,MAAM,IAAI,KAAK,CAAC,0DAA0D,CAAC,CAAC;IAC9E,CAAC;IAED,MAAM,QAAQ,GAAG,QAAQ,CAAC,YAAY,EAAE,SAAS,CAAC,CAAC;IACnD,MAAM,iBAAiB,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;IAChD,MAAM,QAAQ,GAAiB;QAC7B,EAAE,EAAE,GAAG,QAAQ,OAAO,WAAW,EAAE;QACnC,EAAE,EAAE,GAAG,QAAQ,OAAO,WAAW,EAAE;QACnC,EAAE,EAAE,GAAG,QAAQ,OAAO,WAAW,EAAE;QACnC,EAAE,EAAE,GAAG,QAAQ,OAAO,WAAW,EAAE;QACnC,EAAE,EAAE,GAAG,QAAQ,OAAO,WAAW,EAAE;QACnC,EAAE,EAAE,GAAG,QAAQ,OAAO,WAAW,EAAE;KACpC,CAAC;IAEF,OAAO;QACL,QAAQ;QACR,UAAU,EAAE;YACV,EAAE,EAAE,OAAO,CAAC,iBAAiB,EAAE,QAAQ,CAAC,EAAE,CAAC;YAC3C,EAAE,EAAE,OAAO,CAAC,iBAAiB,EAAE,QAAQ,CAAC,EAAE,CAAC;YAC3C,EAAE,EAAE,OAAO,CAAC,iBAAiB,EAAE,QAAQ,CAAC,EAAE,CAAC;YAC3C,EAAE,EAAE,OAAO,CAAC,iBAAiB,EAAE,QAAQ,CAAC,EAAE,CAAC;YAC3C,EAAE,EAAE,OAAO,CAAC,iBAAiB,EAAE,QAAQ,CAAC,EAAE,CAAC;YAC3C,EAAE,EAAE,OAAO,CAAC,iBAAiB,EAAE,QAAQ,CAAC,EAAE,CAAC;SAC5C;KACF,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,MAAc,EAAE,QAAsB;IACtE,SAAS,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACzD,aAAa,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;AACnF,CAAC;AACD,MAAM,UAAU,gBAAgB,CAAC,KAA4B;IAC3D,IAAI,KAAc,CAAC;IACnB,IAAI,iBAAyB,CAAC;IAC9B,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,MAAM,YAAY,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;QACpC,IAAI,CAAC;YACH,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC,CAAC;QACzD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CAAC,gCAAgC,KAAK,KAAK,eAAe,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QACtF,CAAC;QACD,iBAAiB,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;IAC5C,CAAC;SAAM,CAAC;QACN,KAAK,GAAG,KAAK,CAAC;QACd,iBAAiB,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;IAC7C,CAAC;IAED,IAAI,MAAe,CAAC;IACpB,IAAI,CAAC;QACH,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,cAAc,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC;IAC9D,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CAAC,+BAA+B,eAAe,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IAC3E,CAAC;IAED,MAAM,GAAG,GAAG,IAAI,OAAO,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;IAC3D,MAAM,QAAQ,GAAG,GAAG,CAAC,OAAO,CAAC,MAAiC,CAAC,CAAC;IAChE,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QACrB,MAAM,IAAI,KAAK,CACb,2BAA2B,GAAG,CAAC,UAAU,CAAC,QAAQ,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,EAAE,CAClF,CAAC;IACJ,CAAC;IAED,MAAM,QAAQ,GAAG,KAAqB,CAAC;IACvC,OAAO;QACL,EAAE,EAAE,OAAO,CAAC,iBAAiB,EAAE,QAAQ,CAAC,EAAE,CAAC;QAC3C,EAAE,EAAE,OAAO,CAAC,iBAAiB,EAAE,QAAQ,CAAC,EAAE,CAAC;QAC3C,EAAE,EAAE,OAAO,CAAC,iBAAiB,EAAE,QAAQ,CAAC,EAAE,CAAC;QAC3C,EAAE,EAAE,OAAO,CAAC,iBAAiB,EAAE,QAAQ,CAAC,EAAE,CAAC;QAC3C,EAAE,EAAE,OAAO,CAAC,iBAAiB,EAAE,QAAQ,CAAC,EAAE,CAAC;QAC3C,EAAE,EAAE,OAAO,CAAC,iBAAiB,EAAE,QAAQ,CAAC,EAAE,CAAC;KAC5C,CAAC;AACJ,CAAC;AAED,SAAS,gBAAgB;IACvB,MAAM,cAAc,GAAG,OAAO,CAC5B,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EACvC,mCAAmC,CACpC,CAAC;IACF,IAAI,UAAU,CAAC,cAAc,CAAC;QAAE,OAAO,cAAc,CAAC;IAEtD,MAAM,wBAAwB,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,6BAA6B,CAAC,CAAC;IACvF,IAAI,UAAU,CAAC,wBAAwB,CAAC;QAAE,OAAO,wBAAwB,CAAC;IAE1E,MAAM,IAAI,KAAK,CAAC,sDAAsD,CAAC,CAAC;AAC1E,CAAC;AAED,SAAS,cAAc;IACrB,MAAM,YAAY,GAAG,OAAO,CAC1B,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EACvC,uCAAuC,CACxC,CAAC;IACF,IAAI,UAAU,CAAC,YAAY,CAAC;QAAE,OAAO,YAAY,CAAC;IAElD,MAAM,sBAAsB,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,iCAAiC,CAAC,CAAC;IACzF,IAAI,UAAU,CAAC,sBAAsB,CAAC;QAAE,OAAO,sBAAsB,CAAC;IAEtE,MAAM,IAAI,KAAK,CAAC,wDAAwD,CAAC,CAAC;AAC5E,CAAC;AAED,SAAS,eAAe,CAAC,KAAc;IACrC,OAAO,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAChE,CAAC"}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
+
import type { CubeFaceKey } from "./cube-manifest.js";
|
|
1
2
|
import type { WebGLCanvas } from "./create-webgl-canvas.js";
|
|
2
|
-
export type OutputFormat = "image/jpeg" | "image/png";
|
|
3
|
-
export declare const cubeFaceKeys:
|
|
4
|
-
export type CubeFaceKey = (typeof cubeFaceKeys)[number];
|
|
3
|
+
export type OutputFormat = "image/jpeg" | "image/png" | "image/avif";
|
|
4
|
+
export declare const cubeFaceKeys: CubeFaceKey[];
|
|
5
5
|
export declare function getOutputFormat(output: string): OutputFormat;
|
|
6
|
-
export declare function writeCanvasImage(canvas: Pick<WebGLCanvas, "toBuffer">, output: string, format: OutputFormat
|
|
6
|
+
export declare function writeCanvasImage(canvas: Pick<WebGLCanvas, "toBuffer">, output: string, format: OutputFormat): void;
|
|
7
7
|
export declare function isPowerOfTwo(value: number): boolean;
|
|
8
8
|
export declare function ceilPowerOfTwo(value: number): number;
|
|
9
9
|
//# sourceMappingURL=cube-output.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cube-output.d.ts","sourceRoot":"","sources":["../../src/lib/cube-output.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAE5D,MAAM,MAAM,YAAY,GAAG,YAAY,GAAG,WAAW,
|
|
1
|
+
{"version":3,"file":"cube-output.d.ts","sourceRoot":"","sources":["../../src/lib/cube-output.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAE5D,MAAM,MAAM,YAAY,GAAG,YAAY,GAAG,WAAW,GAAG,YAAY,CAAC;AAErE,eAAO,MAAM,YAAY,EAAE,WAAW,EAAyC,CAAC;AAEhF,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,YAAY,CAQ5D;AAED,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,IAAI,CAAC,WAAW,EAAE,UAAU,CAAC,EACrC,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,YAAY,GACnB,IAAI,CAIN;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAEnD;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAEpD"}
|
package/dist/lib/cube-output.js
CHANGED
|
@@ -7,10 +7,12 @@ export function getOutputFormat(output) {
|
|
|
7
7
|
return "image/jpeg";
|
|
8
8
|
if (extension === ".png")
|
|
9
9
|
return "image/png";
|
|
10
|
-
|
|
10
|
+
if (extension === ".avif")
|
|
11
|
+
return "image/avif";
|
|
12
|
+
throw new Error(`Unsupported output format ${extension || "(missing extension)"}. Use .jpg, .jpeg, .png, or .avif.`);
|
|
11
13
|
}
|
|
12
|
-
export function writeCanvasImage(canvas, output, format
|
|
13
|
-
const buffer =
|
|
14
|
+
export function writeCanvasImage(canvas, output, format) {
|
|
15
|
+
const buffer = canvas.toBuffer(format);
|
|
14
16
|
mkdirSync(dirname(resolve(output)), { recursive: true });
|
|
15
17
|
writeFileSync(resolve(output), buffer);
|
|
16
18
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cube-output.js","sourceRoot":"","sources":["../../src/lib/cube-output.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AACjD,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"cube-output.js","sourceRoot":"","sources":["../../src/lib/cube-output.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AACjD,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,IAAI,CAAC;AAM9C,MAAM,CAAC,MAAM,YAAY,GAAkB,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;AAEhF,MAAM,UAAU,eAAe,CAAC,MAAc;IAC5C,MAAM,SAAS,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,WAAW,EAAE,CAAC;IAChD,IAAI,SAAS,KAAK,MAAM,IAAI,SAAS,KAAK,OAAO;QAAE,OAAO,YAAY,CAAC;IACvE,IAAI,SAAS,KAAK,MAAM;QAAE,OAAO,WAAW,CAAC;IAC7C,IAAI,SAAS,KAAK,OAAO;QAAE,OAAO,YAAY,CAAC;IAC/C,MAAM,IAAI,KAAK,CACb,6BAA6B,SAAS,IAAI,qBAAqB,oCAAoC,CACpG,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,gBAAgB,CAC9B,MAAqC,EACrC,MAAc,EACd,MAAoB;IAEpB,MAAM,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IACvC,SAAS,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACzD,aAAa,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,CAAC;AACzC,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,KAAa;IACxC,OAAO,KAAK,GAAG,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;AAClD,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,KAAa;IAC1C,OAAO,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;AAC1C,CAAC"}
|
package/dist/rectlinear.d.ts
CHANGED
|
@@ -1,38 +1,89 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Rectlinear screenshot configuration.
|
|
3
|
+
*
|
|
4
|
+
* The camera pose can be expressed as Euler angles, a row-major 3x3 rotation
|
|
5
|
+
* matrix, or a quaternion. Additional top-level fields are allowed for editor
|
|
6
|
+
* metadata such as `$schema`.
|
|
7
|
+
*/
|
|
1
8
|
export type RectlinearConfig = {
|
|
9
|
+
/** Optional JSON Schema URL used by editors. */
|
|
2
10
|
$schema?: string;
|
|
11
|
+
/** Output viewport dimensions in pixels. */
|
|
3
12
|
viewport: {
|
|
13
|
+
/** Output width in pixels. */
|
|
4
14
|
width: number;
|
|
15
|
+
/** Output height in pixels. */
|
|
5
16
|
height: number;
|
|
6
17
|
};
|
|
18
|
+
/** Camera field of view and orientation. */
|
|
7
19
|
camera: {
|
|
20
|
+
/** Vertical field of view in degrees. */
|
|
8
21
|
vfov: number;
|
|
9
22
|
} & (EulerPose | MatrixPose | QuaternionPose);
|
|
10
23
|
[key: string]: unknown;
|
|
11
24
|
};
|
|
12
|
-
|
|
25
|
+
/** Camera orientation expressed as Euler angles in degrees. */
|
|
26
|
+
export type EulerPose = {
|
|
27
|
+
/** Rotation around the vertical axis in degrees. */
|
|
13
28
|
yaw: number;
|
|
29
|
+
/** Rotation around the lateral axis in degrees. */
|
|
14
30
|
pitch: number;
|
|
31
|
+
/** Rotation around the viewing axis in degrees. */
|
|
15
32
|
roll: number;
|
|
16
33
|
};
|
|
17
|
-
|
|
34
|
+
/** Camera orientation expressed as a row-major 3x3 rotation matrix. */
|
|
35
|
+
export type MatrixPose = {
|
|
36
|
+
/** Nine matrix values in row-major order. */
|
|
18
37
|
matrix: [number, number, number, number, number, number, number, number, number];
|
|
19
38
|
};
|
|
20
|
-
|
|
39
|
+
/** Camera orientation expressed as a quaternion. */
|
|
40
|
+
export type QuaternionPose = {
|
|
41
|
+
/** Quaternion components used for camera rotation. */
|
|
21
42
|
quaternion: {
|
|
43
|
+
/** X component. */
|
|
22
44
|
x: number;
|
|
45
|
+
/** Y component. */
|
|
23
46
|
y: number;
|
|
47
|
+
/** Z component. */
|
|
24
48
|
z: number;
|
|
49
|
+
/** W component. */
|
|
25
50
|
w: number;
|
|
26
51
|
};
|
|
27
52
|
};
|
|
53
|
+
/**
|
|
54
|
+
* Options for rendering a perspective screenshot from an equirectangular image.
|
|
55
|
+
*/
|
|
28
56
|
export type RectlinearOptions = {
|
|
57
|
+
/** Input equirectangular image path. */
|
|
29
58
|
input: string;
|
|
59
|
+
/** Output `.jpg`, `.jpeg`, `.png`, or `.avif` image path. */
|
|
30
60
|
output: string;
|
|
61
|
+
/** A JSON config path or an inline rectlinear configuration object. */
|
|
31
62
|
config: string | RectlinearConfig;
|
|
32
|
-
quality?: number;
|
|
33
63
|
};
|
|
64
|
+
/**
|
|
65
|
+
* Renders a perspective screenshot from an equirectangular panorama.
|
|
66
|
+
*
|
|
67
|
+
* @param options Input/output image paths and a config file path or config object.
|
|
68
|
+
* @returns A promise that resolves after the screenshot has been written.
|
|
69
|
+
*/
|
|
34
70
|
export declare function renderRectlinear(options: RectlinearOptions): Promise<void>;
|
|
71
|
+
/**
|
|
72
|
+
* Creates a rectlinear configuration file from a built-in pose template.
|
|
73
|
+
*
|
|
74
|
+
* The generated configuration includes a versioned `$schema` URL. The output
|
|
75
|
+
* directory is created when necessary.
|
|
76
|
+
*
|
|
77
|
+
* @param type Template pose type: `euler`, `matrix`, or `quaternion`.
|
|
78
|
+
* @param output Destination JSON file path.
|
|
79
|
+
*/
|
|
35
80
|
export declare function initializeRectlinearConfig(type: string, output: string): void;
|
|
81
|
+
/**
|
|
82
|
+
* Validates a rectlinear configuration against the bundled Draft 2020-12
|
|
83
|
+
* schema.
|
|
84
|
+
*
|
|
85
|
+
* @param value Configuration value to validate. Throws when the value is
|
|
86
|
+
* invalid.
|
|
87
|
+
*/
|
|
36
88
|
export declare function validateRectlinearConfig(value: unknown): asserts value is RectlinearConfig;
|
|
37
|
-
export {};
|
|
38
89
|
//# sourceMappingURL=rectlinear.d.ts.map
|
package/dist/rectlinear.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rectlinear.d.ts","sourceRoot":"","sources":["../src/rectlinear.ts"],"names":[],"mappings":"AAiBA,MAAM,MAAM,gBAAgB,GAAG;IAC7B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE;QACR,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,MAAM,CAAC;KAChB,CAAC;IACF,MAAM,EAAE;QACN,IAAI,EAAE,MAAM,CAAC;KACd,GAAG,CAAC,SAAS,GAAG,UAAU,GAAG,cAAc,CAAC,CAAC;IAC9C,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB,CAAC;AAEF,
|
|
1
|
+
{"version":3,"file":"rectlinear.d.ts","sourceRoot":"","sources":["../src/rectlinear.ts"],"names":[],"mappings":"AAiBA;;;;;;GAMG;AACH,MAAM,MAAM,gBAAgB,GAAG;IAC7B,gDAAgD;IAChD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,4CAA4C;IAC5C,QAAQ,EAAE;QACR,8BAA8B;QAC9B,KAAK,EAAE,MAAM,CAAC;QACd,+BAA+B;QAC/B,MAAM,EAAE,MAAM,CAAC;KAChB,CAAC;IACF,4CAA4C;IAC5C,MAAM,EAAE;QACN,yCAAyC;QACzC,IAAI,EAAE,MAAM,CAAC;KACd,GAAG,CAAC,SAAS,GAAG,UAAU,GAAG,cAAc,CAAC,CAAC;IAC9C,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB,CAAC;AAEF,+DAA+D;AAC/D,MAAM,MAAM,SAAS,GAAG;IACtB,oDAAoD;IACpD,GAAG,EAAE,MAAM,CAAC;IACZ,mDAAmD;IACnD,KAAK,EAAE,MAAM,CAAC;IACd,mDAAmD;IACnD,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,uEAAuE;AACvE,MAAM,MAAM,UAAU,GAAG;IACvB,6CAA6C;IAC7C,MAAM,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;CAClF,CAAC;AAEF,oDAAoD;AACpD,MAAM,MAAM,cAAc,GAAG;IAC3B,sDAAsD;IACtD,UAAU,EAAE;QACV,mBAAmB;QACnB,CAAC,EAAE,MAAM,CAAC;QACV,mBAAmB;QACnB,CAAC,EAAE,MAAM,CAAC;QACV,mBAAmB;QACnB,CAAC,EAAE,MAAM,CAAC;QACV,mBAAmB;QACnB,CAAC,EAAE,MAAM,CAAC;KACX,CAAC;CACH,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,iBAAiB,GAAG;IAC9B,wCAAwC;IACxC,KAAK,EAAE,MAAM,CAAC;IACd,6DAA6D;IAC7D,MAAM,EAAE,MAAM,CAAC;IACf,uEAAuE;IACvE,MAAM,EAAE,MAAM,GAAG,gBAAgB,CAAC;CACnC,CAAC;AAEF;;;;;GAKG;AACH,wBAAsB,gBAAgB,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CA8ChF;AAED;;;;;;;;GAQG;AACH,wBAAgB,0BAA0B,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAW7E;AAoBD;;;;;;GAMG;AACH,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,KAAK,IAAI,gBAAgB,CAe1F"}
|
package/dist/rectlinear.js
CHANGED
|
@@ -11,20 +11,28 @@ const templateNames = {
|
|
|
11
11
|
matrix: "rectlinear-matrix.json",
|
|
12
12
|
quaternion: "rectlinear-quaternion.json",
|
|
13
13
|
};
|
|
14
|
+
/**
|
|
15
|
+
* Renders a perspective screenshot from an equirectangular panorama.
|
|
16
|
+
*
|
|
17
|
+
* @param options Input/output image paths and a config file path or config object.
|
|
18
|
+
* @returns A promise that resolves after the screenshot has been written.
|
|
19
|
+
*/
|
|
14
20
|
export async function renderRectlinear(options) {
|
|
15
21
|
const config = readRectlinearConfig(options.config);
|
|
16
22
|
const outputFormat = getOutputFormat(options.output);
|
|
17
|
-
const quality = options.quality ?? 95;
|
|
18
23
|
const image = await loadImage(resolve(options.input));
|
|
19
24
|
const { canvas, renderer } = await createHeadlessRenderer(config.viewport.width, config.viewport.height);
|
|
25
|
+
let texture;
|
|
26
|
+
let geometry;
|
|
27
|
+
let material;
|
|
20
28
|
try {
|
|
21
|
-
|
|
29
|
+
texture = new THREE.Texture(image);
|
|
22
30
|
texture.minFilter = THREE.LinearFilter;
|
|
23
31
|
texture.magFilter = THREE.LinearFilter;
|
|
24
32
|
texture.needsUpdate = true;
|
|
25
|
-
|
|
33
|
+
geometry = new THREE.SphereGeometry(10, 64, 40);
|
|
26
34
|
geometry.scale(-1, 1, 1);
|
|
27
|
-
|
|
35
|
+
material = new THREE.MeshBasicMaterial({ map: texture });
|
|
28
36
|
const mesh = new THREE.Mesh(geometry, material);
|
|
29
37
|
const scene = new THREE.Scene();
|
|
30
38
|
scene.add(mesh);
|
|
@@ -32,18 +40,27 @@ export async function renderRectlinear(options) {
|
|
|
32
40
|
applyCameraPose(camera, config);
|
|
33
41
|
renderer.setSize(config.viewport.width, config.viewport.height, false);
|
|
34
42
|
renderer.render(scene, camera);
|
|
35
|
-
const buffer = outputFormat
|
|
36
|
-
? canvas.toBuffer(outputFormat, quality)
|
|
37
|
-
: canvas.toBuffer(outputFormat);
|
|
43
|
+
const buffer = canvas.toBuffer(outputFormat);
|
|
38
44
|
mkdirSync(dirname(resolve(options.output)), { recursive: true });
|
|
39
45
|
writeFileSync(resolve(options.output), buffer);
|
|
40
|
-
texture.dispose();
|
|
41
|
-
material.dispose();
|
|
42
46
|
}
|
|
43
47
|
finally {
|
|
48
|
+
geometry?.dispose();
|
|
49
|
+
texture?.dispose();
|
|
50
|
+
material?.dispose();
|
|
44
51
|
renderer.dispose();
|
|
52
|
+
canvas.destroy();
|
|
45
53
|
}
|
|
46
54
|
}
|
|
55
|
+
/**
|
|
56
|
+
* Creates a rectlinear configuration file from a built-in pose template.
|
|
57
|
+
*
|
|
58
|
+
* The generated configuration includes a versioned `$schema` URL. The output
|
|
59
|
+
* directory is created when necessary.
|
|
60
|
+
*
|
|
61
|
+
* @param type Template pose type: `euler`, `matrix`, or `quaternion`.
|
|
62
|
+
* @param output Destination JSON file path.
|
|
63
|
+
*/
|
|
47
64
|
export function initializeRectlinearConfig(type, output) {
|
|
48
65
|
if (!isRectlinearPoseType(type)) {
|
|
49
66
|
throw new Error(`Unknown rectlinear config type: ${type}. Expected euler, matrix, or quaternion.`);
|
|
@@ -69,6 +86,13 @@ function readRectlinearConfig(configOrPath) {
|
|
|
69
86
|
validateRectlinearConfig(config);
|
|
70
87
|
return config;
|
|
71
88
|
}
|
|
89
|
+
/**
|
|
90
|
+
* Validates a rectlinear configuration against the bundled Draft 2020-12
|
|
91
|
+
* schema.
|
|
92
|
+
*
|
|
93
|
+
* @param value Configuration value to validate. Throws when the value is
|
|
94
|
+
* invalid.
|
|
95
|
+
*/
|
|
72
96
|
export function validateRectlinearConfig(value) {
|
|
73
97
|
let schema;
|
|
74
98
|
try {
|
|
@@ -102,7 +126,9 @@ function getOutputFormat(output) {
|
|
|
102
126
|
return "image/jpeg";
|
|
103
127
|
if (extension === ".png")
|
|
104
128
|
return "image/png";
|
|
105
|
-
|
|
129
|
+
if (extension === ".avif")
|
|
130
|
+
return "image/avif";
|
|
131
|
+
throw new Error(`Unsupported output format ${extension || "(missing extension)"}. Use .jpg, .jpeg, .png, or .avif.`);
|
|
106
132
|
}
|
|
107
133
|
function findTemplate(name) {
|
|
108
134
|
const moduleRootTemplate = resolve(dirname(fileURLToPath(import.meta.url)), "../configs/templates", name);
|
package/dist/rectlinear.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rectlinear.js","sourceRoot":"","sources":["../src/rectlinear.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AACpC,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,IAAI,CAAC;AACxE,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAC3C,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AACjE,OAAO,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AAEjE,MAAM,aAAa,GAAuC;IACxD,KAAK,EAAE,uBAAuB;IAC9B,MAAM,EAAE,wBAAwB;IAChC,UAAU,EAAE,4BAA4B;CACzC,CAAC;
|
|
1
|
+
{"version":3,"file":"rectlinear.js","sourceRoot":"","sources":["../src/rectlinear.ts"],"names":[],"mappings":"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"}
|