@ifc-lite/pointcloud 0.3.3 → 0.3.4
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 +15 -2
- package/dist/formats/e57-decode.d.ts +86 -1
- package/dist/formats/e57-decode.d.ts.map +1 -1
- package/dist/formats/e57-decode.js +176 -114
- package/dist/formats/e57-decode.js.map +1 -1
- package/dist/formats/e57-page.d.ts +7 -0
- package/dist/formats/e57-page.d.ts.map +1 -1
- package/dist/formats/e57-page.js +12 -0
- package/dist/formats/e57-page.js.map +1 -1
- package/dist/streaming/e57-source.d.ts +53 -3
- package/dist/streaming/e57-source.d.ts.map +1 -1
- package/dist/streaming/e57-source.js +365 -48
- package/dist/streaming/e57-source.js.map +1 -1
- package/dist/streaming/inline-worker.js +1 -1
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -8,6 +8,14 @@ IFCx pointcloud schemas authored by buildingSMART:
|
|
|
8
8
|
- `points::array` — inline JSON `{ positions: number[][], colors?: number[][] }`.
|
|
9
9
|
- `points::base64` — `{ positions: base64-Float32, colors?: base64-Float32 }`.
|
|
10
10
|
|
|
11
|
+
## Installation
|
|
12
|
+
|
|
13
|
+
```bash
|
|
14
|
+
npm install @ifc-lite/pointcloud
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
## Decode IFCX point attributes
|
|
18
|
+
|
|
11
19
|
```ts
|
|
12
20
|
import { decodeIfcxPointAttribute } from '@ifc-lite/pointcloud';
|
|
13
21
|
|
|
@@ -18,8 +26,9 @@ if (chunk) {
|
|
|
18
26
|
}
|
|
19
27
|
```
|
|
20
28
|
|
|
21
|
-
The renderer (`@ifc-lite/renderer`)
|
|
22
|
-
`
|
|
29
|
+
The renderer (`@ifc-lite/renderer`) uploads decoded chunks (wrapped as
|
|
30
|
+
`PointCloudAsset` values) via `Renderer.setPointClouds()` /
|
|
31
|
+
`Renderer.addPointClouds()`.
|
|
23
32
|
|
|
24
33
|
## Streaming decode worker (zero Vite config)
|
|
25
34
|
|
|
@@ -49,6 +58,10 @@ Notes:
|
|
|
49
58
|
- Strict CSPs need `script-src 'self' blob:` to allow the `Blob`-URL
|
|
50
59
|
worker.
|
|
51
60
|
|
|
61
|
+
## API
|
|
62
|
+
|
|
63
|
+
See the [docs site](https://ltplus-ag.github.io/ifc-lite/) for guides and the full API reference.
|
|
64
|
+
|
|
52
65
|
## License
|
|
53
66
|
|
|
54
67
|
[MPL-2.0](../../LICENSE)
|
|
@@ -8,7 +8,87 @@
|
|
|
8
8
|
* §6.3.4) — common in Faro / Trimble / Leica exports.
|
|
9
9
|
*/
|
|
10
10
|
import type { DecodedPointChunk, PointCloudBBox } from '../types.js';
|
|
11
|
-
import { type Data3DEntry } from './e57-xml.js';
|
|
11
|
+
import { type Data3DEntry, type PrototypeField } from './e57-xml.js';
|
|
12
|
+
/**
|
|
13
|
+
* Resolved prototype field set for one scan: the cartesian axes (always
|
|
14
|
+
* present, validated) plus the optional colour / intensity /
|
|
15
|
+
* classification channels and the predicates that decide which output
|
|
16
|
+
* buffers to allocate. Shared by the whole-file (`decodeE57Scan`) and
|
|
17
|
+
* the streaming (`E57StreamingSource`) decoders so both agree on which
|
|
18
|
+
* channels a scan carries.
|
|
19
|
+
*/
|
|
20
|
+
export interface ScanFieldSet {
|
|
21
|
+
xField: PrototypeField;
|
|
22
|
+
yField: PrototypeField;
|
|
23
|
+
zField: PrototypeField;
|
|
24
|
+
rField?: PrototypeField;
|
|
25
|
+
gField?: PrototypeField;
|
|
26
|
+
bField?: PrototypeField;
|
|
27
|
+
/** colorRed/Green/Blue all present → emit a colours buffer. */
|
|
28
|
+
hasRgb: boolean;
|
|
29
|
+
iField?: PrototypeField;
|
|
30
|
+
/** intensity present (any supported kind) → emit an intensities buffer. */
|
|
31
|
+
hasIntensity: boolean;
|
|
32
|
+
cField?: PrototypeField;
|
|
33
|
+
/** classification present as Integer/ScaledInteger → emit a class buffer. */
|
|
34
|
+
hasClassification: boolean;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Validate + resolve a scan's prototype into a `ScanFieldSet`. Throws on
|
|
38
|
+
* a missing or plain-Integer cartesian axis (only Float / ScaledInteger
|
|
39
|
+
* cartesian is supported — see the inline note below).
|
|
40
|
+
*/
|
|
41
|
+
export declare function resolveScanFields(prototype: PrototypeField[]): ScanFieldSet;
|
|
42
|
+
/** Lightweight 4-byte DataPacket header peek (type + total logical length). */
|
|
43
|
+
export interface PacketHeaderPeek {
|
|
44
|
+
/** packetType: 1=data, 2=index, 3=empty. */
|
|
45
|
+
packetType: number;
|
|
46
|
+
/** Total packet length in logical bytes (header field + 1). */
|
|
47
|
+
packetLength: number;
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Read a DataPacket's 4-byte header without decoding its payload. The
|
|
51
|
+
* streaming reader uses this to learn a packet's length up front so it
|
|
52
|
+
* can decide whether the packet fits in the current window before
|
|
53
|
+
* committing to decode it.
|
|
54
|
+
*
|
|
55
|
+
* Packet header (4 bytes):
|
|
56
|
+
* byte 0: packetType (1=data, 2=index, 3=empty)
|
|
57
|
+
* byte 1: packetFlags (bit 0 = compressorRestart)
|
|
58
|
+
* bytes 2-3: packetLogicalLength - 1 (LE u16; total packet bytes minus 1)
|
|
59
|
+
*/
|
|
60
|
+
export declare function peekPacketHeader(view: DataView, offset: number): PacketHeaderPeek;
|
|
61
|
+
/** Result of decoding a single DataPacket. */
|
|
62
|
+
export interface DecodedPacket {
|
|
63
|
+
/** packetType: 1=data (positions populated), 2/3=skip (take=0). */
|
|
64
|
+
packetType: number;
|
|
65
|
+
/** Total packet length in logical bytes — advance the cursor by this. */
|
|
66
|
+
packetLength: number;
|
|
67
|
+
/** Records decoded into the channel buffers (0 for non-data packets). */
|
|
68
|
+
take: number;
|
|
69
|
+
/** take*3 cartesian floats (data packets only). */
|
|
70
|
+
positions?: Float32Array;
|
|
71
|
+
/** take*3 colour floats when the scan carries RGB. */
|
|
72
|
+
colors?: Float32Array;
|
|
73
|
+
/** take intensities when the scan carries intensity. */
|
|
74
|
+
intensities?: Uint16Array;
|
|
75
|
+
/** take classifications when the scan carries them. */
|
|
76
|
+
classifications?: Uint8Array;
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Decode ONE DataPacket at `offset` in the logical-byte view `logical`.
|
|
80
|
+
*
|
|
81
|
+
* Non-data packets (index/empty) return `{ packetType, packetLength,
|
|
82
|
+
* take: 0 }` so the caller can skip them by `packetLength`. Data packets
|
|
83
|
+
* decode up to `maxRecords` consecutive records into freshly-allocated,
|
|
84
|
+
* tightly-sized channel buffers — the caller owns striding, pose, and
|
|
85
|
+
* concatenation.
|
|
86
|
+
*
|
|
87
|
+
* Callers must ensure `offset + 4 <= logical.length` (header readable)
|
|
88
|
+
* before calling; this function then bounds-checks the full packet
|
|
89
|
+
* against `logical.length` for data packets.
|
|
90
|
+
*/
|
|
91
|
+
export declare function decodeE57Packet(logical: Uint8Array, view: DataView, offset: number, fields: ScanFieldSet, prototype: PrototypeField[], maxRecords: number): DecodedPacket;
|
|
12
92
|
/**
|
|
13
93
|
* Decode the binary section starting at `entry.binaryFileOffset` in the
|
|
14
94
|
* logical-bytes view. NOTE: `binaryFileOffset` here must already point
|
|
@@ -22,6 +102,11 @@ import { type Data3DEntry } from './e57-xml.js';
|
|
|
22
102
|
* with scale/offset), and Integer for cartesianX/Y/Z + colorRed/
|
|
23
103
|
* Green/Blue + intensity. Other prototype fields are honoured for
|
|
24
104
|
* stride math but discarded.
|
|
105
|
+
*
|
|
106
|
+
* Whole-file path: holds the entire scan in memory. The streaming
|
|
107
|
+
* `E57StreamingSource` shares the per-packet primitives above but reads
|
|
108
|
+
* the binary section incrementally so multi-GB files don't allocate the
|
|
109
|
+
* whole file at once.
|
|
25
110
|
*/
|
|
26
111
|
export declare function decodeE57Scan(logical: Uint8Array, entry: Data3DEntry): DecodedPointChunk;
|
|
27
112
|
export declare function computeBBox(positions: Float32Array): PointCloudBBox;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"e57-decode.d.ts","sourceRoot":"","sources":["../../src/formats/e57-decode.ts"],"names":[],"mappings":"AAIA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AACrE,OAAO,EAAa,KAAK,WAAW,
|
|
1
|
+
{"version":3,"file":"e57-decode.d.ts","sourceRoot":"","sources":["../../src/formats/e57-decode.ts"],"names":[],"mappings":"AAIA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AACrE,OAAO,EAAa,KAAK,WAAW,EAAE,KAAK,cAAc,EAAE,MAAM,cAAc,CAAC;AAEhF;;;;;;;GAOG;AACH,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,cAAc,CAAC;IACvB,MAAM,EAAE,cAAc,CAAC;IACvB,MAAM,EAAE,cAAc,CAAC;IACvB,MAAM,CAAC,EAAE,cAAc,CAAC;IACxB,MAAM,CAAC,EAAE,cAAc,CAAC;IACxB,MAAM,CAAC,EAAE,cAAc,CAAC;IACxB,+DAA+D;IAC/D,MAAM,EAAE,OAAO,CAAC;IAChB,MAAM,CAAC,EAAE,cAAc,CAAC;IACxB,2EAA2E;IAC3E,YAAY,EAAE,OAAO,CAAC;IACtB,MAAM,CAAC,EAAE,cAAc,CAAC;IACxB,6EAA6E;IAC7E,iBAAiB,EAAE,OAAO,CAAC;CAC5B;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,cAAc,EAAE,GAAG,YAAY,CAwC3E;AAED,+EAA+E;AAC/E,MAAM,WAAW,gBAAgB;IAC/B,4CAA4C;IAC5C,UAAU,EAAE,MAAM,CAAC;IACnB,+DAA+D;IAC/D,YAAY,EAAE,MAAM,CAAC;CACtB;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,GAAG,gBAAgB,CAKjF;AAED,8CAA8C;AAC9C,MAAM,WAAW,aAAa;IAC5B,mEAAmE;IACnE,UAAU,EAAE,MAAM,CAAC;IACnB,yEAAyE;IACzE,YAAY,EAAE,MAAM,CAAC;IACrB,yEAAyE;IACzE,IAAI,EAAE,MAAM,CAAC;IACb,mDAAmD;IACnD,SAAS,CAAC,EAAE,YAAY,CAAC;IACzB,sDAAsD;IACtD,MAAM,CAAC,EAAE,YAAY,CAAC;IACtB,wDAAwD;IACxD,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,uDAAuD;IACvD,eAAe,CAAC,EAAE,UAAU,CAAC;CAC9B;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,eAAe,CAC7B,OAAO,EAAE,UAAU,EACnB,IAAI,EAAE,QAAQ,EACd,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,YAAY,EACpB,SAAS,EAAE,cAAc,EAAE,EAC3B,UAAU,EAAE,MAAM,GACjB,aAAa,CAmGf;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,WAAW,GAAG,iBAAiB,CA4CxF;AAuRD,wBAAgB,WAAW,CAAC,SAAS,EAAE,YAAY,GAAG,cAAc,CAsBnE"}
|
|
@@ -3,23 +3,14 @@
|
|
|
3
3
|
* file, You can obtain one at https://mozilla.org/MPL/2.0/. */
|
|
4
4
|
import { findField } from './e57-xml.js';
|
|
5
5
|
/**
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
* section header) — `decodeE57` does this conversion via
|
|
10
|
-
* `resolveCompressedVectorDataOffset`. Callers passing the raw XML
|
|
11
|
-
* offset directly will see a "bytestreamCount ≠ prototype length"
|
|
12
|
-
* mismatch.
|
|
13
|
-
*
|
|
14
|
-
* Supports Float (single/double), ScaledInteger (bit-packed integer
|
|
15
|
-
* with scale/offset), and Integer for cartesianX/Y/Z + colorRed/
|
|
16
|
-
* Green/Blue + intensity. Other prototype fields are honoured for
|
|
17
|
-
* stride math but discarded.
|
|
6
|
+
* Validate + resolve a scan's prototype into a `ScanFieldSet`. Throws on
|
|
7
|
+
* a missing or plain-Integer cartesian axis (only Float / ScaledInteger
|
|
8
|
+
* cartesian is supported — see the inline note below).
|
|
18
9
|
*/
|
|
19
|
-
export function
|
|
20
|
-
const xField = findField(
|
|
21
|
-
const yField = findField(
|
|
22
|
-
const zField = findField(
|
|
10
|
+
export function resolveScanFields(prototype) {
|
|
11
|
+
const xField = findField(prototype, 'cartesianX');
|
|
12
|
+
const yField = findField(prototype, 'cartesianY');
|
|
13
|
+
const zField = findField(prototype, 'cartesianZ');
|
|
23
14
|
if (!xField || !yField || !zField) {
|
|
24
15
|
throw new Error('E57: prototype missing cartesianX/Y/Z');
|
|
25
16
|
}
|
|
@@ -32,11 +23,11 @@ export function decodeE57Scan(logical, entry) {
|
|
|
32
23
|
throw new Error(`E57: cartesian${f.name.slice(-1)} encoded as plain Integer (only Float / ScaledInteger supported)`);
|
|
33
24
|
}
|
|
34
25
|
}
|
|
35
|
-
const rField = findField(
|
|
36
|
-
const gField = findField(
|
|
37
|
-
const bField = findField(
|
|
26
|
+
const rField = findField(prototype, 'colorRed');
|
|
27
|
+
const gField = findField(prototype, 'colorGreen');
|
|
28
|
+
const bField = findField(prototype, 'colorBlue');
|
|
38
29
|
const hasRgb = !!(rField && gField && bField);
|
|
39
|
-
const iField = findField(
|
|
30
|
+
const iField = findField(prototype, 'intensity');
|
|
40
31
|
// Classification: not in the standard ASTM E2807 prototype, but
|
|
41
32
|
// some exporters (CloudCompare, custom LIDAR pipelines) add a
|
|
42
33
|
// `classification` Integer / ScaledInteger field. We honour it
|
|
@@ -44,22 +35,159 @@ export function decodeE57Scan(logical, entry) {
|
|
|
44
35
|
// works on those files. Stock Faro / Leica scans don't carry it
|
|
45
36
|
// — that's why classification mode shows everything as class 0
|
|
46
37
|
// (the spec maps that to "Created, never classified").
|
|
47
|
-
const cField = findField(
|
|
38
|
+
const cField = findField(prototype, 'classification');
|
|
39
|
+
return {
|
|
40
|
+
xField, yField, zField,
|
|
41
|
+
rField, gField, bField, hasRgb,
|
|
42
|
+
// Any supported intensity kind (Float / Integer / ScaledInteger).
|
|
43
|
+
iField,
|
|
44
|
+
hasIntensity: !!iField && (iField.kind === 'Float' || iField.kind === 'Integer' || iField.kind === 'ScaledInteger'),
|
|
45
|
+
cField,
|
|
46
|
+
hasClassification: !!cField && (cField.kind === 'Integer' || cField.kind === 'ScaledInteger'),
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Read a DataPacket's 4-byte header without decoding its payload. The
|
|
51
|
+
* streaming reader uses this to learn a packet's length up front so it
|
|
52
|
+
* can decide whether the packet fits in the current window before
|
|
53
|
+
* committing to decode it.
|
|
54
|
+
*
|
|
55
|
+
* Packet header (4 bytes):
|
|
56
|
+
* byte 0: packetType (1=data, 2=index, 3=empty)
|
|
57
|
+
* byte 1: packetFlags (bit 0 = compressorRestart)
|
|
58
|
+
* bytes 2-3: packetLogicalLength - 1 (LE u16; total packet bytes minus 1)
|
|
59
|
+
*/
|
|
60
|
+
export function peekPacketHeader(view, offset) {
|
|
61
|
+
return {
|
|
62
|
+
packetType: view.getUint8(offset),
|
|
63
|
+
packetLength: view.getUint16(offset + 2, true) + 1,
|
|
64
|
+
};
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Decode ONE DataPacket at `offset` in the logical-byte view `logical`.
|
|
68
|
+
*
|
|
69
|
+
* Non-data packets (index/empty) return `{ packetType, packetLength,
|
|
70
|
+
* take: 0 }` so the caller can skip them by `packetLength`. Data packets
|
|
71
|
+
* decode up to `maxRecords` consecutive records into freshly-allocated,
|
|
72
|
+
* tightly-sized channel buffers — the caller owns striding, pose, and
|
|
73
|
+
* concatenation.
|
|
74
|
+
*
|
|
75
|
+
* Callers must ensure `offset + 4 <= logical.length` (header readable)
|
|
76
|
+
* before calling; this function then bounds-checks the full packet
|
|
77
|
+
* against `logical.length` for data packets.
|
|
78
|
+
*/
|
|
79
|
+
export function decodeE57Packet(logical, view, offset, fields, prototype, maxRecords) {
|
|
80
|
+
const packetType = view.getUint8(offset);
|
|
81
|
+
const packetLength = view.getUint16(offset + 2, true) + 1;
|
|
82
|
+
if (packetType !== 1) {
|
|
83
|
+
// Skip non-data packets (index/empty); they may appear interleaved.
|
|
84
|
+
return { packetType, packetLength, take: 0 };
|
|
85
|
+
}
|
|
86
|
+
const packetEnd = offset + packetLength;
|
|
87
|
+
if (packetEnd > logical.length) {
|
|
88
|
+
throw new Error('E57: DataPacket runs past end of logical bytes');
|
|
89
|
+
}
|
|
90
|
+
// Data packet header beyond the common 4 bytes:
|
|
91
|
+
// byte 4..5: bytestreamCount (u16 LE)
|
|
92
|
+
// then `bytestreamCount` × u16 LE = bytestreamByteCount[]
|
|
93
|
+
// then payload (concatenated bytestreams, in prototype order)
|
|
94
|
+
//
|
|
95
|
+
// CRCs in E57 live at the PAGE level (4 bytes per 1024-byte
|
|
96
|
+
// physical page, stripped by `stripPageCrc` before we get here).
|
|
97
|
+
// There is no per-packet trailing CRC — the bytestreams fill the
|
|
98
|
+
// packet exactly up to `packetEnd`. An earlier version of this
|
|
99
|
+
// code subtracted 4 bytes assuming a packet-level CRC, which
|
|
100
|
+
// false-positived the bounds checks below on real-world Faro /
|
|
101
|
+
// Trimble exports whose last bytestream ends within the final
|
|
102
|
+
// 4 bytes of the packet.
|
|
103
|
+
const payloadEnd = packetEnd;
|
|
104
|
+
if (offset + 6 > payloadEnd) {
|
|
105
|
+
throw new Error('E57: truncated DataPacket header');
|
|
106
|
+
}
|
|
107
|
+
const bytestreamCount = view.getUint16(offset + 4, true);
|
|
108
|
+
if (bytestreamCount !== prototype.length) {
|
|
109
|
+
throw new Error(`E57: packet bytestreamCount (${bytestreamCount}) ≠ prototype length (${prototype.length})`);
|
|
110
|
+
}
|
|
111
|
+
const bytestreamLengths = [];
|
|
112
|
+
let cursor = offset + 6;
|
|
113
|
+
for (let i = 0; i < bytestreamCount; i++) {
|
|
114
|
+
if (cursor + 2 > payloadEnd) {
|
|
115
|
+
throw new Error('E57: truncated bytestream length table');
|
|
116
|
+
}
|
|
117
|
+
bytestreamLengths.push(view.getUint16(cursor, true));
|
|
118
|
+
cursor += 2;
|
|
119
|
+
}
|
|
120
|
+
const fieldOffsets = new Map();
|
|
121
|
+
let streamCursor = cursor;
|
|
122
|
+
for (let i = 0; i < bytestreamCount; i++) {
|
|
123
|
+
// Each bytestream must fit inside the packet payload — a corrupt
|
|
124
|
+
// file could otherwise have us read into the next packet or
|
|
125
|
+
// even past `logical`.
|
|
126
|
+
if (streamCursor + bytestreamLengths[i] > payloadEnd) {
|
|
127
|
+
throw new Error(`E57: bytestream ${prototype[i].name} (${bytestreamLengths[i]} bytes) `
|
|
128
|
+
+ `runs past packet payload at offset ${streamCursor}`);
|
|
129
|
+
}
|
|
130
|
+
fieldOffsets.set(prototype[i].name, { start: streamCursor, length: bytestreamLengths[i] });
|
|
131
|
+
streamCursor += bytestreamLengths[i];
|
|
132
|
+
}
|
|
133
|
+
// Per-axis packet capacity varies by field kind: Float uses
|
|
134
|
+
// floor(length / byteSize), ScaledInteger uses floor(length * 8 /
|
|
135
|
+
// bitsPerRecord). Take the min so a mixed-encoding packet picks
|
|
136
|
+
// the shortest stream.
|
|
137
|
+
const { xField, yField, zField } = fields;
|
|
138
|
+
const xPos = fieldOffsets.get('cartesianX');
|
|
139
|
+
const yPos = fieldOffsets.get('cartesianY');
|
|
140
|
+
const zPos = fieldOffsets.get('cartesianZ');
|
|
141
|
+
const xCapacity = floatOrSiPointCapacity(xField, xPos.length);
|
|
142
|
+
const yCapacity = floatOrSiPointCapacity(yField, yPos.length);
|
|
143
|
+
const zCapacity = floatOrSiPointCapacity(zField, zPos.length);
|
|
144
|
+
const pointsInPacket = Math.min(xCapacity, yCapacity, zCapacity);
|
|
145
|
+
const take = Math.min(pointsInPacket, Math.max(0, maxRecords));
|
|
146
|
+
const positions = new Float32Array(take * 3);
|
|
147
|
+
const colors = fields.hasRgb ? new Float32Array(take * 3) : undefined;
|
|
148
|
+
const intensities = fields.hasIntensity ? new Uint16Array(take) : undefined;
|
|
149
|
+
const classifications = fields.hasClassification ? new Uint8Array(take) : undefined;
|
|
150
|
+
readCartesianStream(logical, view, xField, xPos.start, positions, 0, take, 0);
|
|
151
|
+
readCartesianStream(logical, view, yField, yPos.start, positions, 0, take, 1);
|
|
152
|
+
readCartesianStream(logical, view, zField, zPos.start, positions, 0, take, 2);
|
|
153
|
+
if (colors && fields.rField && fields.gField && fields.bField) {
|
|
154
|
+
writeColorChannel(view, fieldOffsets.get('colorRed').start, fields.rField, colors, 0, take, 0, logical);
|
|
155
|
+
writeColorChannel(view, fieldOffsets.get('colorGreen').start, fields.gField, colors, 0, take, 1, logical);
|
|
156
|
+
writeColorChannel(view, fieldOffsets.get('colorBlue').start, fields.bField, colors, 0, take, 2, logical);
|
|
157
|
+
}
|
|
158
|
+
if (intensities && fields.iField) {
|
|
159
|
+
readIntensityStream(logical, view, fields.iField, fieldOffsets.get('intensity').start, intensities, 0, take);
|
|
160
|
+
}
|
|
161
|
+
if (classifications && fields.cField) {
|
|
162
|
+
readClassificationStream(logical, view, fields.cField, fieldOffsets.get('classification').start, classifications, 0, take);
|
|
163
|
+
}
|
|
164
|
+
return { packetType, packetLength, take, positions, colors, intensities, classifications };
|
|
165
|
+
}
|
|
166
|
+
/**
|
|
167
|
+
* Decode the binary section starting at `entry.binaryFileOffset` in the
|
|
168
|
+
* logical-bytes view. NOTE: `binaryFileOffset` here must already point
|
|
169
|
+
* at the first DataPacket (i.e. AFTER the 32-byte CompressedVector
|
|
170
|
+
* section header) — `decodeE57` does this conversion via
|
|
171
|
+
* `resolveCompressedVectorDataOffset`. Callers passing the raw XML
|
|
172
|
+
* offset directly will see a "bytestreamCount ≠ prototype length"
|
|
173
|
+
* mismatch.
|
|
174
|
+
*
|
|
175
|
+
* Supports Float (single/double), ScaledInteger (bit-packed integer
|
|
176
|
+
* with scale/offset), and Integer for cartesianX/Y/Z + colorRed/
|
|
177
|
+
* Green/Blue + intensity. Other prototype fields are honoured for
|
|
178
|
+
* stride math but discarded.
|
|
179
|
+
*
|
|
180
|
+
* Whole-file path: holds the entire scan in memory. The streaming
|
|
181
|
+
* `E57StreamingSource` shares the per-packet primitives above but reads
|
|
182
|
+
* the binary section incrementally so multi-GB files don't allocate the
|
|
183
|
+
* whole file at once.
|
|
184
|
+
*/
|
|
185
|
+
export function decodeE57Scan(logical, entry) {
|
|
186
|
+
const fields = resolveScanFields(entry.prototype);
|
|
48
187
|
const positions = new Float32Array(entry.recordCount * 3);
|
|
49
|
-
const colors = hasRgb ? new Float32Array(entry.recordCount * 3) : undefined;
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
const intensities = iField && (iField.kind === 'Float' || iField.kind === 'Integer' || iField.kind === 'ScaledInteger')
|
|
53
|
-
? new Uint16Array(entry.recordCount)
|
|
54
|
-
: undefined;
|
|
55
|
-
const classifications = cField && (cField.kind === 'Integer' || cField.kind === 'ScaledInteger')
|
|
56
|
-
? new Uint8Array(entry.recordCount)
|
|
57
|
-
: undefined;
|
|
58
|
-
// Walk DataPackets starting at binaryFileOffset.
|
|
59
|
-
// Packet header (4 bytes):
|
|
60
|
-
// byte 0: packetType (1=data, 2=index, 3=empty)
|
|
61
|
-
// byte 1: packetFlags (bit 0 = compressorRestart)
|
|
62
|
-
// bytes 2..3: packetLogicalLength - 1 (LE u16; total packet bytes minus 1)
|
|
188
|
+
const colors = fields.hasRgb ? new Float32Array(entry.recordCount * 3) : undefined;
|
|
189
|
+
const intensities = fields.hasIntensity ? new Uint16Array(entry.recordCount) : undefined;
|
|
190
|
+
const classifications = fields.hasClassification ? new Uint8Array(entry.recordCount) : undefined;
|
|
63
191
|
let offset = entry.binaryFileOffset;
|
|
64
192
|
const view = new DataView(logical.buffer, logical.byteOffset, logical.byteLength);
|
|
65
193
|
let written = 0;
|
|
@@ -67,88 +195,22 @@ export function decodeE57Scan(logical, entry) {
|
|
|
67
195
|
if (offset + 4 > logical.length) {
|
|
68
196
|
throw new Error('E57: truncated DataPacket header');
|
|
69
197
|
}
|
|
70
|
-
const
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
// Skip non-data packets (index/empty); they may appear interleaved.
|
|
74
|
-
offset += packetLogicalLength;
|
|
198
|
+
const packet = decodeE57Packet(logical, view, offset, fields, entry.prototype, entry.recordCount - written);
|
|
199
|
+
if (packet.packetType !== 1) {
|
|
200
|
+
offset += packet.packetLength;
|
|
75
201
|
continue;
|
|
76
202
|
}
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
// CRCs in E57 live at the PAGE level (4 bytes per 1024-byte
|
|
87
|
-
// physical page, stripped by `stripPageCrc` before we get here).
|
|
88
|
-
// There is no per-packet trailing CRC — the bytestreams fill the
|
|
89
|
-
// packet exactly up to `packetEnd`. An earlier version of this
|
|
90
|
-
// code subtracted 4 bytes assuming a packet-level CRC, which
|
|
91
|
-
// false-positived the bounds checks below on real-world Faro /
|
|
92
|
-
// Trimble exports whose last bytestream ends within the final
|
|
93
|
-
// 4 bytes of the packet.
|
|
94
|
-
const payloadEnd = packetEnd;
|
|
95
|
-
if (offset + 6 > payloadEnd) {
|
|
96
|
-
throw new Error('E57: truncated DataPacket header');
|
|
97
|
-
}
|
|
98
|
-
const bytestreamCount = view.getUint16(offset + 4, true);
|
|
99
|
-
if (bytestreamCount !== entry.prototype.length) {
|
|
100
|
-
throw new Error(`E57: packet bytestreamCount (${bytestreamCount}) ≠ prototype length (${entry.prototype.length})`);
|
|
101
|
-
}
|
|
102
|
-
const bytestreamLengths = [];
|
|
103
|
-
let cursor = offset + 6;
|
|
104
|
-
for (let i = 0; i < bytestreamCount; i++) {
|
|
105
|
-
if (cursor + 2 > payloadEnd) {
|
|
106
|
-
throw new Error('E57: truncated bytestream length table');
|
|
107
|
-
}
|
|
108
|
-
bytestreamLengths.push(view.getUint16(cursor, true));
|
|
109
|
-
cursor += 2;
|
|
110
|
-
}
|
|
111
|
-
const fieldOffsets = new Map();
|
|
112
|
-
let streamCursor = cursor;
|
|
113
|
-
for (let i = 0; i < bytestreamCount; i++) {
|
|
114
|
-
// Each bytestream must fit inside the packet payload — a corrupt
|
|
115
|
-
// file could otherwise have us read into the next packet or
|
|
116
|
-
// even past `logical`.
|
|
117
|
-
if (streamCursor + bytestreamLengths[i] > payloadEnd) {
|
|
118
|
-
throw new Error(`E57: bytestream ${entry.prototype[i].name} (${bytestreamLengths[i]} bytes) `
|
|
119
|
-
+ `runs past packet payload at offset ${streamCursor}`);
|
|
120
|
-
}
|
|
121
|
-
fieldOffsets.set(entry.prototype[i].name, { start: streamCursor, length: bytestreamLengths[i] });
|
|
122
|
-
streamCursor += bytestreamLengths[i];
|
|
123
|
-
}
|
|
124
|
-
// Per-axis packet capacity now varies by field kind: Float uses
|
|
125
|
-
// floor(length / byteSize), ScaledInteger uses floor(length * 8 /
|
|
126
|
-
// bitsPerRecord). Take the min so a mixed-encoding packet picks
|
|
127
|
-
// the shortest stream.
|
|
128
|
-
const xPos = fieldOffsets.get('cartesianX');
|
|
129
|
-
const yPos = fieldOffsets.get('cartesianY');
|
|
130
|
-
const zPos = fieldOffsets.get('cartesianZ');
|
|
131
|
-
const xCapacity = floatOrSiPointCapacity(xField, xPos.length);
|
|
132
|
-
const yCapacity = floatOrSiPointCapacity(yField, yPos.length);
|
|
133
|
-
const zCapacity = floatOrSiPointCapacity(zField, zPos.length);
|
|
134
|
-
const pointsInPacket = Math.min(xCapacity, yCapacity, zCapacity);
|
|
135
|
-
const take = Math.min(pointsInPacket, entry.recordCount - written);
|
|
136
|
-
readCartesianStream(logical, view, xField, xPos.start, positions, written, take, 0);
|
|
137
|
-
readCartesianStream(logical, view, yField, yPos.start, positions, written, take, 1);
|
|
138
|
-
readCartesianStream(logical, view, zField, zPos.start, positions, written, take, 2);
|
|
139
|
-
if (colors && rField && gField && bField) {
|
|
140
|
-
writeColorChannel(view, fieldOffsets.get('colorRed').start, rField, colors, written, take, 0, logical);
|
|
141
|
-
writeColorChannel(view, fieldOffsets.get('colorGreen').start, gField, colors, written, take, 1, logical);
|
|
142
|
-
writeColorChannel(view, fieldOffsets.get('colorBlue').start, bField, colors, written, take, 2, logical);
|
|
143
|
-
}
|
|
144
|
-
if (intensities && iField) {
|
|
145
|
-
readIntensityStream(logical, view, iField, fieldOffsets.get('intensity').start, intensities, written, take);
|
|
146
|
-
}
|
|
147
|
-
if (classifications && cField) {
|
|
148
|
-
readClassificationStream(logical, view, cField, fieldOffsets.get('classification').start, classifications, written, take);
|
|
203
|
+
if (packet.take > 0 && packet.positions) {
|
|
204
|
+
positions.set(packet.positions, written * 3);
|
|
205
|
+
if (colors && packet.colors)
|
|
206
|
+
colors.set(packet.colors, written * 3);
|
|
207
|
+
if (intensities && packet.intensities)
|
|
208
|
+
intensities.set(packet.intensities, written);
|
|
209
|
+
if (classifications && packet.classifications)
|
|
210
|
+
classifications.set(packet.classifications, written);
|
|
211
|
+
written += packet.take;
|
|
149
212
|
}
|
|
150
|
-
|
|
151
|
-
offset = packetEnd;
|
|
213
|
+
offset += packet.packetLength;
|
|
152
214
|
}
|
|
153
215
|
if (written < entry.recordCount) {
|
|
154
216
|
// Real-world files sometimes report counts a few records higher
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"e57-decode.js","sourceRoot":"","sources":["../../src/formats/e57-decode.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"e57-decode.js","sourceRoot":"","sources":["../../src/formats/e57-decode.ts"],"names":[],"mappings":"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"}
|
|
@@ -19,6 +19,13 @@ export declare function parseE57FileHeader(bytes: Uint8Array): E57FileHeader;
|
|
|
19
19
|
export declare function stripPageCrc(bytes: Uint8Array, pageSize: number): Uint8Array;
|
|
20
20
|
/** Convert a physical (CRC-paged) offset to the equivalent logical offset. */
|
|
21
21
|
export declare function physicalToLogical(physical: number, pageSize: number): number;
|
|
22
|
+
/**
|
|
23
|
+
* Convert a logical (CRC-stripped) offset back to its physical (on-disk)
|
|
24
|
+
* offset — the inverse of `physicalToLogical`. Needed by the streaming
|
|
25
|
+
* reader to translate XML / section offsets into the byte ranges it must
|
|
26
|
+
* `Blob.slice()` from disk.
|
|
27
|
+
*/
|
|
28
|
+
export declare function logicalToPhysical(logical: number, pageSize: number): number;
|
|
22
29
|
/**
|
|
23
30
|
* Read a CompressedVector binary-section header (E57 spec §6.4.2) and
|
|
24
31
|
* return the LOGICAL byte offset where its DataPackets actually start.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"e57-page.d.ts","sourceRoot":"","sources":["../../src/formats/e57-page.ts"],"names":[],"mappings":"AAgBA,MAAM,WAAW,aAAa;IAC5B,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,eAAe,EAAE,MAAM,CAAC;IACxB,gBAAgB,EAAE,MAAM,CAAC;IACzB,gBAAgB,EAAE,MAAM,CAAC;IACzB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,wDAAwD;AACxD,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,UAAU,GAAG,aAAa,CAiBnE;AAED;;;;;;;GAOG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,GAAG,UAAU,CAoB5E;AAED,8EAA8E;AAC9E,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAK5E;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,iCAAiC,CAC/C,OAAO,EAAE,UAAU,EACnB,qBAAqB,EAAE,MAAM,EAC7B,QAAQ,EAAE,MAAM,GACf,MAAM,CAgBR;AAED,wBAAgB,SAAS,CAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAIhE"}
|
|
1
|
+
{"version":3,"file":"e57-page.d.ts","sourceRoot":"","sources":["../../src/formats/e57-page.ts"],"names":[],"mappings":"AAgBA,MAAM,WAAW,aAAa;IAC5B,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,eAAe,EAAE,MAAM,CAAC;IACxB,gBAAgB,EAAE,MAAM,CAAC;IACzB,gBAAgB,EAAE,MAAM,CAAC;IACzB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,wDAAwD;AACxD,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,UAAU,GAAG,aAAa,CAiBnE;AAED;;;;;;;GAOG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,GAAG,UAAU,CAoB5E;AAED,8EAA8E;AAC9E,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAK5E;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAK3E;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,iCAAiC,CAC/C,OAAO,EAAE,UAAU,EACnB,qBAAqB,EAAE,MAAM,EAC7B,QAAQ,EAAE,MAAM,GACf,MAAM,CAgBR;AAED,wBAAgB,SAAS,CAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAIhE"}
|
package/dist/formats/e57-page.js
CHANGED
|
@@ -68,6 +68,18 @@ export function physicalToLogical(physical, pageSize) {
|
|
|
68
68
|
const within = physical - pages * pageSize;
|
|
69
69
|
return pages * payloadPerPage + within;
|
|
70
70
|
}
|
|
71
|
+
/**
|
|
72
|
+
* Convert a logical (CRC-stripped) offset back to its physical (on-disk)
|
|
73
|
+
* offset — the inverse of `physicalToLogical`. Needed by the streaming
|
|
74
|
+
* reader to translate XML / section offsets into the byte ranges it must
|
|
75
|
+
* `Blob.slice()` from disk.
|
|
76
|
+
*/
|
|
77
|
+
export function logicalToPhysical(logical, pageSize) {
|
|
78
|
+
const payloadPerPage = pageSize - 4;
|
|
79
|
+
const pages = Math.floor(logical / payloadPerPage);
|
|
80
|
+
const within = logical - pages * payloadPerPage;
|
|
81
|
+
return pages * pageSize + within;
|
|
82
|
+
}
|
|
71
83
|
/**
|
|
72
84
|
* Read a CompressedVector binary-section header (E57 spec §6.4.2) and
|
|
73
85
|
* return the LOGICAL byte offset where its DataPackets actually start.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"e57-page.js","sourceRoot":"","sources":["../../src/formats/e57-page.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"e57-page.js","sourceRoot":"","sources":["../../src/formats/e57-page.ts"],"names":[],"mappings":"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"}
|