@manycore/aholo-splat-transform 1.2.8 → 1.2.9

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.
Files changed (97) hide show
  1. package/CHANGELOG.md +120 -113
  2. package/README.md +39 -39
  3. package/THIRD_PARTY_LICENSES.txt +1373 -1373
  4. package/bin/cli.js +125 -118
  5. package/dist/SplatData.d.ts +67 -67
  6. package/dist/SplatData.js +167 -150
  7. package/dist/constant.d.ts +3 -3
  8. package/dist/constant.js +13 -13
  9. package/dist/file/IFile.d.ts +5 -5
  10. package/dist/file/IFile.js +1 -1
  11. package/dist/file/esz.d.ts +11 -11
  12. package/dist/file/esz.js +337 -322
  13. package/dist/file/index.d.ts +8 -8
  14. package/dist/file/index.js +7 -7
  15. package/dist/file/ksplat.d.ts +12 -12
  16. package/dist/file/ksplat.js +293 -231
  17. package/dist/file/lcc.d.ts +11 -11
  18. package/dist/file/lcc.js +161 -158
  19. package/dist/file/ply.d.ts +13 -13
  20. package/dist/file/ply.js +439 -390
  21. package/dist/file/sog.d.ts +80 -80
  22. package/dist/file/sog.js +525 -494
  23. package/dist/file/splat.d.ts +6 -6
  24. package/dist/file/splat.js +119 -99
  25. package/dist/file/spz.d.ts +11 -11
  26. package/dist/file/spz.js +597 -583
  27. package/dist/file/voxel.d.ts +43 -37
  28. package/dist/file/voxel.js +411 -280
  29. package/dist/index.d.ts +33 -33
  30. package/dist/index.js +54 -54
  31. package/dist/native/index.d.ts +54 -54
  32. package/dist/native/index.js +122 -129
  33. package/dist/native/utils.d.ts +1 -0
  34. package/dist/native/utils.js +54 -0
  35. package/dist/tasks/AutoChunkLodTask.d.ts +13 -13
  36. package/dist/tasks/AutoChunkLodTask.js +117 -117
  37. package/dist/tasks/AutoLodTask.d.ts +10 -10
  38. package/dist/tasks/AutoLodTask.js +20 -20
  39. package/dist/tasks/BaseTask.d.ts +15 -15
  40. package/dist/tasks/BaseTask.js +5 -5
  41. package/dist/tasks/FlexLodTask.d.ts +12 -12
  42. package/dist/tasks/FlexLodTask.js +54 -44
  43. package/dist/tasks/ModifyTask.d.ts +9 -9
  44. package/dist/tasks/ModifyTask.js +166 -156
  45. package/dist/tasks/ReadTask.d.ts +9 -9
  46. package/dist/tasks/ReadTask.js +29 -29
  47. package/dist/tasks/SkeletonLodTask.d.ts +10 -10
  48. package/dist/tasks/SkeletonLodTask.js +176 -156
  49. package/dist/tasks/VoxelTask.d.ts +35 -30
  50. package/dist/tasks/VoxelTask.js +40 -37
  51. package/dist/tasks/WriteTask.d.ts +12 -12
  52. package/dist/tasks/WriteTask.js +70 -70
  53. package/dist/utils/BufferReader.d.ts +12 -12
  54. package/dist/utils/BufferReader.js +45 -45
  55. package/dist/utils/Logger.d.ts +11 -11
  56. package/dist/utils/Logger.js +40 -40
  57. package/dist/utils/StreamChunkDecoder.d.ts +16 -16
  58. package/dist/utils/StreamChunkDecoder.js +31 -31
  59. package/dist/utils/index.d.ts +27 -27
  60. package/dist/utils/index.js +101 -101
  61. package/dist/utils/k-means.d.ts +4 -4
  62. package/dist/utils/k-means.js +340 -341
  63. package/dist/utils/math.d.ts +46 -46
  64. package/dist/utils/math.js +350 -346
  65. package/dist/utils/quantize-1d.d.ts +4 -4
  66. package/dist/utils/quantize-1d.js +164 -164
  67. package/dist/utils/sh-rotate.d.ts +2 -2
  68. package/dist/utils/sh-rotate.js +236 -175
  69. package/dist/utils/splat.d.ts +21 -21
  70. package/dist/utils/splat.js +397 -387
  71. package/dist/utils/voxel/binary.d.ts +8 -0
  72. package/dist/utils/voxel/binary.js +176 -0
  73. package/dist/utils/voxel/common.d.ts +178 -162
  74. package/dist/utils/voxel/common.js +1752 -1682
  75. package/dist/utils/voxel/coplanar-merge.d.ts +63 -63
  76. package/dist/utils/voxel/coplanar-merge.js +818 -819
  77. package/dist/utils/voxel/filter-cluster.d.ts +20 -0
  78. package/dist/utils/voxel/filter-cluster.js +628 -0
  79. package/dist/utils/voxel/gpu-dilation.d.ts +2 -2
  80. package/dist/utils/voxel/gpu-dilation.js +677 -656
  81. package/dist/utils/voxel/marching-cubes.d.ts +42 -42
  82. package/dist/utils/voxel/marching-cubes.js +1645 -1657
  83. package/dist/utils/voxel/mesh.d.ts +3 -3
  84. package/dist/utils/voxel/mesh.js +130 -130
  85. package/dist/utils/voxel/nav.d.ts +29 -29
  86. package/dist/utils/voxel/nav.js +1068 -1043
  87. package/dist/utils/voxel/postprocess.d.ts +23 -23
  88. package/dist/utils/voxel/postprocess.js +408 -375
  89. package/dist/utils/voxel/voxel-faces.d.ts +18 -18
  90. package/dist/utils/voxel/voxel-faces.js +662 -663
  91. package/dist/utils/voxel/voxelize.d.ts +34 -33
  92. package/dist/utils/voxel/voxelize.js +1208 -1193
  93. package/dist/utils/webgpu.d.ts +8 -8
  94. package/dist/utils/webgpu.js +122 -122
  95. package/package.json +37 -39
  96. package/dist/native/cpp/bin/linux/binding.node +0 -0
  97. package/dist/native/cpp/bin/windows/binding.node +0 -0
