@manycore/aholo-splat-transform 1.2.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +102 -0
- package/README.md +33 -0
- package/bin/cli.js +118 -0
- package/dist/SplatData.d.ts +67 -0
- package/dist/SplatData.js +156 -0
- package/dist/constant.d.ts +3 -0
- package/dist/constant.js +13 -0
- package/dist/file/IFile.d.ts +5 -0
- package/dist/file/IFile.js +1 -0
- package/dist/file/index.d.ts +7 -0
- package/dist/file/index.js +6 -0
- package/dist/file/ksplat.d.ts +12 -0
- package/dist/file/ksplat.js +232 -0
- package/dist/file/lcc.d.ts +11 -0
- package/dist/file/lcc.js +157 -0
- package/dist/file/ply.d.ts +13 -0
- package/dist/file/ply.js +388 -0
- package/dist/file/sog.d.ts +80 -0
- package/dist/file/sog.js +504 -0
- package/dist/file/splat.d.ts +6 -0
- package/dist/file/splat.js +99 -0
- package/dist/file/spz.d.ts +8 -0
- package/dist/file/spz.js +400 -0
- package/dist/file/voxel.d.ts +37 -0
- package/dist/file/voxel.js +280 -0
- package/dist/index.d.ts +33 -0
- package/dist/index.js +54 -0
- package/dist/native/cpp/bin/linux/binding.node +0 -0
- package/dist/native/cpp/bin/windows/binding.node +0 -0
- package/dist/native/index.d.ts +54 -0
- package/dist/native/index.js +128 -0
- package/dist/tasks/AutoChunkLodTask.d.ts +13 -0
- package/dist/tasks/AutoChunkLodTask.js +117 -0
- package/dist/tasks/AutoLodTask.d.ts +10 -0
- package/dist/tasks/AutoLodTask.js +20 -0
- package/dist/tasks/BaseTask.d.ts +15 -0
- package/dist/tasks/BaseTask.js +5 -0
- package/dist/tasks/FlexLodTask.d.ts +12 -0
- package/dist/tasks/FlexLodTask.js +44 -0
- package/dist/tasks/ModifyTask.d.ts +9 -0
- package/dist/tasks/ModifyTask.js +156 -0
- package/dist/tasks/ReadTask.d.ts +8 -0
- package/dist/tasks/ReadTask.js +29 -0
- package/dist/tasks/SkeletonLodTask.d.ts +10 -0
- package/dist/tasks/SkeletonLodTask.js +156 -0
- package/dist/tasks/VoxelTask.d.ts +30 -0
- package/dist/tasks/VoxelTask.js +37 -0
- package/dist/tasks/WriteTask.d.ts +11 -0
- package/dist/tasks/WriteTask.js +70 -0
- package/dist/utils/BufferReader.d.ts +12 -0
- package/dist/utils/BufferReader.js +47 -0
- package/dist/utils/Logger.d.ts +11 -0
- package/dist/utils/Logger.js +38 -0
- package/dist/utils/StreamChunkDecoder.d.ts +16 -0
- package/dist/utils/StreamChunkDecoder.js +36 -0
- package/dist/utils/index.d.ts +27 -0
- package/dist/utils/index.js +101 -0
- package/dist/utils/k-means.d.ts +4 -0
- package/dist/utils/k-means.js +350 -0
- package/dist/utils/math.d.ts +46 -0
- package/dist/utils/math.js +351 -0
- package/dist/utils/quantize-1d.d.ts +4 -0
- package/dist/utils/quantize-1d.js +164 -0
- package/dist/utils/sh-rotate.d.ts +2 -0
- package/dist/utils/sh-rotate.js +175 -0
- package/dist/utils/splat.d.ts +20 -0
- package/dist/utils/splat.js +378 -0
- package/dist/utils/voxel/common.d.ts +162 -0
- package/dist/utils/voxel/common.js +1700 -0
- package/dist/utils/voxel/coplanar-merge.d.ts +63 -0
- package/dist/utils/voxel/coplanar-merge.js +819 -0
- package/dist/utils/voxel/gpu-dilation.d.ts +2 -0
- package/dist/utils/voxel/gpu-dilation.js +665 -0
- package/dist/utils/voxel/marching-cubes.d.ts +42 -0
- package/dist/utils/voxel/marching-cubes.js +1657 -0
- package/dist/utils/voxel/mesh.d.ts +3 -0
- package/dist/utils/voxel/mesh.js +130 -0
- package/dist/utils/voxel/nav.d.ts +29 -0
- package/dist/utils/voxel/nav.js +1043 -0
- package/dist/utils/voxel/postprocess.d.ts +23 -0
- package/dist/utils/voxel/postprocess.js +375 -0
- package/dist/utils/voxel/voxel-faces.d.ts +18 -0
- package/dist/utils/voxel/voxel-faces.js +663 -0
- package/dist/utils/voxel/voxelize.d.ts +33 -0
- package/dist/utils/voxel/voxelize.js +1193 -0
- package/dist/utils/webgpu.d.ts +8 -0
- package/dist/utils/webgpu.js +122 -0
- package/package.json +32 -0
|
@@ -0,0 +1,162 @@
|
|
|
1
|
+
/** 3D Morton (Z-order) for integer block coordinates. */
|
|
2
|
+
export declare const encodeMorton3: (x: number, y: number, z: number) => number;
|
|
3
|
+
export declare const decodeMorton3: (m: number) => [number, number, number];
|
|
4
|
+
export interface Bounds {
|
|
5
|
+
min: {
|
|
6
|
+
x: number;
|
|
7
|
+
y: number;
|
|
8
|
+
z: number;
|
|
9
|
+
};
|
|
10
|
+
max: {
|
|
11
|
+
x: number;
|
|
12
|
+
y: number;
|
|
13
|
+
z: number;
|
|
14
|
+
};
|
|
15
|
+
}
|
|
16
|
+
/** Voxel leaf edge length in voxels (4³ block). */
|
|
17
|
+
export declare const LEAF_SIZE = 4;
|
|
18
|
+
export declare const ALPHA_THRESHOLD: number;
|
|
19
|
+
export declare const alignGridBounds: (bounds: Bounds, voxelResolution: number) => Bounds;
|
|
20
|
+
/** Opacity-aware AABB half-extents from scale + unit quaternion. */
|
|
21
|
+
export declare const extentsFromQuatScale: (sx: number, sy: number, sz: number, qx: number, qy: number, qz: number, qw: number, opacity?: number, opacityThreshold?: number) => {
|
|
22
|
+
ex: number;
|
|
23
|
+
ey: number;
|
|
24
|
+
ez: number;
|
|
25
|
+
};
|
|
26
|
+
export declare class GaussianBVH {
|
|
27
|
+
private static readonly MAX_LEAF_SIZE;
|
|
28
|
+
private readonly x;
|
|
29
|
+
private readonly y;
|
|
30
|
+
private readonly z;
|
|
31
|
+
private readonly extents;
|
|
32
|
+
private readonly root;
|
|
33
|
+
constructor(x: Float32Array, y: Float32Array, z: Float32Array, extents: Float32Array);
|
|
34
|
+
queryOverlappingRaw(minX: number, minY: number, minZ: number, maxX: number, maxY: number, maxZ: number): number[];
|
|
35
|
+
queryOverlappingRawInto(minX: number, minY: number, minZ: number, maxX: number, maxY: number, maxZ: number, output: Uint32Array, offset?: number): number;
|
|
36
|
+
private computeBounds;
|
|
37
|
+
private buildNode;
|
|
38
|
+
private queryNode;
|
|
39
|
+
private queryNodeInto;
|
|
40
|
+
}
|
|
41
|
+
declare const SOLID_LO: number;
|
|
42
|
+
declare const SOLID_HI: number;
|
|
43
|
+
/**
|
|
44
|
+
* Append-only buffer for streaming voxelization results.
|
|
45
|
+
* Stores (linear blockIdx, voxel mask) pairs for non-empty 4x4x4 blocks.
|
|
46
|
+
*
|
|
47
|
+
* Block keys are linear block indices `bx + by*nbx + bz*nbx*nby` in the
|
|
48
|
+
* producer's grid coordinate system. Producers and consumers must agree on
|
|
49
|
+
* the grid dimensions; the buffer itself is dimension-agnostic.
|
|
50
|
+
*/
|
|
51
|
+
export declare class BlockMaskBuffer {
|
|
52
|
+
private solidIdx;
|
|
53
|
+
private solidCountValue;
|
|
54
|
+
private solidCap;
|
|
55
|
+
private mixedIdx;
|
|
56
|
+
private mixedCountValue;
|
|
57
|
+
private mixedCap;
|
|
58
|
+
private mixedMasks;
|
|
59
|
+
addBlock(blockIdx: number, lo: number, hi: number): void;
|
|
60
|
+
getMixedBlocks(): {
|
|
61
|
+
blockIdx: Float64Array<ArrayBufferLike>;
|
|
62
|
+
masks: Uint32Array<ArrayBufferLike>;
|
|
63
|
+
};
|
|
64
|
+
getSolidBlocks(): Float64Array<ArrayBufferLike>;
|
|
65
|
+
get count(): number;
|
|
66
|
+
get mixedCount(): number;
|
|
67
|
+
get solidCount(): number;
|
|
68
|
+
clear(): void;
|
|
69
|
+
}
|
|
70
|
+
declare const BLOCK_EMPTY = 0;
|
|
71
|
+
declare const BLOCK_SOLID = 1;
|
|
72
|
+
declare const BLOCK_MIXED = 2;
|
|
73
|
+
declare const TYPE_MASK = 3;
|
|
74
|
+
declare const BLOCKS_PER_WORD = 16;
|
|
75
|
+
declare const EVEN_BITS: number;
|
|
76
|
+
declare const readBlockType: (types: Uint32Array, blockIdx: number) => number;
|
|
77
|
+
declare const writeBlockType: (types: Uint32Array, blockIdx: number, blockType: number) => void;
|
|
78
|
+
declare class BlockMaskMap {
|
|
79
|
+
keys: Int32Array;
|
|
80
|
+
lo: Uint32Array;
|
|
81
|
+
hi: Uint32Array;
|
|
82
|
+
private _size;
|
|
83
|
+
private _capacity;
|
|
84
|
+
private _mask;
|
|
85
|
+
constructor(initialCapacity?: number);
|
|
86
|
+
slot(key: number): number;
|
|
87
|
+
set(key: number, loVal: number, hiVal: number): void;
|
|
88
|
+
removeAt(slot: number): void;
|
|
89
|
+
clear(): void;
|
|
90
|
+
get size(): number;
|
|
91
|
+
releaseStorage(): void;
|
|
92
|
+
clone(): BlockMaskMap;
|
|
93
|
+
private _grow;
|
|
94
|
+
}
|
|
95
|
+
declare class SparseVoxelGrid {
|
|
96
|
+
readonly nx: number;
|
|
97
|
+
readonly ny: number;
|
|
98
|
+
readonly nz: number;
|
|
99
|
+
readonly nbx: number;
|
|
100
|
+
readonly nby: number;
|
|
101
|
+
readonly nbz: number;
|
|
102
|
+
readonly bStride: number;
|
|
103
|
+
types: Uint32Array;
|
|
104
|
+
masks: BlockMaskMap;
|
|
105
|
+
constructor(nx: number, ny: number, nz: number);
|
|
106
|
+
getVoxel(ix: number, iy: number, iz: number): number;
|
|
107
|
+
setVoxel(ix: number, iy: number, iz: number): void;
|
|
108
|
+
orBlock(blockIdx: number, lo: number, hi: number): void;
|
|
109
|
+
clear(): void;
|
|
110
|
+
releaseStorage(): void;
|
|
111
|
+
clone(): SparseVoxelGrid;
|
|
112
|
+
cropTo(cropMinBx: number, cropMinBy: number, cropMinBz: number, cropMaxBx: number, cropMaxBy: number, cropMaxBz: number, onProgress?: (done: number, total: number) => void): SparseVoxelGrid;
|
|
113
|
+
cropToInverted(cropMinBx: number, cropMinBy: number, cropMinBz: number, cropMaxBx: number, cropMaxBy: number, cropMaxBz: number, onProgress?: (done: number, total: number) => void): SparseVoxelGrid;
|
|
114
|
+
static fromBuffer(acc: BlockMaskBuffer, nx: number, ny: number, nz: number): SparseVoxelGrid;
|
|
115
|
+
toBuffer(cropMinBx: number, cropMinBy: number, cropMinBz: number, cropMaxBx: number, cropMaxBy: number, cropMaxBz: number, defaultSolid?: boolean): BlockMaskBuffer;
|
|
116
|
+
toBufferInverted(cropMinBx: number, cropMinBy: number, cropMinBz: number, cropMaxBx: number, cropMaxBy: number, cropMaxBz: number): BlockMaskBuffer;
|
|
117
|
+
getOccupiedBlockBounds(onProgress?: (done: number, total: number) => void): {
|
|
118
|
+
minBx: number;
|
|
119
|
+
minBy: number;
|
|
120
|
+
minBz: number;
|
|
121
|
+
maxBx: number;
|
|
122
|
+
maxBy: number;
|
|
123
|
+
maxBz: number;
|
|
124
|
+
} | null;
|
|
125
|
+
getNavigableBlockBounds(onProgress?: (done: number, total: number) => void): {
|
|
126
|
+
minBx: number;
|
|
127
|
+
minBy: number;
|
|
128
|
+
minBz: number;
|
|
129
|
+
maxBx: number;
|
|
130
|
+
maxBy: number;
|
|
131
|
+
maxBz: number;
|
|
132
|
+
} | null;
|
|
133
|
+
static findNearestFreeCell(blocked: SparseVoxelGrid, seedIx: number, seedIy: number, seedIz: number, maxRadius: number): {
|
|
134
|
+
ix: number;
|
|
135
|
+
iy: number;
|
|
136
|
+
iz: number;
|
|
137
|
+
} | null;
|
|
138
|
+
}
|
|
139
|
+
export declare const SOLID_LEAF_MARKER: number;
|
|
140
|
+
export declare const getChildOffset: (mask: number, octant: number) => number;
|
|
141
|
+
interface BuildSparseOctreeOptions {
|
|
142
|
+
consumeGrid?: boolean;
|
|
143
|
+
dense?: boolean;
|
|
144
|
+
}
|
|
145
|
+
/**
|
|
146
|
+
* Build a sparse octree from block masks using:
|
|
147
|
+
* 1) mixed+solid SoA merge and Morton sort
|
|
148
|
+
* 2) bottom-up level construction by parent Morton grouping
|
|
149
|
+
* 3) BFS flatten to node/leafData arrays.
|
|
150
|
+
*/
|
|
151
|
+
export declare const buildSparseOctree: (grid: SparseVoxelGrid, gridBounds: Bounds, sceneBounds: Bounds, voxelResolution: number, options?: BuildSparseOctreeOptions) => {
|
|
152
|
+
gridBounds: Bounds;
|
|
153
|
+
sceneBounds: Bounds;
|
|
154
|
+
voxelResolution: number;
|
|
155
|
+
leafSize: number;
|
|
156
|
+
treeDepth: number;
|
|
157
|
+
numInteriorNodes: number;
|
|
158
|
+
numMixedLeaves: number;
|
|
159
|
+
nodes: Uint32Array<ArrayBuffer>;
|
|
160
|
+
leafData: Uint32Array<ArrayBuffer>;
|
|
161
|
+
};
|
|
162
|
+
export { BLOCK_EMPTY, BLOCK_SOLID, BLOCK_MIXED, BLOCKS_PER_WORD, TYPE_MASK, EVEN_BITS, readBlockType, writeBlockType, SOLID_LO, SOLID_HI, SparseVoxelGrid };
|