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