package/dist/SplatData.js CHANGED
@@ -1,150 +1,167 @@
1
- import { Quaternion, deferred } from './utils/index.js';
2
- import { SH_MAPS } from './constant.js';
3
- const tempQuat = new Quaternion(0, 0, 0, 1);
4
- export class SplatData {
5
- constructor(blockCounts = 1, maxShDegree = 3) {
6
- this.blockOffsets = [];
7
- this.blockContentCounts = [];
8
- this.totalBlockCounts = 0;
9
- this.totalBlockShDegree = 3;
10
- this.blockExecs = [];
11
- this.currentBlockIndex = 0;
12
- this.blockCounts = blockCounts;
13
- this.maxShDegree = maxShDegree;
14
- }
15
- initBlock(counts, shDegree) {
16
- this.blockContentCounts.push(counts);
17
- this.blockOffsets.push(this.totalBlockCounts);
18
- this.totalBlockCounts += counts;
19
- this.totalBlockShDegree = Math.min(shDegree, this.totalBlockShDegree);
20
- const { promise, resolve } = deferred();
21
- this.blockExecs.push(resolve);
22
- if (this.blockOffsets.length === this.blockCounts) {
23
- this.init(this.totalBlockCounts, this.totalBlockShDegree);
24
- this.blockExecs[this.currentBlockIndex](this.blockOffsets[0]);
25
- }
26
- return promise;
27
- }
28
- finishBlock() {
29
- this.currentBlockIndex++;
30
- this.blockExecs[this.currentBlockIndex]?.(this.blockOffsets[this.currentBlockIndex]);
31
- }
32
- init(counts, shDegree) {
33
- this.counts = counts;
34
- this.shDegree = Math.min(shDegree, this.maxShDegree);
35
- const shCounts = this.shCounts = SH_MAPS[this.shDegree];
36
- this.table = new Array(14 + shCounts).fill(0).map(() => new Float32Array(counts));
37
- return this;
38
- }
39
- set(i, single) {
40
- const { table } = this;
41
- table[0 /* ColIdx.x */][i] = single.x;
42
- table[1 /* ColIdx.y */][i] = single.y;
43
- table[2 /* ColIdx.z */][i] = single.z;
44
- table[3 /* ColIdx.sx */][i] = single.sx;
45
- table[4 /* ColIdx.sy */][i] = single.sy;
46
- table[5 /* ColIdx.sz */][i] = single.sz;
47
- tempQuat.set(single.qx, single.qy, single.qz, single.qw).normalize();
48
- table[6 /* ColIdx.qx */][i] = tempQuat.x;
49
- table[7 /* ColIdx.qy */][i] = tempQuat.y;
50
- table[8 /* ColIdx.qz */][i] = tempQuat.z;
51
- table[9 /* ColIdx.qw */][i] = tempQuat.w;
52
- table[10 /* ColIdx.r */][i] = single.r;
53
- table[11 /* ColIdx.g */][i] = single.g;
54
- table[12 /* ColIdx.b */][i] = single.b;
55
- table[13 /* ColIdx.a */][i] = single.a;
56
- }
57
- setCenter(i, x, y, z) {
58
- const { table } = this;
59
- table[0 /* ColIdx.x */][i] = x;
60
- table[1 /* ColIdx.y */][i] = y;
61
- table[2 /* ColIdx.z */][i] = z;
62
- }
63
- setScale(i, sx, sy, sz) {
64
- const { table } = this;
65
- table[3 /* ColIdx.sx */][i] = sx;
66
- table[4 /* ColIdx.sy */][i] = sy;
67
- table[5 /* ColIdx.sz */][i] = sz;
68
- }
69
- setQuat(i, qx, qy, qz, qw) {
70
- const { table } = this;
71
- tempQuat.set(qx, qy, qz, qw).normalize();
72
- table[6 /* ColIdx.qx */][i] = tempQuat.x;
73
- table[7 /* ColIdx.qy */][i] = tempQuat.y;
74
- table[8 /* ColIdx.qz */][i] = tempQuat.z;
75
- table[9 /* ColIdx.qw */][i] = tempQuat.w;
76
- }
77
- setColor(i, r, g, b) {
78
- const { table } = this;
79
- table[10 /* ColIdx.r */][i] = r;
80
- table[11 /* ColIdx.g */][i] = g;
81
- table[12 /* ColIdx.b */][i] = b;
82
- }
83
- setAlpha(i, a) {
84
- const { table } = this;
85
- table[13 /* ColIdx.a */][i] = a;
86
- }
87
- setShN(i, shN) {
88
- const { table, shCounts } = this;
89
- for (let j = 0; j < shCounts; j++) {
90
- table[14 /* ColIdx.shOffset */ + j][i] = shN[j];
91
- }
92
- }
93
- ;
94
- get(i, single) {
95
- const { table } = this;
96
- single.x = table[0 /* ColIdx.x */][i];
97
- single.y = table[1 /* ColIdx.y */][i];
98
- single.z = table[2 /* ColIdx.z */][i];
99
- single.sx = table[3 /* ColIdx.sx */][i];
100
- single.sy = table[4 /* ColIdx.sy */][i];
101
- single.sz = table[5 /* ColIdx.sz */][i];
102
- single.qx = table[6 /* ColIdx.qx */][i];
103
- single.qy = table[7 /* ColIdx.qy */][i];
104
- single.qz = table[8 /* ColIdx.qz */][i];
105
- single.qw = table[9 /* ColIdx.qw */][i];
106
- single.r = table[10 /* ColIdx.r */][i];
107
- single.g = table[11 /* ColIdx.g */][i];
108
- single.b = table[12 /* ColIdx.b */][i];
109
- single.a = table[13 /* ColIdx.a */][i];
110
- }
111
- getCenter(i, single) {
112
- const { table } = this;
113
- single.x = table[0 /* ColIdx.x */][i];
114
- single.y = table[1 /* ColIdx.y */][i];
115
- single.z = table[2 /* ColIdx.z */][i];
116
- }
117
- getScale(i, single) {
118
- const { table } = this;
119
- single.sx = table[3 /* ColIdx.sx */][i];
120
- single.sy = table[4 /* ColIdx.sy */][i];
121
- single.sz = table[5 /* ColIdx.sz */][i];
122
- }
123
- getQuat(i, single) {
124
- const { table } = this;
125
- single.qx = table[6 /* ColIdx.qx */][i];
126
- single.qy = table[7 /* ColIdx.qy */][i];
127
- single.qz = table[8 /* ColIdx.qz */][i];
128
- single.qw = table[9 /* ColIdx.qw */][i];
129
- }
130
- getColor(i, single) {
131
- const { table } = this;
132
- single.r = table[10 /* ColIdx.r */][i];
133
- single.g = table[11 /* ColIdx.g */][i];
134
- single.b = table[12 /* ColIdx.b */][i];
135
- }
136
- getAlpha(i, single) {
137
- const { table } = this;
138
- single.a = table[13 /* ColIdx.a */][i];
139
- }
140
- getShN(i, shN) {
141
- const { shCounts, table } = this;
142
- for (let j = 0; j < shCounts; j++) {
143
- shN[j] = table[14 /* ColIdx.shOffset */ + j][i];
144
- }
145
- }
146
- destroy() {
147
- this.counts = 0;
148
- this.table = [];
149
- }
150
- }
1
+ import { Quaternion, deferred } from './utils/index.js';
2
+ import { SH_MAPS } from './constant.js';
3
+ export var ColIdx;
4
+ (function (ColIdx) {
5
+ ColIdx[ColIdx["x"] = 0] = "x";
6
+ ColIdx[ColIdx["y"] = 1] = "y";
7
+ ColIdx[ColIdx["z"] = 2] = "z";
8
+ ColIdx[ColIdx["sx"] = 3] = "sx";
9
+ ColIdx[ColIdx["sy"] = 4] = "sy";
10
+ ColIdx[ColIdx["sz"] = 5] = "sz";
11
+ ColIdx[ColIdx["qx"] = 6] = "qx";
12
+ ColIdx[ColIdx["qy"] = 7] = "qy";
13
+ ColIdx[ColIdx["qz"] = 8] = "qz";
14
+ ColIdx[ColIdx["qw"] = 9] = "qw";
15
+ ColIdx[ColIdx["r"] = 10] = "r";
16
+ ColIdx[ColIdx["g"] = 11] = "g";
17
+ ColIdx[ColIdx["b"] = 12] = "b";
18
+ ColIdx[ColIdx["a"] = 13] = "a";
19
+ ColIdx[ColIdx["shOffset"] = 14] = "shOffset";
20
+ })(ColIdx || (ColIdx = {}));
21
+ const tempQuat = new Quaternion(0, 0, 0, 1);
22
+ export class SplatData {
23
+ constructor(blockCounts = 1, maxShDegree = 3) {
24
+ this.blockOffsets = [];
25
+ this.blockContentCounts = [];
26
+ this.totalBlockCounts = 0;
27
+ this.totalBlockShDegree = 3;
28
+ this.blockExecs = [];
29
+ this.currentBlockIndex = 0;
30
+ this.blockCounts = blockCounts;
31
+ this.maxShDegree = maxShDegree;
32
+ }
33
+ initBlock(counts, shDegree) {
34
+ this.blockContentCounts.push(counts);
35
+ this.blockOffsets.push(this.totalBlockCounts);
36
+ this.totalBlockCounts += counts;
37
+ this.totalBlockShDegree = Math.min(shDegree, this.totalBlockShDegree);
38
+ const { promise, resolve } = deferred();
39
+ this.blockExecs.push(resolve);
40
+ if (this.blockOffsets.length === this.blockCounts) {
41
+ this.init(this.totalBlockCounts, this.totalBlockShDegree);
42
+ this.blockExecs[this.currentBlockIndex](this.blockOffsets[0]);
43
+ }
44
+ return promise;
45
+ }
46
+ finishBlock() {
47
+ this.currentBlockIndex++;
48
+ this.blockExecs[this.currentBlockIndex]?.(this.blockOffsets[this.currentBlockIndex]);
49
+ }
50
+ init(counts, shDegree) {
51
+ this.counts = counts;
52
+ this.shDegree = Math.min(shDegree, this.maxShDegree);
53
+ const shCounts = (this.shCounts = SH_MAPS[this.shDegree]);
54
+ this.table = new Array(14 + shCounts).fill(0).map(() => new Float32Array(counts));
55
+ return this;
56
+ }
57
+ set(i, single) {
58
+ const { table } = this;
59
+ table[ColIdx.x][i] = single.x;
60
+ table[ColIdx.y][i] = single.y;
61
+ table[ColIdx.z][i] = single.z;
62
+ table[ColIdx.sx][i] = single.sx;
63
+ table[ColIdx.sy][i] = single.sy;
64
+ table[ColIdx.sz][i] = single.sz;
65
+ tempQuat.set(single.qx, single.qy, single.qz, single.qw).normalize();
66
+ table[ColIdx.qx][i] = tempQuat.x;
67
+ table[ColIdx.qy][i] = tempQuat.y;
68
+ table[ColIdx.qz][i] = tempQuat.z;
69
+ table[ColIdx.qw][i] = tempQuat.w;
70
+ table[ColIdx.r][i] = single.r;
71
+ table[ColIdx.g][i] = single.g;
72
+ table[ColIdx.b][i] = single.b;
73
+ table[ColIdx.a][i] = single.a;
74
+ }
75
+ setCenter(i, x, y, z) {
76
+ const { table } = this;
77
+ table[ColIdx.x][i] = x;
78
+ table[ColIdx.y][i] = y;
79
+ table[ColIdx.z][i] = z;
80
+ }
81
+ setScale(i, sx, sy, sz) {
82
+ const { table } = this;
83
+ table[ColIdx.sx][i] = sx;
84
+ table[ColIdx.sy][i] = sy;
85
+ table[ColIdx.sz][i] = sz;
86
+ }
87
+ setQuat(i, qx, qy, qz, qw) {
88
+ const { table } = this;
89
+ tempQuat.set(qx, qy, qz, qw).normalize();
90
+ table[ColIdx.qx][i] = tempQuat.x;
91
+ table[ColIdx.qy][i] = tempQuat.y;
92
+ table[ColIdx.qz][i] = tempQuat.z;
93
+ table[ColIdx.qw][i] = tempQuat.w;
94
+ }
95
+ setColor(i, r, g, b) {
96
+ const { table } = this;
97
+ table[ColIdx.r][i] = r;
98
+ table[ColIdx.g][i] = g;
99
+ table[ColIdx.b][i] = b;
100
+ }
101
+ setAlpha(i, a) {
102
+ const { table } = this;
103
+ table[ColIdx.a][i] = a;
104
+ }
105
+ setShN(i, shN) {
106
+ const { table, shCounts } = this;
107
+ for (let j = 0; j < shCounts; j++) {
108
+ table[ColIdx.shOffset + j][i] = shN[j];
109
+ }
110
+ }
111
+ get(i, single) {
112
+ const { table } = this;
113
+ single.x = table[ColIdx.x][i];
114
+ single.y = table[ColIdx.y][i];
115
+ single.z = table[ColIdx.z][i];
116
+ single.sx = table[ColIdx.sx][i];
117
+ single.sy = table[ColIdx.sy][i];
118
+ single.sz = table[ColIdx.sz][i];
119
+ single.qx = table[ColIdx.qx][i];
120
+ single.qy = table[ColIdx.qy][i];
121
+ single.qz = table[ColIdx.qz][i];
122
+ single.qw = table[ColIdx.qw][i];
123
+ single.r = table[ColIdx.r][i];
124
+ single.g = table[ColIdx.g][i];
125
+ single.b = table[ColIdx.b][i];
126
+ single.a = table[ColIdx.a][i];
127
+ }
128
+ getCenter(i, single) {
129
+ const { table } = this;
130
+ single.x = table[ColIdx.x][i];
131
+ single.y = table[ColIdx.y][i];
132
+ single.z = table[ColIdx.z][i];
133
+ }
134
+ getScale(i, single) {
135
+ const { table } = this;
136
+ single.sx = table[ColIdx.sx][i];
137
+ single.sy = table[ColIdx.sy][i];
138
+ single.sz = table[ColIdx.sz][i];
139
+ }
140
+ getQuat(i, single) {
141
+ const { table } = this;
142
+ single.qx = table[ColIdx.qx][i];
143
+ single.qy = table[ColIdx.qy][i];
144
+ single.qz = table[ColIdx.qz][i];
145
+ single.qw = table[ColIdx.qw][i];
146
+ }
147
+ getColor(i, single) {
148
+ const { table } = this;
149
+ single.r = table[ColIdx.r][i];
150
+ single.g = table[ColIdx.g][i];
151
+ single.b = table[ColIdx.b][i];
152
+ }
153
+ getAlpha(i, single) {
154
+ const { table } = this;
155
+ single.a = table[ColIdx.a][i];
156
+ }
157
+ getShN(i, shN) {
158
+ const { shCounts, table } = this;
159
+ for (let j = 0; j < shCounts; j++) {
160
+ shN[j] = table[ColIdx.shOffset + j][i];
161
+ }
162
+ }
163
+ destroy() {
164
+ this.counts = 0;
165
+ this.table = [];
166
+ }
167
+ }
@@ -1,3 +1,3 @@
1
- export declare const SH_C0 = 0.28209479177387814;
2
- export declare const SH_MAPS: Record<number, number>;
3
- export declare const NUM_F_REST_TO_SH_DEGREE: Record<number, number>;
1
+ export declare const SH_C0 = 0.28209479177387814;
2
+ export declare const SH_MAPS: Record<number, number>;
3
+ export declare const NUM_F_REST_TO_SH_DEGREE: Record<number, number>;
package/dist/constant.js CHANGED
@@ -1,13 +1,13 @@
1
- export const SH_C0 = 0.28209479177387814;
2
- export const SH_MAPS = {
3
- 0: 0,
4
- 1: 9,
5
- 2: 24,
6
- 3: 45,
7
- };
8
- export const NUM_F_REST_TO_SH_DEGREE = {
9
- 0: 0,
10
- 9: 1,
11
- 24: 2,
12
- 45: 3,
13
- };
1
+ export const SH_C0 = 0.28209479177387814;
2
+ export const SH_MAPS = {
3
+ 0: 0,
4
+ 1: 9,
5
+ 2: 24,
6
+ 3: 45,
7
+ };
8
+ export const NUM_F_REST_TO_SH_DEGREE = {
9
+ 0: 0,
10
+ 9: 1,
11
+ 24: 2,
12
+ 45: 3,
13
+ };
@@ -1,5 +1,5 @@
1
- import { SplatData } from '../SplatData.js';
2
- export interface IFile {
3
- read(stream: ReadableStream<Uint8Array>, contentLength: number, data: SplatData): Promise<void>;
4
- write(stream: WritableStream<Uint8Array>, data: SplatData, indices?: Uint32Array): Promise<void>;
5
- }
1
+ import type { SplatData } from '../SplatData.js';
2
+ export interface IFile {
3
+ read(stream: ReadableStream<Uint8Array>, contentLength: number, data: SplatData): Promise<void>;
4
+ write(stream: WritableStream<Uint8Array>, data: SplatData, indices?: Uint32Array): Promise<void>;
5
+ }
@@ -1 +1 @@
1
- export {};
1
+ export {};
@@ -1,11 +1,11 @@
1
- import { SplatData } from '../SplatData.js';
2
- import { IFile } from './IFile.js';
3
- export declare class EszFile implements IFile {
4
- private counts;
5
- private shDegree;
6
- private cached;
7
- load(stream: ReadableStream<Uint8Array>, contentLength: number): Promise<void>;
8
- private loadTexture;
9
- read(stream: ReadableStream<Uint8Array>, contentLength: number, data: SplatData): Promise<void>;
10
- write(stream: WritableStream<Uint8Array>, data: SplatData, indices?: Uint32Array): Promise<void>;
11
- }
1
+ import { type SplatData } from '../SplatData.js';
2
+ import type { IFile } from './IFile.js';
3
+ export declare class EszFile implements IFile {
4
+ private counts;
5
+ private shDegree;
6
+ private cached;
7
+ load(stream: ReadableStream<Uint8Array>, contentLength: number): Promise<void>;
8
+ private loadTexture;
9
+ read(stream: ReadableStream<Uint8Array>, contentLength: number, data: SplatData): Promise<void>;
10
+ write(stream: WritableStream<Uint8Array>, data: SplatData, indices?: Uint32Array): Promise<void>;
11
+ }