You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
* update tool to v1.1 - collection support
* fix linting issue
* fix min to count - issue (9 instead of 1)
* Update tools/3dtrees_py3dtiles/py3dtiles.xml
Co-authored-by: Björn Grüning <bjoern@gruenings.eu>
* update to support multiple = true instead of collections
---------
Co-authored-by: Björn Grüning <bjoern@gruenings.eu>
<paramname="input"type="data"format="laz"label="Point Cloud Dataset"help="LAS/LAZ point cloud file to convert to 3D Tiles"/>
29
-
<paramname="extra_fields"type="text"optional="true"label="Extra Fields"help="Comma-separated list of extra fields to include in tiles (e.g., 'PredInstance' for segmentation visualization). Leave empty to include only standard fields."/>
30
-
<paramname="srs_out"type="text"value="4978"label="Output CRS (EPSG code)"help="Output coordinate reference system. Default is 4978 (ECEF) for proper Cesium visualization. Leave empty to preserve original CRS."/>
31
-
<paramname="overwrite"type="boolean"truevalue="true"falsevalue="false"checked="false"label="Overwrite existing output"help="Clear output directory before conversion if it already contains files"/>
33
+
<paramname="input"type="data"format="laz"multiple="true"label="Point Cloud Collection"help="Collection of LAZ/LAS files to merge and convert to 3D Tiles"/>
34
+
<paramname="extra_fields"type="text"optional="true"label="Extra Fields"help="Comma-separated list of extra fields to include in tiles (e.g., 'PredInstance' for segmentation visualization). Leave empty to include only standard fields."/>
35
+
<paramname="srs_out"type="text"value="4978"label="Output CRS (EPSG code)"help="Output coordinate reference system. Default is 4978 (ECEF) for proper Cesium visualization. Leave empty to preserve original CRS." />
36
+
<paramname="overwrite"type="boolean"truevalue="true"falsevalue="false"checked="false"label="Overwrite existing output"help="Clear output directory before conversion if it already contains files"/>
This tool converts LAS/LAZ point cloud files to Cesium 3D Tiles format using py3dtiles. Unlike other tiling tools (e.g., gocesiumtiler), py3dtiles supports custom attributes, which is essential for visualizing segmentation results and other point cloud classifications.
65
+
This tool converts a collection of LAS/LAZ point cloud files to a single Cesium 3D Tiles tileset using py3dtiles.
67
66
68
-
The tool automatically:
67
+
**Key features:**
69
68
70
-
1. Detects the coordinate reference system (CRS) from the input file
71
-
2. Transforms coordinates to ECEF (EPSG:4978) for proper Cesium visualization if CRS is available
72
-
3. Preserves custom attributes like segmentation IDs when specified
73
-
4. Generates an optimized octree structure for efficient web visualization
74
-
5. Post-processes tileset structure to fix potential URI path issues
69
+
1. **Memory-efficient merging**: Uses streaming to merge multiple files with constant memory (~50MB) regardless of total dataset size
70
+
2. **Custom attributes**: Supports extra point attributes like PredInstance for segmentation visualization
71
+
3. **Automatic CRS transformation**: Transforms to ECEF (EPSG:4978) for proper Cesium visualization
72
+
4. **Out-of-core processing**: py3dtiles handles large merged files efficiently
75
73
76
74
-----
77
75
78
76
**Input**
79
77
80
-
- **Point Cloud Dataset**: LAS or LAZ format point cloud file
78
+
- **Point Cloud Collection**: Collection of LAZ/LAS files (e.g., segmented outputs from the merge step)
81
79
- **Extra Fields**: Optional comma-separated list of extra point attributes to include (e.g., "PredInstance" for instance segmentation)
82
80
- **Output CRS**: EPSG code for output coordinates (default: 4978 for ECEF). Leave empty to keep original coordinates.
83
81
- **Overwrite**: Clear output directory before conversion
@@ -86,44 +84,24 @@ The tool automatically:
86
84
87
85
**Output**
88
86
89
-
- **3D Tileset Metadata**: The main tileset.json file that describes the tile structure
90
-
- **3D Tile Files**: Collection of binary tile files (.pnts format) containing the point cloud data
87
+
- **tileset.json**: The main tileset metadata file
88
+
- **preview.pnts**: Preview tile for quick loading
89
+
- **points collection**: All tile files (.pnts format) containing the point cloud data
91
90
92
91
The output can be directly hosted on a web server and visualized using CesiumJS.
93
92
94
93
-----
95
94
96
-
**Use Cases**
95
+
**Workflow Integration**
97
96
98
-
1. **Standard Visualization**: Convert standardized point clouds to 3D Tiles for web-based viewing
99
-
2. **Segmentation Visualization**: Include custom attributes like "PredInstance" to visualize tree segmentation results
100
-
3. **Custom Attributes**: Preserve any extra point attributes (e.g., quality scores, classifications) for specialized visualization
101
-
102
-
-----
103
-
104
-
**Technical Details**
105
-
106
-
- **Coordinate Transformation**: Files with CRS metadata are automatically transformed to ECEF (EPSG:4978) for proper Cesium camera controls
107
-
- **Files without CRS**: Coordinates are preserved as-is, assuming they're already in a suitable local/relative system
108
-
- **Custom Attributes**: Full support for extra dimensional attributes via py3dtiles
109
-
- **Format**: Generates Cesium 3D Tiles v1.0 with PNTS (Point Cloud) tiles
110
-
111
-
-----
112
-
113
-
**Comparison with gocesiumtiler**
114
-
115
-
While gocesiumtiler is faster, py3dtiles is chosen for this workflow because:
116
-
117
-
- Supports custom point attributes (essential for segmentation visualization)
118
-
- Includes bug fixes for specific use cases
119
-
- Better handling of coordinate transformations with pyproj
97
+
In the EndToEndPipeline workflow, this tool receives the segmented LAZ collection from the merge step and produces a single unified 3D Tiles tileset for the entire dataset.
120
98
121
99
</help>
122
100
<creator>
123
101
<organizationname="3Dtrees-Team, University of Freiburg"url="https://github.com/3dTrees-earth"/>
124
102
</creator>
125
103
<citations>
126
-
<citationtype="bibtex">@misc{py3dtiles title = {Py3DTiles: Python library for 3D Tiles}, author = {py3dtiles Contributors}, year = {2024}, url = {https://gitlab.com/py3dtiles/py3dtiles}}</citation>
104
+
<citationtype="bibtex">@misc{py3dtiles, title = {Py3DTiles: Python library for 3D Tiles}, author = {py3dtiles Contributors}, year = {2024}, url = {https://gitlab.com/py3dtiles/py3dtiles}}</citation>
127
105
<citationtype="bibtex">
128
106
@misc{3dtrees_py3dtiles, title = {3Dtrees: Py3DTiles}, author = {3Dtrees-Project}, year = {2025}}
0 commit comments