-
Notifications
You must be signed in to change notification settings - Fork 15
Binary File Format Structure
01 B5 E5 26 00 01 30 4C
2A 40 57 5B D9 3F 7D 3F
9D 3F 00 00 80 3F 00 00
80 3F 00 00 80 3F AA 82
69 40 DC 46 13 40 1E A7
C8 3F FC FB 7B 3F F8 F7
- byte version (0 or 1 for normal point cloud data, 0 is the original first version, use 1 for now)
- int32 totalPoints (total amount of points in this file
- bool containsRGB (true or false, if RGB data is included
- float x
- float y
- float z
- float R (optional)
- float G (optional)
- float B (optional)
- (repeat for all points)
75 63 70 63 02 01 61 e4
20 00 e3 53 b9 c0 78 b7
d2 bd 67 66 14 c1 4f 58
bd 40 7e 00 82 3e 38 be
03 41 a7 22 b6 c0 8d 62
13 d0 0e 3f 94 08 f1 e4
- string magic_string : 4 bytes : value = "ucpc"
- bool binary_version : 1 byte (should be set to 2)
- bool contains_rgb : 1 byte (should be set to true and must include color data)
- int pointcount : 4 bytes
- float bounds_min_x : 4 bytes
- float bounds_min_y : 4 bytes
- float bounds_min_z : 4 bytes
- float bounds_max_x : 4 bytes
- float bounds_max_y : 4 bytes
- float bounds_max_z : 4 bytes
- float x
- float y
- float z
- ... (rest of the XYZ values one by one)
- float R (optional)
- float G (optional)
- float B (optional)
- ... (rest of the RGB values one by one)
.pcroot is ascii, |-character separated index file, containing list of point cloud tiles
1|4|2155617|-28.617|-0.514445|-1.03455|29.9256|1.26955|86.51015|0.680891|90.6809|0|2
1 = version (int) (1 = original, 2 = packed v3 format)
4 = grid size (float)
2155617 = total point count (long)
-28.617 = cloud boundsMinX (float)
-0.514445 = cloud boundsMinY (float)
-1.03455 = cloud boundsMinZ (float)
29.9256 = cloud boundsMaxX (float)
1.26955 = cloud boundsMaxY (float)
86.51015 = cloud boundsMaxZ (float)
0.680891 = auto-offset X (float)
90.6809 = auto-offset Y (float)
0 = auto-offset Z (float)
2 = packMagic value (float) (optional, comes from commandline tools if use packMagic value. Its used for adjusting float packing to avoid errors in large tiles. Example: If your gridsize is 500, use 2 for packmagic)
sample3201.pct|13376|-3.999089|0.3418615|4.25345|3.999676|0.78206|7.97845|1|2|3
sample3201.pct = filename
13376 = tile point count
-3.999089 = tile boundsMinX
0.3418615 = tile boundsMinY
4.25345 = tile boundsMinZ
3.999676 = tile boundsMaxX
0.78206 = tile boundsMaxY
7.97845 = tile boundsMaxZ
1 = tile cell x index (only for packed colors, otherwise 0)
2 = tile cell y index (only for packed colors, otherwise 0)
3 = tile cell z index (only for packed colors, otherwise 0)
- float x
- float y
- float z
- ... (rest of the XYZ values one by one)
- float r
- float g
- float b
- ... (rest of the RGB values one by one)
- byte version (2 for brekel data)
- int32 numberOfFrames (how many frames of data)
- int32 frameRate (not used)
- bool containsRGB (true or false, if RGB data is included)
- int32[] pointsPerFrame (array of how many points for each frame)
- int64[] binaryPositionForEachFrame (array of indexes to each frame data position in file)
- float x
- float y
- float z
- float R (optional)
- float G (optional)
- float B (optional)
- (repeat for all points for each frame)
https://brekel.com/brekel-pointcloud-v3/ Format 3 supports file streaming.
- byte version (3 for new brekel data)
- int32 numberOfFrames (how many frames of data)
- int32 frameRate (not used)
- bool containsRGB (true or false, if RGB data is included)
- int32[] pointsPerFrame (array of how many points for each frame)
(frame n)
- float x
- float y
- float z
- (repeat for all points for this frame)
- float R (optional)
- float G (optional)
- float B (optional)
- (repeat for all colors for this frame)
(frame n+1)
- float x
- float y
- float z
- (repeat for all points for this frame)
- float R (optional)
- float G (optional)
- float B (optional)
- (repeat for all colors for this frame)
(repeat all frames)
- Free Hex Editor/Viewer : https://mh-nexus.de/en/hxd/
- Online Hex Editor/Viewer : https://hexed.it/